Configura direcciones IP externas para Google Distributed Cloud
La instalación predeterminada de Cloud Service Mesh en Google Distributed Cloud supone que las direcciones IP externas se asignan automáticamente a los servicios LoadBalancer
.
Esto no es así en Google Distributed Cloud. Debido a esto, debes asignar una o más direcciones IP externas, según la configuración de la malla de servicios:
- Una dirección IP externa para el recurso de la puerta de enlace de entrada de Cloud Service Mesh, por ejemplo, la que usan tus clientes para acceder a tus cargas de trabajo mediante la Internet.
- Otra dirección IP externa para que tus clústeres se comuniquen entre sí si existen en redes diferentes dentro de tu malla de servicios. Esto se conoce como la puerta de enlace este-oeste.
Configura la dirección IP de la puerta de enlace de entrada
Para configurar una dirección IP externa para la puerta de enlace de entrada, sigue una de las siguientes secciones, según el modo de balanceo de cargas de Google Distributed Cloud:
- Aplica un parche a la configuración del servicio
istio-ingressgateway
con la dirección IP externa de la puerta de enlace de entrada:kubectl patch svc istio-ingressgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "INGRESS_GATEWAY_IP"}]'
-
Visualiza la configuración del servicio
istio-ingressgateway
en tu shell: Se muestran cada uno de los puertos para las puertas de enlace de Cloud Service Mesh. El resultado del comando se ve de la siguiente manera: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 ...
-
Expón estos puertos a través del balanceador de cargas.
Por ejemplo, el puerto de servicio llamadohttp2
tieneport
80 ynodePort
31380. Supongamos que las direcciones de nodos de tu clúster de usuario son192.168.0.10
,192.168.0.11
y192.168.0.12
, y la VIP del balanceador de cargas es203.0.113.1
.
Configura el balanceador de cargas para que el tráfico enviado a203.0.113.1:80
se reenvíe a192.168.0.10:31380
,192.168.0.11:31380
o192.168.0.12:31380
. Puedes seleccionar los puertos de servicio que deseas exponer en esta VIP determinada.
Modo integrado
Modo manual
Confirma que se haya asignado una dirección IP externa a la puerta de enlace de entrada. Puede haber una leve demora que requiere que ejecutes este comando hasta que veas el resultado deseado:
kubectl --context="${CTX_CLUSTER1}" get svc istio-ingressgateway -n istio-system
El resultado esperado es el siguiente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.80.6.124 34.75.71.237 ... 51s
Configura la dirección IP de la puerta de enlace este-oeste
Para configurar una dirección IP externa para la puerta de enlace este-oeste, sigue una de las siguientes secciones, según el modo de balanceo de cargas de Google Distributed Cloud:
- Aplica un parche a la configuración del servicio
istio-eastwestgateway
con la dirección IP externa para la puerta de enlace este-oeste:kubectl patch svc istio-eastwestgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "EAST_WEST_GATEWAY_IP"}]'
-
Visualiza la configuración del servicio
istio-eastwestgateway
en tu shell: Se muestran cada uno de los puertos para las puertas de enlace de Cloud Service Mesh. El resultado del comando se ve de la siguiente manera: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 ...
-
Expón estos puertos a través del balanceador de cargas.
Por ejemplo, el puerto de servicio llamadohttp2
tieneport
80 ynodePort
31380. Supongamos que las direcciones de nodos de tu clúster de usuario son192.168.0.10
,192.168.0.11
y192.168.0.12
, y la VIP del balanceador de cargas es203.0.113.1
.
Configura el balanceador de cargas para que el tráfico enviado a203.0.113.1:80
se reenvíe a192.168.0.10:31380
,192.168.0.11:31380
o192.168.0.12:31380
. Puedes seleccionar los puertos de servicio que deseas exponer en esta VIP determinada.
Modo integrado
Modo manual
Confirma que se haya asignado una dirección IP externa a la puerta de enlace este-oeste. Puede haber una leve demora que requiere que ejecutes este comando hasta que veas el resultado deseado:
kubectl --context="${CTX_CLUSTER1}" get svc istio-eastwestgateway -n istio-system
El resultado esperado es el siguiente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-eastwestgateway LoadBalancer 10.80.6.124 34.75.71.237 ... 51s