F5 BIG-IP ロードバランサを使用して Google Distributed Cloud の外部 IP アドレスを構成する

Google Distributed Cloud でのデフォルトの Cloud Service Mesh インストールでは、外部 IP アドレスが LoadBalancer サービスに自動的に割り振られることを前提としています。これは、F5 BIG-IP ロードバランサを使用する Google Distributed Cloud には当てはまりません。このため、サービス メッシュ構成に応じて、1 つ以上の外部 IP アドレスを割り振る必要があります。

  • Cloud Service Mesh Ingress Gateway リソースの 1 つの外部 IP アドレス。たとえば、お客様がインターネット経由でワークロードにアクセスするために使用するゲートウェイ。
  • クラスタがサービス メッシュ内の異なるネットワークに存在する場合は、相互に通信するための別の外部 IP アドレス。これを east-west ゲートウェイと呼びます。

Ingress ゲートウェイ IP アドレスの構成

Ingress ゲートウェイの外部 IP アドレスを構成するには、Google Distributed Cloud の負荷分散モードに応じて、次のいずれかのセクションの手順を行います。

    統合モード

  1. 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"}]'
  2. 手動モード

  3. シェルで istio-ingressgateway サービスの構成を表示します。
    kubectl get svc -n istio-system istio-ingressgateway -o yaml
    Cloud Service Mesh のゲートウェイの各ポートが表示されます。コマンド出力は、次のようになります。
      ...
      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
      ...
  4. こうしたポートはロードバランサで公開されます。

    たとえば、http2 という名前のサービスポートには port 80 と nodePort 31380 があります。ユーザー クラスタのノードアドレスが 192.168.0.10192.168.0.11192.168.0.12 で、ロードバランサの VIP が 203.0.113.1 であると仮定します。

    203.0.113.1:80 に送信されたトラフィックが 192.168.0.10:31380192.168.0.11:31380192.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 の負荷分散モードに応じて、次のいずれかのセクションの手順を行います。

    統合モード

  1. 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"}]'
  2. 手動モード

  3. シェルで istio-eastwestgateway サービスの構成を表示します。
    kubectl get svc -n istio-system istio-eastwestgateway -o yaml
    Cloud Service Mesh のゲートウェイの各ポートが表示されます。コマンド出力は、次のようになります。
      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
      ...
  4. こうしたポートはロードバランサで公開されます。

    たとえば、http2 という名前のサービスポートには port 80 と nodePort 31380 があります。ユーザー クラスタのノードアドレスが 192.168.0.10192.168.0.11192.168.0.12 で、ロードバランサの VIP が 203.0.113.1 であると仮定します。

    203.0.113.1:80 に送信されたトラフィックが 192.168.0.10:31380192.168.0.11:31380192.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

次のステップ