このトピックでは、Ingress Gateway があらかじめインストールされている Cloud Service Mesh をインストールする方法について説明します。Cloud Service Mesh を使用すると、Ingress コントローラが必要な場合、Deployment に Kubernetes Ingress リソースを構成できます。このトピックでは、サンプル Deployment と Ingress リソースを構成する例を紹介します。
Cloud Service Mesh のインストールは、次の 2 つの部分から構成されています。
- Cloud Service Mesh 顧客管理のコントロール プレーンと Ingress Gateway の特定のバージョンをインストールする。
- 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 
Anthos Service Mesh のインストール
Cloud Service Mesh をインストールするの手順に沿って操作します。
サンプル Deployment の作成
このセクションでは、サンプル アプリケーションをインストールして、そのアプリケーションの Ingress エンドポイントを作成します。
- 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
- kubectl applyで、クラスタに YAML を適用します。- env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f hello-app.yaml
- サンプル アプリケーションの 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
- kubectl applyで構成を適用し、Ingress を作成します。- env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f hello-app-ingress.yaml
- kubectl get svcでゲートウェイのステータスを確認します。- env HTTPS_PROXY=http://localhost:8118 \ kubectl get ingress hello-app- ADDRESSフィールドには ELB ドメイン名が必要です。- ADDRESSが- pendingのままになっている場合は、VPC とサブネットのラベル付けを確認します。
- ホストとポートを作成すると、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 のエンドポイントが出力されます。 
- 公開 Ingress を作成したら、 - curlで- http://$INGRESS_URL/にアクセスすると、- hello-appのデフォルトのウェブページが表示されます。- curl $INGRESS_URL/
クリーンアップ
kubectl delete で hello-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 のアンインストールをご覧ください。
次のステップ
以下の詳細を確認する