En este documento, se muestra cómo enrutar el tráfico desde GKE on AWS con un proxy HTTP/HTTPS. Debes especificar la configuración del proxy cuando creas un clúster.
Descripción general
GKE on AWS puede enrutar el tráfico de Internet saliente con un proxy por los siguientes motivos:
- Para registrar clústeres con Google Cloud a través de Connect
- Para ejecutar el agente de Connect
- Para descargar imágenes desde Container Registry, sigue estos pasos:
Limitaciones
- Los campos
httpProxy
yhttpsProxy
no admiten URL que comiencen conhttps://
. Debes usarhttp://
. Las solicitudes al puerto 443 usan HTTPS. - Debes configurar los valores para
httpProxy
,httpsProxy
ynoProxy
. - Es posible que debas agregar dominios, IP o CIDR adicionales al campo
noProxy
. Recomendamos agregar el rango de IP de VPC. A partir de la versión 1.22 de Google Kubernetes Engine, GKE en AWS agrega automáticamente el CIDR de la dirección del Pod y el CIDR de la dirección del Service.
Requisitos previos
En esta sección, se describen los requisitos previos que debes aplicar antes de usar un proxy.
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 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 que requieren acceso al extremo.
Servicio | Tipo de extremo | Grupos de seguridad |
---|---|---|
Ajuste de escala automático | Interfaz | Plano de control, grupos de nodos |
EC2 | Interfaz | Plano de control, grupos de nodos |
EFS | Interfaz | Plano de control |
Balanceo de cargas | Interfaz | Plano de control, grupos de nodos |
Servicio de administración de claves | Interfaz | Plano de control, grupos de nodos |
S3 | Puerta de enlace | Plano de control, grupos de nodos |
Secrets Manager | Interfaz | Plano de control, grupos de nodos |
Servicio de tokens de seguridad (STS) | Interfaz | 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
GKE en AWS debe poder conectarse al servidor proxy para descargar los componentes del software. 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 del 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 |
Lista de entidades permitidas del proxy
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.
.gcr.io
cloudresourcemanager.googleapis.com
container.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
oauth2.googleapis.com
securetoken.googleapis.com
storage.googleapis.com
sts.googleapis.com
www.googleapis.com
servicecontrol.googleapis.com
logging.googleapis.com
monitoring.googleapis.com
opsconfigmonitoring.googleapis.com
GCP_LOCATION-gkemulticloud.googleapis.com
Reemplaza GCP_LOCATION
por la región de Google Cloud en la que reside el clúster de GKE Enterprise. Especifica us-west1
o alguna otra región compatible.
Actualiza los roles de IAM de AWS
Para que GKE en AWS lea la configuración del proxy de AWS Secrets Manager, debes agregar el secretsmanager:GetSecretValue
al rol del plano de control y al rol del grupo de nodos del clúster.
Para agregar este permiso, agrégalo a tu política del plano de control y grupo de nodos. Para obtener más información, consulta Edita las políticas de IAM.
Crea un archivo de configuración de proxy
La configuración del proxy se almacena en un secreto de AWS Secrets Manager como una string JSON.
Puedes pasar esta configuración a la herramienta de línea de comandos de aws
como un archivo. En esta sección, se describe cómo crear ese archivo.
En la siguiente tabla, se describe el contenido de este archivo.
Campo | Descripción | Ejemplos | 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" "10.184.37.42" |
Sí |
httpsProxy |
Una URL del proxy para el tráfico encriptado y HTTPS. La URL httpProxy se usará si httpsProxy tiene un valor vacío. | "http://10.101.16.31:80"
|
Sí |
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 (por ejemplo, “.google.com”) indican que se requiere un subdominio. Un solo asterisco * ignora toda la configuración de proxy. | "1.2.3.4,10.0.0.0/16,example.com,.site.com" |
Sí |
A fin de crear el archivo de configuración, crea un archivo JSON que contenga valores para
httpProxy
,noProxy
y claveshttpsProxy
opcionales.{ "httpProxy": "AUTHENTICATION_URL", "httpsProxy": "AUTHENTICATION_URL", "noProxy": "NO_PROXY_ADDRESSES" }
Reemplaza lo siguiente:
AUTHENTICATION_URL
: URL codificada que contiene el nombre de usuario del proxy y la contraseñaNO_PROXY_ADDRESSES
: Lista separada por comas de bloques CIDR y URL, por ejemplo10.0.0.0/16,http://example.com
Guarda el archivo para usarlo en la siguiente sección.
Crea un secreto con estos datos de JSON como un secreto en AWS Secrets Manager con la herramienta de línea de comandos de
aws
.aws secretsmanager create-secret \ --name SECRET_NAME \ --secret-string file://PROXY_CONFIGURATION_FILE
Reemplaza lo siguiente:
SECRET_NAME
: El nombre del Secret nuevoPROXY_CONFIGURATION_FILE
: La ruta de acceso a tu archivo de configuración del proxy.
El resultado incluye el nombre del recurso de Amazon (ARN) y el contenido del secreto. Ahora puedes hacer referencia a este Secret cuando creas un clúster.
Crea un clúster que use un proxy
Si deseas configurar GKE on AWS para que use un proxy HTTP para la conectividad saliente, sigue estos pasos:
Sigue los pasos que se indican en Crea un clúster y pasa las marcas proxy-secret-arn
y proxy-secret-version-id
.
gcloud container aws clusters create CLUSTER_NAME \
--proxy-secret-arn=PROXY_SECRET_ARN \
--proxy-secret-version-id=PROXY_SECRET_VERSION \
Reemplaza lo siguiente:
CLUSTER_NAME
: Es el nombre del clústerPROXY_SECRET_ARN
: El ARN del secreto que contiene la configuración del proxy, por ejemplo,arn:aws::secretsmanager:us-east-2:111122223333:secret:example/ExampleSecret-jiObOV
PROXY_SECRET_VERSION
: El ID de la versión de los secretos, por ejemplo,EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
Actualiza la configuración del proxy
Puedes actualizar la configuración del proxy para un plano de control del clúster o un grupo de nodos. Para actualizar el ARN de configuración del proxy, primero debes actualizar el rol de IAM de AWS del plano de control o del grupo de nodos.
Actualiza los roles de IAM de AWS
Antes de cambiar el ARN en el que se almacena la configuración del proxy, debes confirmar que el rol del plano de control y el rol del grupo de nodos del clúster tengan acceso de lectura al ARN del secreto. Si tu declaración de IAM con el permiso secretsmanager:GetSecretValue
tiene un alcance de recursos de ARN específicos, agrega el nuevo ARN del secreto a esa lista antes de actualizar la configuración del proxy.
Actualiza la configuración del proxy del clúster
Para actualizar la configuración del proxy del clúster, usa la CLI de Google Cloud.
gcloud container aws clusters update CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--proxy-secret-arn=PROXY_SECRET_ARN \
--proxy-secret-version-id=PROXY_SECRET_VERSION
Reemplaza lo siguiente:
CLUSTER_NAME
: Es el nombre del clústerGOOGLE_CLOUD_LOCATION
: La región de Google Cloud compatible con la que se administra tu clústerPROXY_SECRET_ARN
: El ARN del secreto que contiene la configuración del proxyPROXY_SECRET_VERSION
: El ID de la versión de los secretos, por ejemplo,EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
Actualiza la configuración del proxy del grupo de nodos
Para actualizar la configuración del proxy de tu grupo de nodos, usa Google Cloud CLI.
gcloud container aws node-pools update NODE_POOL_NAME
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--proxy-secret-arn=PROXY_SECRET_ARN \
--proxy-secret-version-id=PROXY_SECRET_VERSION
Reemplaza lo siguiente:
NODE_POOL_NAME
: el nombre de tu grupo de nodosCLUSTER_NAME
: Es el nombre del clústerGOOGLE_CLOUD_LOCATION
: La región de Google Cloud compatible con la que se administra tu clústerPROXY_SECRET_ARN
: El ARN del secreto que contiene la configuración del proxyPROXY_SECRET_VERSION
: El ID de la versión de los secretos, por ejemplo,EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
Quitar la configuración del proxy
Puedes quitar la configuración del proxy del plano de control del clúster o de los grupos de nodos. Estas operaciones son independientes. Quitar la configuración del plano de control no la quita de los grupos de nodos del clúster.
Quita la configuración del proxy del plano de control
Para quitar la configuración del proxy del plano de control de tu clúster, usa Google Cloud CLI.
gcloud container aws clusters update CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--clear-proxy-config
Reemplaza lo siguiente:
CLUSTER_NAME
: Es el nombre del clústerGOOGLE_CLOUD_LOCATION
: Es la región de Google Cloud compatible con la que se administra el clúster, por ejemplo,us-west1
.
Quita la configuración del proxy del grupo de nodos
Para quitar la configuración del proxy de un grupo de nodos, usa Google Cloud CLI.
gcloud container aws node-pools update NODE_POOL_NAME
--cluster CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--clear-proxy-config
Reemplaza lo siguiente:
NODE_POOL_NAME
: el nombre de tu grupo de nodosCLUSTER_NAME
: Es el nombre del clústerGOOGLE_CLOUD_LOCATION
: Es la región de Google Cloud compatible con la que se administra el clúster, por ejemplo,us-west1
.
¿Qué sigue?
- Obtén más información sobre cómo crear un clúster.