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:

    Modo integrado

  1. 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"}]'
  2. Modo manual

  3. Consulta la configuración del servicio istio-ingressgateway en tu shell:
    kubectl get svc -n istio-system istio-ingressgateway -o yaml
    Se muestran todos los puertos de las pasarelas de Cloud Service Mesh. El resultado del comando es similar al siguiente:
      ...
      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. Expón estos puertos a través de tu balanceador de carga.

    Por ejemplo, el puerto de servicio llamado http2 tiene port 80 y nodePort 31380. Supongamos que las direcciones de los nodos de tu clúster de usuarios son 192.168.0.10, 192.168.0.11 y 192.168.0.12, y que la IP virtual de tu balanceador de carga es 203.0.113.1.

    Configure el balanceador de carga para que el tráfico enviado a 203.0.113.1:80 se reenvíe a 192.168.0.10:31380, 192.168.0.11:31380 o 192.168.0.12:31380. Puedes seleccionar los puertos de servicio que quieras exponer en este VIP.

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:

    Modo integrado

  1. 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"}]'
  2. Modo manual

  3. Consulta la configuración del servicio istio-eastwestgateway en tu shell:
    kubectl get svc -n istio-system istio-eastwestgateway -o yaml
    Se muestran todos los puertos de las pasarelas de Cloud Service Mesh. El resultado del comando es similar al siguiente:
      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. Expón estos puertos a través de tu balanceador de carga.

    Por ejemplo, el puerto de servicio llamado http2 tiene port 80 y nodePort 31380. Supongamos que las direcciones de los nodos de tu clúster de usuarios son 192.168.0.10, 192.168.0.11 y 192.168.0.12, y que la IP virtual de tu balanceador de carga es 203.0.113.1.

    Configure el balanceador de carga para que el tráfico enviado a 203.0.113.1:80 se reenvíe a 192.168.0.10:31380, 192.168.0.11:31380 o 192.168.0.12:31380. Puedes seleccionar los puertos de servicio que quieras exponer en este VIP.

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

Siguientes pasos