Configurare indirizzi IP esterni per Google Distributed Cloud
L'installazione predefinita di Cloud Service Mesh su Google Distributed Cloud presuppone che gli indirizzi IP esterni vengano allocati automaticamente per i servizi LoadBalancer
.
Questo non è vero in Google Distributed Cloud. Per questo motivo, devi allocare uno o più indirizzi IP esterni, a seconda della configurazione del tuo service mesh:
- Un indirizzo IP esterno per la risorsa gateway in entrata di Cloud Service Mesh, per ad esempio il gateway che i clienti utilizzano per accedere ai carichi di lavoro su internet.
- Un altro indirizzo IP esterno per consentire ai cluster di comunicare tra loro se esistono su reti diverse all'interno del tuo service mesh. Questo è chiamato gateway est-ovest.
Configurazione dell'indirizzo IP del gateway in entrata
Per configurare un indirizzo IP esterno per il gateway in entrata, segui una delle seguenti, a seconda del tipo di Modalità di bilanciamento del carico di Google Distributed Cloud:
- Esegui il patching della 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"}]'
-
Visualizza la configurazione del servizio
istio-ingressgateway
nella tua shell: Viene visualizzata ciascuna delle porte per i gateway di Cloud Service Mesh. L'output del comando è simile al seguente: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 ...
-
Esponi queste porte tramite il bilanciatore del carico.
Ad esempio, la porta del servizio denominatahttp2
haport
80 enodePort
31380. Supponiamo che gli indirizzi dei nodi per il tuo cluster utente siano192.168.0.10
,192.168.0.11
,192.168.0.12
e del bilanciatore del carico Il VIP è203.0.113.1
.
Configura il bilanciatore del carico in modo che il traffico inviato a203.0.113.1:80
venga inoltrato a192.168.0.10:31380
,192.168.0.11:31380
o192.168.0.12:31380
. Puoi selezionare le porte di servizio che vuoi esporre su questo VIP.
Modalità integrata
Modalità manuale
Verifica che al gateway di ingresso sia stato assegnato un indirizzo IP esterno. Là potrebbe esserci un leggero ritardo che richiede la ripetizione di questo comando fino a quando per vedere il risultato desiderato:
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, segui una delle seguenti, a seconda del tipo di Modalità di bilanciamento del carico di Google Distributed Cloud:
- Applica la 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"}]'
-
Visualizza la configurazione del servizio
istio-eastwestgateway
nella tua shell: Vengono visualizzate tutte le porte per i gateway di Cloud Service Mesh. L'output del comando è simile al seguente: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 ...
-
Esponi queste porte tramite il bilanciatore del carico.
Ad esempio, la porta del servizio denominatahttp2
haport
80 enodePort
31380. Supponiamo che gli indirizzi dei nodi per il tuo cluster utente siano192.168.0.10
,192.168.0.11
,192.168.0.12
e del bilanciatore del carico Il VIP è203.0.113.1
.
Configura il bilanciatore del carico in modo che il traffico inviato a203.0.113.1:80
sia inoltrato a192.168.0.10:31380
,192.168.0.11:31380
o192.168.0.12:31380
. Puoi selezionare le porte del servizio che vuoi esporre sul VIP specifico.
Modalità integrata
Modalità manuale
Verifica che al gateway est-ovest sia stato assegnato un indirizzo IP esterno. Potrebbe verificarsi un leggero ritardo che richiede di eseguire questo comando finché non viene visualizzato il risultato desiderato:
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