F5 BIG-IP ロードバランサを使用する VMware 用 Google Distributed Cloud(ソフトウェアのみ)の外部 IP アドレスを構成する
VMware 用 Google Distributed Cloud(ソフトウェアのみ)のデフォルトの Cloud Service Mesh インストールでは、外部 IP アドレスが LoadBalancer サービスに自動的に割り振られることを前提としています。これは、F5 BIG-IP ロードバランサを使用する VMware 用 Google Distributed Cloud(ソフトウェアのみ)には当てはまりません。そのため、サービス メッシュ構成に応じて、次のように 1 つ以上の外部 IP アドレスを割り振る必要があります。
- Cloud Service Mesh の Ingress Gateway リソース(たとえば、お客様がインターネット経由でワークロードにアクセスするために使用するゲートウェイ)用の外部 IP アドレス。
- クラスタがサービス メッシュ内の異なるネットワークに存在する場合は、相互に通信するための外部 IP アドレス。これを east-west ゲートウェイと呼びます。
Ingress ゲートウェイの IP アドレスの構成
Ingress ゲートウェイの外部 IP アドレスを構成するには、VMware 用 Google Distributed Cloud(ソフトウェアのみ)のロード バランシング モードに応じて、次のいずれかのセクションの手順を行います。
- Ingress ゲートウェイの外部 IP アドレスを使用して
istio-ingressgatewayService の構成にパッチを適用します。kubectl patch svc istio-ingressgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "INGRESS_GATEWAY_IP"}]' -
シェルで
istio-ingressgatewayService の構成を表示します。 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という名前のサービスポートにはport80 とnodePort31380 があります。ユーザー クラスタのノードアドレスが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 アドレスを構成するには、VMware 用 Google Distributed Cloud(ソフトウェアのみ)のロード バランシング モードに応じて、次のいずれかのセクションの手順を行います。
- east-west ゲートウェイの外部 IP アドレスを使用して
istio-eastwestgatewayService の構成にパッチを適用します。kubectl patch svc istio-eastwestgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "EAST_WEST_GATEWAY_IP"}]' -
シェルで
istio-eastwestgatewayService の構成を表示します。 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という名前のサービスポートにはport80 とnodePort31380 があります。ユーザー クラスタのノードアドレスが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