このトピックでは、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
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 のアンインストールをご覧ください。
次のステップ
以下の詳細を確認する