Externe IP-Adressen für GKE on VMware mit F5 BIG-IP-Load-Balancern konfigurieren

Bei der Standardinstallation von Anthos Service Mesh in GKE on VMware wird davon ausgegangen, dass externe IP-Adressen automatisch LoadBalancer-Diensten zugewiesen werden. Dies gilt nicht für GKE on VMware mit F5 BIG-IP-Load-Balancern. Aus diesem Grund müssen Sie je nach Service Mesh-Konfiguration eine oder mehrere externe IP-Adressen zuweisen:

  • Eine externe IP-Adresse für die Anthos Service Mesh-Ingress-Gateway-Ressource, z. B. das Gateway, über das Ihre Kunden auf Ihre Arbeitslasten aus dem Internet zugreifen.
  • Eine andere externe IP-Adresse, mit der Ihre Cluster miteinander kommunizieren können, wenn sie in verschiedenen Netzwerken innerhalb Ihres Service Mesh vorhanden sind. Dies wird als east-west-Gateway bezeichnet.

IP-Adresse für das Ingress-Gateway konfigurieren

Folgen Sie der Anleitung in einem der folgenden Abschnitte, um eine externe IP-Adresse für das Ingress-Gateway zu konfigurieren, abhängig vom Load-Balancing-Modus von GKE on VMware:

    Integrierter Modus

  1. Patchen Sie die Konfiguration des istio-ingressgateway-Dienstes mit der externen IP-Adresse für das Ingress-Gateway:
    kubectl patch svc istio-ingressgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "INGRESS_GATEWAY_IP"}]'
  2. Manueller Modus

  3. Rufen Sie die Konfiguration des Dienstes istio-ingressgateway in der Shell auf:
    kubectl get svc -n istio-system istio-ingressgateway -o yaml
    Jeder Port für die Gateways von Anthos Service Mesh wird angezeigt. Die Ausgabe des Befehls sieht in etwa so aus:
      ...
      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. Machen Sie diese Ports über Ihren Load-Balancer verfügbar.

    Der Dienstport http2 hat beispielsweise port 80 und nodePort 31380. Angenommen, die Knotenadressen für Ihren Nutzercluster lauten 192.168.0.10, 192.168.0.11 und 192.168.0.12 und die VIP Ihres Load-Balancers ist 203.0.113.1.

    Konfigurieren Sie dann Ihren Load-Balancer so, dass der an 203.0.113.1:80 gesendete Traffic an 192.168.0.10:31380, 192.168.0.11:31380 oder 192.168.0.12:31380 weitergeleitet wird. Sie können die Dienstports auswählen, die Sie für diese VIP freigeben möchten.

Prüfen Sie, ob dem Ingress-Gateway eine externe IP-Adresse zugewiesen wurde. Es kann eine kurze Verzögerung geben, sodass Sie diesen Befehl wiederholen müssen, bis Sie das erwartete Ergebnis sehen:

kubectl --context="${CTX_CLUSTER1}" get svc istio-ingressgateway -n istio-system

Folgende Ausgabe wird erwartet:

NAME                    TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)   AGE
istio-ingressgateway   LoadBalancer   10.80.6.124   34.75.71.237   ...       51s

IP-Adresse für das east-west-Gateway konfigurieren

Folgen Sie zum Konfigurieren einer externen IP-Adresse für das Ost-West-Gateway der Anleitung in einem der folgenden Abschnitte, je nach Ihrem Load-Balancing-Modus für GKE on VMware:

    Integrierter Modus

  1. Patchen Sie die Konfiguration des Dienstes istio-eastwestgateway mit der externen IP-Adresse für das east-west-Gateway:
    kubectl patch svc istio-eastwestgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "EAST_WEST_GATEWAY_IP"}]'
  2. Manueller Modus

  3. Rufen Sie die Konfiguration des Dienstes istio-eastwestgateway in der Shell auf:
    kubectl get svc -n istio-system istio-eastwestgateway -o yaml
    Jeder Port für die Gateways von Anthos Service Mesh wird angezeigt. Die Ausgabe des Befehls sieht in etwa so aus:
      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. Machen Sie diese Ports über Ihren Load-Balancer verfügbar.

    Der Dienstport http2 hat beispielsweise port 80 und nodePort 31380. Angenommen, die Knotenadressen für Ihren Nutzercluster lauten 192.168.0.10, 192.168.0.11 und 192.168.0.12 und die VIP Ihres Load-Balancers ist 203.0.113.1.

    Konfigurieren Sie dann Ihren Load-Balancer so, dass der an 203.0.113.1:80 gesendete Traffic an 192.168.0.10:31380, 192.168.0.11:31380 oder 192.168.0.12:31380 weitergeleitet wird. Sie können die Dienstports auswählen, die Sie für diese VIP freigeben möchten.

Prüfen Sie, ob dem east-west-Gateway eine externe IP-Adresse zugewiesen wurde. Es kann eine kurze Verzögerung geben, sodass Sie diesen Befehl wiederholen müssen, bis Sie das erwartete Ergebnis sehen:

kubectl --context="${CTX_CLUSTER1}" get svc istio-eastwestgateway -n istio-system

Folgende Ausgabe wird erwartet:

NAME                    TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)   AGE
istio-eastwestgateway   LoadBalancer   10.80.6.124   34.75.71.237   ...       51s

Nächste Schritte