ホームページ  >  記事  >  バックエンド開発  >  Kubernetes と Istio を使用して Beego にサービス メッシュを実装する

Kubernetes と Istio を使用して Beego にサービス メッシュを実装する

王林
王林オリジナル
2023-06-22 10:20:16708ブラウズ

近年、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。