Cloud Service Mesh での Ingress の有効化

このトピックでは、Ingress Gateway があらかじめインストールされている Cloud Service Mesh をインストールする方法について説明します。Cloud Service Mesh を使用すると、Ingress コントローラが必要な場合、Deployment に Kubernetes Ingress リソースを構成できます。このトピックでは、サンプル Deployment と Ingress リソースを構成する例を紹介します。

Cloud Service Mesh のインストールは、次の 2 つの部分から構成されています。

  1. Cloud Service Mesh 顧客管理のコントロール プレーンと Ingress Gateway の特定のバージョンをインストールする。
  2. Namespace にリビジョン ラベルを付けて、ワークロードを再デプロイしてサイドカー プロキシを挿入する。

Ingress コントローラを使用して Ingress オブジェクトのみを使用する必要がある場合、サイドカー プロキシをワークロード Pod に挿入する必要はありません。ただし、Cloud Service Mesh が提供するセキュリティ上のメリットを必要とし、トラフィック ルーティング機能を利用する場合は、サイドカー プロキシを挿入する必要があります。

始める前に

GKE on AWS の使用を始める前に、次のことを確認してください。

  • 管理サービスをインストールしている。
  • ユーザー クラスタを作成している。
  • Cloud コンソールを使用したクラスタへの接続の手順で Connect にクラスタを登録します。
  • Google Cloud で Workload Identity を使用するようにクラスタを構成します。
  • ユーザー クラスタでインターネットへのアウトバウンド アクセスが制限されている場合は、次のコンテナ リポジトリ ドメインへのアクセスを許可します。

    • docker.io
    • quay.io
  • anthos-aws ディレクトリから anthos-gke を使用して、コンテキストをユーザー クラスタに切り替えている。

    cd anthos-aws
    env HTTPS_PROXY=http://localhost:8118 \
      anthos-gke aws clusters get-credentials CLUSTER_NAME
    CLUSTER_NAME は、ユーザー クラスタ名に置き換えます。

Anthos Service Mesh のインストール

Cloud Service Mesh をインストールするの手順に沿って操作します。

サンプル Deployment の作成

このセクションでは、サンプル アプリケーションをインストールして、そのアプリケーションの Ingress エンドポイントを作成します。

  1. hello-app のデプロイメントとそのデプロイメントの ClusterIP を作成します。次の YAML を hello-app.yaml というファイルにコピーします。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: hello-app
      name: hello-app
    spec:
      selector:
        matchLabels:
          app: hello-app
      replicas: 3
      template:
        metadata:
          labels:
            app: hello-app
        spec:
          containers:
          - name: hello
            image: "gcr.io/google-samples/hello-app:2.0"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: hello-app
      name: hello-app
    spec:
      type: ClusterIP
      selector:
        app: hello-app
      ports:
      - protocol: TCP
        port: 8080
        targetPort: 8080
    
  2. kubectl apply で、クラスタに YAML を適用します。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f hello-app.yaml
    
  3. サンプル アプリケーションの Kubernetes Ingress を作成します。次の YAML を hello-app-ingress.yaml というファイルにコピーします。

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      annotations:
        kubernetes.io/ingress.class: istio
      labels:
        app: hello-app
      name: hello-app
    spec:
      rules:
      - host:
        http:
          paths:
          - backend:
              serviceName: hello-app
              servicePort: 8080
    
  4. kubectl apply で構成を適用し、Ingress を作成します。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f hello-app-ingress.yaml
    
  5. kubectl get svc でゲートウェイのステータスを確認します。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get ingress hello-app
    

    ADDRESS フィールドには ELB ドメイン名が必要です。ADDRESSpending のままになっている場合は、VPC とサブネットのラベル付けを確認します。

  6. ホストとポートを作成すると、Ingress ゲートウェイ URL を確認できます。ゲートウェイ URL を取得するには、次のコマンドを実行します。

    export INGRESS_URL=$(env HTTPS_PROXY=http://localhost:8118 \
    kubectl get ingress hello-app -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
    echo "Your hello-app Ingress URL is: http://"$INGRESS_URL
    

    最後のコマンドで、Ingress のエンドポイントが出力されます。

  7. 公開 Ingress を作成したら、curlhttp://$INGRESS_URL/ にアクセスすると、hello-app のデフォルトのウェブページが表示されます。

    curl $INGRESS_URL/
    

クリーンアップ

kubectl deletehello-app コンポーネントを削除します。

env HTTPS_PROXY=http://localhost:8118 \
  kubectl delete -f hello-app.yaml &&\
  kubectl delete -f hello-app-ingress.yaml

Cloud Service Mesh を削除するには、Cloud Service Mesh のアンインストールをご覧ください。

次のステップ

以下の詳細を確認する