Configura indirizzi IP esterni per GKE su VMware con i bilanciatori del carico BIG-IP di F5

L'installazione predefinita di Anthos Service Mesh su GKE su VMware presuppone che gli indirizzi IP esterni vengano allocati automaticamente per i servizi LoadBalancer. Questo non è vero per GKE su VMware con bilanciatori del carico BIG-IP F5. Per questo motivo, devi allocare uno o più indirizzi IP esterni, a seconda della configurazione del mesh di servizi:

  • Un indirizzo IP esterno per la risorsa gateway in entrata di Anthos Service Mesh, ad esempio il gateway utilizzato dai clienti per accedere ai carichi di lavoro da internet.
  • Un altro indirizzo IP esterno per consentire ai cluster di comunicare tra loro se sono presenti su reti diverse all'interno del mesh di servizi. È noto come porta est-ovest.

Configurazione dell'indirizzo IP del gateway in entrata

Per configurare un indirizzo IP esterno per il gateway in entrata, utilizza le istruzioni in una delle sezioni seguenti, a seconda della modalità di bilanciamento del carico di GKE su VMware:

    Modalità integrata

  1. Applica una patch alla configurazione del servizio istio-ingressgateway con l'indirizzo IP esterno del gateway in entrata:
    kubectl patch svc istio-ingressgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "INGRESS_GATEWAY_IP"}]'
  2. Modalità manuale

  3. Visualizza la configurazione del servizio istio-ingressgateway nella tua shell:
    kubectl get svc -n istio-system istio-ingressgateway -o yaml
    Vengono visualizzate tutte le porte per i gateway di Anthos Service Mesh. L'output comando è simile al seguente:
      ...
      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. Esponi queste porte tramite il bilanciatore del carico.

    Ad esempio, la porta del servizio denominata http2 ha port 80 e nodePort 31380. Supponiamo che gli indirizzi dei nodi per il cluster utente siano 192.168.0.10, 192.168.0.11 e 192.168.0.12 e che il VIP del bilanciatore del carico sia 203.0.113.1.

    Configura il bilanciatore del carico in modo che il traffico inviato a 203.0.113.1:80 venga inoltrato a 192.168.0.10:31380, 192.168.0.11:31380 o 192.168.0.12:31380. Puoi selezionare le porte di servizio che vuoi esporre su questo VIP specifico.

Verifica che al gateway in entrata sia stato assegnato un indirizzo IP esterno. Potrebbe verificarsi un leggero ritardo che richiede la ripetizione del comando finché non vedi il risultato previsto:

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

L'output previsto è:

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

Configurazione dell'indirizzo IP del gateway est-ovest

Per configurare un indirizzo IP esterno per il gateway est-ovest, utilizza le istruzioni riportate in una delle sezioni seguenti, a seconda della modalità di bilanciamento del carico di GKE su VMware:

    Modalità integrata

  1. Applica una patch alla configurazione del servizio istio-eastwestgateway con l'indirizzo IP esterno per il gateway est-ovest:
    kubectl patch svc istio-eastwestgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "EAST_WEST_GATEWAY_IP"}]'
  2. Modalità manuale

  3. Visualizza la configurazione del servizio istio-eastwestgateway nella tua shell:
    kubectl get svc -n istio-system istio-eastwestgateway -o yaml
    Vengono visualizzate tutte le porte per i gateway di Anthos Service Mesh. L'output comando è simile al seguente:
      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. Esponi queste porte tramite il bilanciatore del carico.

    Ad esempio, la porta del servizio denominata http2 ha port 80 e nodePort 31380. Supponiamo che gli indirizzi dei nodi per il cluster utente siano 192.168.0.10, 192.168.0.11 e 192.168.0.12 e che il VIP del bilanciatore del carico sia 203.0.113.1.

    Configura il bilanciatore del carico in modo che il traffico inviato a 203.0.113.1:80 venga inoltrato a 192.168.0.10:31380, 192.168.0.11:31380 o 192.168.0.12:31380. Puoi selezionare le porte di servizio che vuoi esporre su questo VIP specifico.

Verifica che al gateway est-ovest sia stato assegnato un indirizzo IP esterno. Potrebbe esserci un leggero ritardo che richiede l'esecuzione di questo comando finché non vedi il risultato previsto:

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

L'output previsto è:

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

Che cosa succede dopo?