Usa un proxy con GKE en AWS

En este tema, se muestra cómo enrutar el tráfico desde el servicio administrado de GKE en AWS y conectarse a través de un proxy HTTP/HTTPS.

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

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

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

Debes declarar la configuración del proxy en un archivo JSON al que se hace referencia en anthos-gke.yaml.

Requisitos previos

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

Para usar un proxy HTTP, los clústeres de usuario deben ejecutar Kubernetes 1.17 o una versión superior.

Habilita extremos de VPC

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

En la siguiente tabla, se enumeran los servicios de AWS para los que GKE en AWS requiere extremos de VPC, junto con el tipo de extremo y los grupos de seguridad para cada GKE en el componente de AWS que necesita acceso al extremo.

Servicio Tipo de extremo Grupos de seguridad
Ajuste de escala automático Interfaz Administración, plano de control, grupos de nodos
EC2 Interfaz Administración, plano de control, grupos de nodos
Balanceo de cargas Interfaz Administración, plano de control, grupos de nodos
Servicio de administración de claves Interfaz Administración, plano de control, grupos de nodos
S3 Puerta de enlace Administración, plano de control, grupos de nodos
Servicio de tokens de seguridad (STS) Interfaz Administración, plano de control, grupos de nodos

Puedes crear extremos desde la consola de VPC de AWS. Las opciones que estableces cuando creas extremos de VPC dependen de tu configuración de VPC.

Define un grupo de seguridad

Tus componentes de GKE en AWS deben poder conectarse al servidor proxy. Crea o ubica un grupo de seguridad de AWS que permita conexiones salientes a tu servidor proxy. El grupo de seguridad debe permitir el acceso saliente desde los grupos de seguridad de la administración, el plano de control y los grupos de seguridad del 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 Del puerto Al puerto Dirección
Salida TCP Puerto proxy: Puerto proxy: Grupo de seguridad del proxy

Permite conexiones salientes a los 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

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

Si usas Anthos Service Mesh con Prometheus y Kiali, debes permitir el acceso saliente desde los siguientes dominios:

  • docker.io
  • quay.io

Crea el archivo de configuración JSON del proxy

El archivo JSON de configuración del proxy contiene un objeto que tiene tres pares clave-valor, con los nombres de clave httpProxy, httpsProxy y noProxy. Los nombres de usuario y las contraseñas se encriptan en sobre con tu clave de KMS de AWS antes de aplicarlas al servidor.

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

Reemplaza lo siguiente:

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

Consulta Referencia de la configuración para obtener más informació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"
}

Agrega el proxy a anthos-gke.yaml

Para configurar AWSManagementService, realiza los siguientes pasos:

  1. Cambia al directorio con la configuración de GKE en AWS. Creaste este directorio cuando instalaste el servicio de administración.

    cd anthos-aws

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

    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
      ...
    

    Reemplaza lo siguiente:

    • PROXY_JSON_FILE por la ruta de acceso relativa de la configuración JSON del proxy.
    • SECURITY_GROUP_ID por 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 configuración adicional. El comando init también valida el objeto AWSManagementService en tu archivo anthos-gke.yaml.

    anthos-gke aws management init
    
  4. Ejecuta anthos-gke aws management apply para actualizar el servicio administrado en AWS.

    anthos-gke aws management apply
    
  5. A continuación, Crea un clúster de usuario. Incluye el grupo de seguridad del proxy en los spec.controlPlane.securityGroupIDs y spec.securityGroupIDs de AWSCluster, y AWSNodePool, respectivamente. Luego, el clúster tiene acceso al proxy.

Referencia de la configuración

Campo Descripción Ejemplo Obligatorio
httpProxy Una URL del servidor proxy. El valor debe incluir un nombre de host y una dirección IP, y de forma opcional un puerto, un nombre de usuario y una contraseña. "http://user:password@10.184.37.42:80"
httpsProxy Una URL del proxy para el tráfico encriptado y HTTPS. Se usará la URL httpProxy si no se proporciona httpsProxy. "http://user:password@10.101.16.31:80" No
noProxy Una lista de URL separadas por comas que se debe excluir del proxy. Cada valor puede ser una dirección IP, un rango de CIDR, un nombre de dominio o el carácter asterisco (*). Los dominios especificados con un punto al principio (p. ej., “.google.com”) indican que se requiere un subdominio. Un asterisco * único indica que no se debe realizar ningún proxy. "1.2.3.4,10.0.0.0/16,example.com,.site.com" No

¿Qué sigue?

Si deseas obtener más información para completar una instalación de GKE en AWS, consulta los vínculos siguientes:

Para obtener información sobre cómo cambiar la configuración de proxy del clúster, consulta los siguientes vínculos: