Google Distributed Cloud の外部 IP アドレスを構成する
Google Distributed Cloud でのデフォルトの Cloud Service Mesh インストールでは、外部 IP アドレスが LoadBalancer
サービスに自動的に割り振られることを前提としています。これは Google Distributed Cloud には当てはまりません。このため、サービス メッシュ構成に応じて、1 つ以上の外部 IP アドレスを割り振る必要があります。
- Cloud Service Mesh Ingress Gateway リソースの 1 つの外部 IP アドレス。たとえば、お客様がインターネット経由でワークロードにアクセスするために使用するゲートウェイ。
- クラスタがサービス メッシュ内の異なるネットワークに存在する場合は、相互に通信するための別の外部 IP アドレス。これを east-west ゲートウェイと呼びます。
Ingress ゲートウェイ IP アドレスの構成
Ingress ゲートウェイの外部 IP アドレスを構成するには、Google Distributed Cloud の負荷分散モードに応じて、以下のいずれかのセクションの手順を行います。
- Ingress ゲートウェイの外部 IP アドレスを使用して
istio-ingressgateway
Service の構成にパッチを適用します。kubectl patch svc istio-ingressgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "INGRESS_GATEWAY_IP"}]'
-
シェルで
istio-ingressgateway
サービスの構成を表示します。 Cloud Service Mesh のゲートウェイの各ポートが表示されます。コマンド出力は、次のようになります。kubectl get svc -n istio-system istio-ingressgateway -o yaml
... ports: - name: status-port nodePort: 30391 port: 15020 protocol: TCP targetPort: 15020 - name: http2 nodePort: 31380 port: 80 protocol: TCP targetPort: 80 - name: https nodePort: 31390 port: 443 protocol: TCP targetPort: 443 - name: tcp nodePort: 31400 port: 31400 protocol: TCP targetPort: 31400 - name: https-kiali nodePort: 31073 port: 15029 protocol: TCP targetPort: 15029 - name: https-prometheus nodePort: 30253 port: 15030 protocol: TCP targetPort: 15030 - name: https-grafana nodePort: 30050 port: 15031 protocol: TCP targetPort: 15031 - name: https-tracing nodePort: 31204 port: 15032 protocol: TCP targetPort: 15032 - name: tls nodePort: 30158 port: 15443 protocol: TCP targetPort: 15443 ...
-
こうしたポートはロードバランサで公開されます。
たとえば、http2
という名前のサービスポートにはport
80 とnodePort
31380 があります。ユーザー クラスタのノードアドレスが192.168.0.10
、192.168.0.11
、192.168.0.12
で、ロードバランサの VIP が203.0.113.1
であると仮定します。
203.0.113.1:80
に送信されたトラフィックが192.168.0.10:31380
、192.168.0.11:31380
、192.168.0.12:31380
のいずれかに転送されるようにロードバランサを構成します。この指定された VIP で公開するサービスポートを選択できます。
統合モード
手動モード
Ingress ゲートウェイに外部 IP アドレスが割り当てられたことを確認します。少し時間がかかることがあるため、目的の結果が表示されるまで、このコマンドを繰り返し実行する必要があります。
kubectl --context="${CTX_CLUSTER1}" get svc istio-ingressgateway -n istio-system
想定される出力は次のとおりです。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.80.6.124 34.75.71.237 ... 51s
east-west ゲートウェイ IP アドレスの構成
east-west ゲートウェイの外部 IP アドレスを構成するには、Google Distributed Cloud のロード バランシング モードに応じて、以下のいずれかのセクションの手順を行います。
- east-west ゲートウェイの外部 IP アドレスを使用して
istio-eastwestgateway
Service の構成にパッチを適用します。kubectl patch svc istio-eastwestgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "EAST_WEST_GATEWAY_IP"}]'
-
シェルで
istio-eastwestgateway
サービスの構成を表示します。 Cloud Service Mesh のゲートウェイの各ポートが表示されます。コマンド出力は、次のようになります。kubectl get svc -n istio-system istio-eastwestgateway -o yaml
ports: - name: status-port nodePort: 31781 port: 15021 protocol: TCP targetPort: 15021 - name: tls nodePort: 30498 port: 15443 protocol: TCP targetPort: 15443 - name: tls-istiod nodePort: 30879 port: 15012 protocol: TCP targetPort: 15012 - name: tls-webhook nodePort: 30336 port: 15017 protocol: TCP targetPort: 15017 ...
-
こうしたポートはロードバランサで公開されます。
たとえば、http2
という名前のサービスポートにはport
80 とnodePort
31380 があります。ユーザー クラスタのノードアドレスが192.168.0.10
、192.168.0.11
、192.168.0.12
で、ロードバランサの VIP が203.0.113.1
であると仮定します。
203.0.113.1:80
に送信されたトラフィックが192.168.0.10:31380
、192.168.0.11:31380
、192.168.0.12:31380
のいずれかに転送されるようにロードバランサを構成します。この指定された VIP で公開するサービスポートを選択できます。
統合モード
手動モード
east-west ゲートウェイに外部 IP アドレスが割り当てられたことを確認します。少し時間がかかることがあるため、目的の結果が表示されるまで、このコマンドを繰り返し実行する必要があります。
kubectl --context="${CTX_CLUSTER1}" get svc istio-eastwestgateway -n istio-system
想定される出力は次のとおりです。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-eastwestgateway LoadBalancer 10.80.6.124 34.75.71.237 ... 51s