近年、Kubernetes と Istio は、クラウド ネイティブ アプリケーションへの移行において不可欠なツールとなっています。 Kubernetes は、ユーザーがコンテナ化されたアプリケーションを自動的にデプロイ、拡張、管理するのに役立つコンテナ オーケストレーション ツールです。一方、Istio は、ユーザーがマイクロサービス アーキテクチャをより適切に管理および監視できるようにするサービス メッシュです。この記事では、Beego フレームワークで Kubernetes と Istio を使用してサービス メッシュを実装する方法を紹介します。
まず、Beego アプリケーションを Kubernetes にデプロイする必要があります。便宜上、Minikube を使用してローカル Kubernetes クラスターを実行します。 Minikube と Kubernetes クライアントをインストールした後、次のコマンドを使用してクラスターを開始できます:
minikube start
次に、Beego アプリケーションをデプロイするための Kubernetes デプロイメントを作成する必要があります。次の YAML ファイルを使用してデプロイメントを定義できます:
apiVersion: apps/v1 kind: Deployment metadata: name: beego-app spec: replicas: 1 selector: matchLabels: app: beego-app template: metadata: labels: app: beego-app spec: containers: - name: beego-app image: my-beego-app-image ports: - containerPort: 8080
この YAML ファイルでは、Beego アプリケーションを実行するための「beego-app」というデプロイメントを定義します。これはコンテナー内で実行され、サービスを公開します。ポート8080。
次に、Kubernetes クラスターの外部から Beego アプリケーションにアクセスするための Kubernetes サービスを作成する必要があります。次の YAML ファイルを使用してサービスを定義できます:
apiVersion: v1 kind: Service metadata: name: beego-app-service spec: selector: app: beego-app ports: - name: http protocol: TCP port: 80 targetPort: 8080 type: NodePort
この YAML ファイルでは、Beego デプロイメントを指し、ポート 80 がコンテナ ポートにマップされる「beego-app-service」というサービスを定義します。 8080。さらに、サービス タイプを NodePort として指定しました。これは、Kubernetes がサービスにアクセスするためのノード IP とノード ポートを割り当てることを意味します。
これで、次のコマンドを使用してデプロイメントとサービスを作成できるようになります:
kubectl apply -f deployment.yaml kubectl apply -f service.yaml
これらの手順を完了すると、Beego アプリケーションは Kubernetes クラスターの外部からアクセスできるようになります。ただし、クラスター内でサービス検出と負荷分散を実装する必要もあります。
ここで Istio が活躍します。 Istio を使用すると、内部サービス間の通信と負荷分散を簡単に実装できます。 Kubernetes クラスターに Istio をインストールした後、次のコマンドを使用して Istio 自動インジェクションを有効にできます。
kubectl label namespace default istio-injection=enabled
次に、次の YAML ファイルを使用して、HTTP リクエストを Beego アプリケーションにルーティングする Istio 仮想サービスを定義できます。
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: beego-app-virtual-service spec: hosts: - "*" gateways: - istio-system/ingressgateway http: - match: - uri: prefix: / route: - destination: host: beego-app-service.default.svc.cluster.local port: number: 80
この YAML ファイルでは、以前に作成した「beego-app-service」サービスに HTTP リクエストをルーティングし、ポート 80 にマッピングする「beego-app-virtual-service」という仮想サービスを定義します。 。
仮想サービスを有効にすると、クラスター内から Beego アプリケーションにアクセスできるようになります。ただし、サービス メッシュをより適切に管理するために、Istio のモニタリングおよびトレース機能を使用することもできます。たとえば、次の YAML ファイルを使用して、すべての受信および送信トラフィックの追跡とメトリクスを有効にする Istio DestinationRule を定義できます。
apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata: name: beego-app-destination-rule spec: host: beego-app-service.default.svc.cluster.local trafficPolicy: tls: mode: ISTIO_MUTUAL portLevelSettings: - port: number: 80 tls: mode: ISTIO_MUTUAL connectionPool: http: http1MaxPendingRequests: 100 maxRequestsPerConnection: 5 tcp: maxConnections: 1000 outlierDetection: consecutiveErrors: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50
この YAML ファイルでは、「beego-app-」という Istio DestinationRule を定義します。 destination-rule" DestinationRule。Istio のトラフィック制御とエラー検出戦略を定義するために使用されます。
Kubernetes と Istio を使用してサービス メッシュを実装すると、マイクロサービス アーキテクチャの管理と監視が向上します。この投稿では、Beego フレームワーク内で Kubernetes と Istio を使用してアプリケーションをデプロイおよび管理する方法について説明しました。
以上がKubernetes と Istio を使用して Beego にサービス メッシュを実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。