Usar un proxy con GKE en AWS

En este tema se explica cómo enrutar el tráfico del servicio de gestión de GKE en AWS y de Connect a través de un proxy HTTP/HTTPS.

GKE on AWS requiere acceso a Internet por los siguientes motivos:

  • El servicio de gestión registra los clústeres de usuario con Connect.
  • Los clústeres de usuario ejecutan el agente de Connect.
  • Todos los nodos del servicio de gestión y del clúster de usuarios descargan imágenes de Container Registry.

Puedes enrutar este tráfico a través de un proxy HTTP o HTTPS. Desde GKE en AWS 1.8, puedes configurar ajustes de proxy individuales para tu servicio de gestión y para cada uno de tus clústeres. Para obtener más información sobre cómo cambiar la configuración del proxy, consulta Cambiar la configuración del proxy del clúster.

Los ajustes del proxy se declaran en un archivo JSON al que se hace referencia en anthos-gke.yaml.

Requisitos previos

Antes de configurar GKE en AWS para que use un proxy, debes habilitar los endpoints de VPC de AWS, definir un grupo de seguridad para el proxy y permitir las conexiones salientes a determinados servicios Google Cloud .

Para usar un proxy HTTP, tus clústeres de usuarios deben ejecutar Kubernetes 1.17 o una versión posterior.

Habilitar los endpoints de VPC

Antes de configurar un proxy, debes crear endpoints de VPC para tu instalación de GKE en AWS. Los endpoints de VPC permiten que los recursos de las subredes privadas accedan a los servicios de AWS sin acceso público a Internet.

En la siguiente tabla se indican los servicios de AWS para los que GKE en AWS requiere endpoints de VPC, junto con el tipo de endpoint y los grupos de seguridad de cada componente de GKE en AWS que necesita acceder al endpoint.

Servicio Tipo de punto final Grupos de seguridad
Escalado automático Interfaz Gestión, plano de control y grupos de nodos
EC2 Interfaz Gestión, plano de control y grupos de nodos
Balanceo de carga Interfaz Gestión, plano de control y grupos de nodos
Key Management Service Interfaz Gestión, plano de control y grupos de nodos
S3 Pasarela Gestión, plano de control y grupos de nodos
Servicio de tokens de seguridad (STS) Interfaz Gestión, plano de control y grupos de nodos

Puedes crear endpoints desde la consola de VPC de AWS. Las opciones que definas al crear los endpoints de VPC dependerán de la configuración de tu VPC.

Definir un grupo de seguridad

Tus componentes de GKE en AWS deben poder conectarse al servidor proxy. Crea o busca un grupo de seguridad de AWS que permita las conexiones salientes a tu servidor proxy. El grupo de seguridad debe permitir el acceso saliente desde los grupos de seguridad de gestión, plano de control y grupo de nodos a la dirección y el puerto del proxy. Guarda el ID de este grupo de seguridad (por ejemplo, sg-12345678).

Tipo Protocolo Puerto de origen A puerto Dirección
Salida TCP Puerto del proxy Puerto del proxy Grupo de seguridad de proxy

Permitir conexiones salientes a servicios de Google Cloud

Para que GKE en AWS se conecte a los servicios de Google Cloud , el servidor proxy debe permitir el tráfico a los siguientes dominios:

  • gkeconnect.googleapis.com
  • gkehub.googleapis.com
  • oauth2.googleapis.com
  • storage.googleapis.com
  • www.googleapis.com
  • gcr.io
  • k8s.gcr.io
  • EC2-REGION.ec2.archive.ubuntu.com

Sustituye EC2-REGION por la región de AWS EC2 en la que se ejecuta tu instalación de GKE en AWS. Por ejemplo, us-west-1.ec2.archive.ubuntu.com/.

Si usas Cloud Service Mesh con Prometheus y Kiali, permite el acceso saliente desde los siguientes dominios:

  • docker.io
  • quay.io

