Configurar direcciones IP externas para Google Distributed Cloud con balanceadores de carga F5 BIG-IP
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 ocurre con Google Distributed Cloud y los balanceadores de carga F5 BIG-IP.
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 las instrucciones de una de las siguientes secciones, en función del modo de balanceo de carga de Google Distributed Cloud:
- Aplica un parche a la configuración del
istio-ingressgateway
servicio 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-ingressgateway
en 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 llamadohttp2
tieneport
80 ynodePort
31380. Supongamos que las direcciones de los nodos de tu clúster de usuarios son192.168.0.10
,192.168.0.11
y192.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: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 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 esperado:
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 las instrucciones de una de las siguientes secciones, en función del modo de balanceo de carga de Google Distributed Cloud:
- Aplica un parche a la configuración del servicio
istio-eastwestgateway
con 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-eastwestgateway
en 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 llamadohttp2
tieneport
80 ynodePort
31380. Supongamos que las direcciones de los nodos de tu clúster de usuarios son192.168.0.10
,192.168.0.11
y192.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: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 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 esperado:
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