Configurar direcciones IP externas para Google Distributed Cloud
La instalación predeterminada de Cloud Service Mesh en Google Distributed Cloud presupone que las direcciones IP externas se asignan automáticamente a los servicios LoadBalancer.
Esto no es así en Google Distributed Cloud. Por este motivo, debes asignar una o varias direcciones IP externas, en función de la configuración de tu malla de servicios:
- Una dirección IP externa para el recurso de la pasarela de entrada de Cloud Service Mesh. Por ejemplo, la pasarela que usan tus clientes para acceder a tus cargas de trabajo a través de Internet.
- Otra dirección IP externa para que tus clústeres se comuniquen entre sí si están en redes diferentes dentro de tu malla de servicios. Esto se conoce como pasarela este-oeste.
Configurar la dirección IP de la pasarela de entrada
Para configurar una dirección IP externa para la pasarela de entrada, sigue una de las secciones que se indican a continuación, en función del modo de balanceo de carga de Google Distributed Cloud:
- Aplica un parche a la configuración del
istio-ingressgatewayservicio con la dirección IP externa de la pasarela de entrada:kubectl patch svc istio-ingressgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "INGRESS_GATEWAY_IP"}]' -
Consulta la configuración del servicio
istio-ingressgatewayen tu shell: Se muestran todos los puertos de las pasarelas de Cloud Service Mesh. El resultado del comando es similar al siguiente: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 de tu balanceador de carga.
Por ejemplo, el puerto de servicio llamadohttp2tieneport80 ynodePort31380. Supongamos que las direcciones de los nodos de tu clúster de usuarios son192.168.0.10,192.168.0.11y192.168.0.12, y que la IP virtual de tu balanceador de carga es203.0.113.1.
Configure el balanceador de carga para que el tráfico enviado a203.0.113.1:80se reenvíe a192.168.0.10:31380,192.168.0.11:31380o192.168.0.12:31380. Puedes seleccionar los puertos de servicio que quieras exponer en este VIP.
Modo integrado
Modo manual
Confirma que se ha asignado una dirección IP externa a la pasarela de entrada. Puede que haya un ligero retraso, por lo que tendrás que repetir 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
Configurar la dirección IP de la pasarela este-oeste
Para configurar una dirección IP externa para la pasarela este-oeste, sigue una de las secciones que se indican a continuación, en función del modo de balanceo de carga de Google Distributed Cloud:
- Aplica un parche a la configuración del servicio
istio-eastwestgatewaycon la dirección IP externa de la pasarela este-oeste:kubectl patch svc istio-eastwestgateway -n istio-system --type='json' -p '[{"op": "add", "path": "/spec/loadBalancerIP", "value": "EAST_WEST_GATEWAY_IP"}]' -
Consulta la configuración del servicio
istio-eastwestgatewayen tu shell: Se muestran todos los puertos de las pasarelas de Cloud Service Mesh. El resultado del comando es similar al siguiente: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 de tu balanceador de carga.
Por ejemplo, el puerto de servicio llamadohttp2tieneport80 ynodePort31380. Supongamos que las direcciones de los nodos de tu clúster de usuarios son192.168.0.10,192.168.0.11y192.168.0.12, y que la IP virtual de tu balanceador de carga es203.0.113.1.
Configure el balanceador de carga para que el tráfico enviado a203.0.113.1:80se reenvíe a192.168.0.10:31380,192.168.0.11:31380o192.168.0.12:31380. Puedes seleccionar los puertos de servicio que quieras exponer en este VIP.
Modo integrado
Modo manual
Confirma que se ha asignado una dirección IP externa a la pasarela este-oeste. Puede que haya un ligero retraso, por lo que tendrás que repetir 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