Crear el archivo JSON de configuración del proxy

El archivo JSON de configuración del proxy contiene un objeto con tres pares clave/valor, con los nombres de clave httpProxy, httpsProxy y noProxy. Los nombres de usuario y las contraseñas se cifran con envoltura con tu clave de KMS de AWS antes de aplicarlos al servidor.

{
  "httpProxy": "HTTP_PROXY",
  "httpsProxy": "HTTPS_PROXY",
  "noProxy": "NO_PROXY"
}

Haz los cambios siguientes:

  • HTTP_PROXY con la dirección del servidor proxy para enrutar las solicitudes HTTP.
  • HTTPS_PROXY con el servidor proxy para enrutar las solicitudes HTTPS.
  • NO_PROXY con una lista opcional de IPs, intervalos CIDR y dominios en los que no se usa el proxy.

Para obtener más información, consulta la referencia de configuración. Por ejemplo, la siguiente configuración usa un proxy en 10.0.0.254 y excluye varios sitios.

{
  "httpProxy": "http://user:password@10.0.0.254:80",
  "httpsProxy": "http://user:password@10.0.0.254:443",
  "noProxy": "localhost,127.0.0.1,169.254.169.254,10.0.0.0/16,example.com"
}

Añadir el proxy a anthos-gke.yaml

Para configurar tu AWSManagementService, sigue estos pasos:

  1. Cambia al directorio con tu configuración de GKE en AWS. Has creado este directorio al instalar el servicio de gestión.

    cd anthos-aws

  2. Abre anthos-gke.yaml en un editor de texto. Añade un valor para spec.proxy como en el ejemplo siguiente.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSManagementService
    metadata:
      name: management
    spec:
      version: aws-1.14.1-gke.0
      proxy: PROXY_JSON_FILE
      securityGroupIDs:
      - SECURITY_GROUP_ID
      ...
    

    Haz los cambios siguientes:

    • PROXY_JSON_FILE con la ruta relativa de la configuración JSON de tu proxy.
    • SECURITY_GROUP_ID con el ID de un grupo de seguridad con acceso al servidor proxy.

    Guarda el archivo.

  3. Ejecuta anthos-gke aws management init para generar un archivo anthos-gke.status.yaml con una configuración adicional. El comando init también valida el objeto AWSManagementService en el archivo anthos-gke.yaml.

    anthos-gke aws management init
    
  4. Ejecuta anthos-gke aws management apply para actualizar tu servicio de gestión en AWS.

    anthos-gke aws management apply
    
  5. A continuación, crea un clúster de usuarios. Incluye el grupo de seguridad del proxy en AWSCluster y AWSNodePool, spec.controlPlane.securityGroupIDs y spec.securityGroupIDs, respectivamente. El clúster tendrá acceso al proxy.

Referencia de configuración

Campo Descripción Ejemplo Obligatorio
httpProxy URL de un servidor proxy. El valor debe incluir un nombre de host o una dirección IP y, opcionalmente, un puerto, un nombre de usuario y una contraseña. "http://user:password@10.184.37.42:80"
httpsProxy Una URL de proxy para el tráfico HTTPS cifrado. Se usará la URL httpProxy si no se proporciona httpsProxy. "http://user:password@10.101.16.31:80" No
noProxy Lista de URLs separadas por comas que se excluirán del proxy. Cada valor puede ser una dirección IP, un intervalo CIDR, un nombre de dominio o un asterisco (*). Los dominios especificados con un punto inicial (por ejemplo, ".google.com") indican que se requiere un subdominio. Un solo asterisco * indica que no se debe usar ningún proxy. "1.2.3.4,10.0.0.0/16,example.com,.site.com" No

Siguientes pasos

Para obtener más información sobre cómo completar una instalación de GKE en AWS, consulta los siguientes artículos:

Para obtener información sobre cómo cambiar la configuración de proxy de tu clúster, consulta los siguientes artículos: