Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, aprenderá a configurar clústeres de Azure Kubernetes Service (AKS) para usar un proxy HTTP para el acceso saliente a Internet.
Los clústeres de AKS implementados en redes virtuales administradas o personalizadas tienen determinadas dependencias salientes necesarias para funcionar correctamente, lo que creaba problemas en entornos que requieren acceso a Internet para enrutarse a través de proxies HTTP. Los nodos no tenían ninguna manera de arrancar la configuración, las variables de entorno y los certificados necesarios para acceder a los servicios de Internet.
La característica proxy HTTP agrega compatibilidad con el proxy HTTP a los clústeres de AKS y expone una interfaz sencilla que puede usar para proteger el tráfico de red requerido por AKS en entornos dependientes del proxy. Con esta característica, los nodos y pods de AKS están configurados para usar el proxy HTTP. La característica también permite la instalación de una entidad de certificación de confianza en los nodos como parte del arranque de un clúster. Es posible que las soluciones más complejas requieran la creación de una cadena de confianza para establecer comunicaciones protegidas a través de la red.
Limitaciones y consideraciones
No se admiten los siguientes escenarios:
- Diferentes configuraciones de proxy por grupo de nodos
- Autenticación de contraseña/usuario
- Entidades de certificación (CA) personalizadas para la comunicación del servidor de API
- Clústeres de AKS con grupos de nodos de Windows
- Grupos de nodos que usan conjuntos de disponibilidad de máquinas virtuales (VMAS)
- Uso de * como carácter comodín adjunto a un sufijo de dominio para noProxy
httpProxy, httpsProxy y trustedCa no tienen ningún valor de forma predeterminada. Los pods se insertan con las siguientes variables de entorno:
HTTP_PROXYhttp_proxyHTTPS_PROXYhttps_proxyNO_PROXYno_proxy
Para deshabilitar la inserción de las variables de entorno de proxy, debe anotar el pod con "kubernetes.azure.com/no-http-proxy-vars":"true".
Antes de empezar
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Introducción a Azure Cloud Shell.
Si prefieres ejecutar comandos de referencia CLI localmente, instala la CLI de Azure. Si estás utilizando Windows o macOS, considera ejecutar Azure CLI en un contenedor Docker. Para obtener más información, consulte Cómo ejecutar el Azure CLI en un contenedor de Docker.
Si estás utilizando una instalación local, inicia sesión en Azure CLI utilizando el comando az login. Para finalizar el proceso de autenticación, siga los pasos que se muestran en el terminal. Para ver otras opciones de inicio de sesión, consulte Autenticación en Azure mediante la CLI de Azure.
Cuando se le solicite, instale la extensión de la CLI de Azure en el primer uso. Para obtener más información sobre las extensiones, consulte Uso y administración de extensiones con la CLI de Azure.
Ejecute az version para ver la versión y las bibliotecas dependientes que están instaladas. Para actualizar a la versión más reciente, ejecute az upgrade.
Creación de un archivo de configuración con valores de proxy HTTP
Cree un archivo y proporcione valores para httpProxy, httpsProxy y noProxy. Si el entorno lo requiere, especifique un valor para trustedCa.
El esquema del archivo de configuración tiene el siguiente aspecto:
{
"httpProxy": "string",
"httpsProxy": "string",
"noProxy": [
"string"
],
"trustedCa": "string"
}
Revise los requisitos de cada parámetro:
-
httpProxy: dirección URL de proxy que se usará para crear conexiones HTTP fuera del clúster. El esquema de dirección URL debe serhttp. -
httpsProxy: dirección URL de proxy que se usará para crear conexiones HTTPS fuera del clúster. Si no se especifica, se usahttpProxypara las conexiones HTTP y HTTPS. -
noProxy: lista de nombres de dominio de destino, dominios, direcciones IP u otros CIDR de red para excluir el proxy. -
trustedCa: cadena que contiene el contenido del certificado de entidad de certificación alternativobase64 encoded. Actualmente solo se admite el formatoPEM.
Importante
Para la compatibilidad con los componentes basados en Go que forman parte del sistema de Kubernetes, el certificado debe admitir Subject Alternative Names(SANs) en lugar de los certificados de nombre común en desuso.
Hay diferencias en las aplicaciones sobre cómo cumplir con la variable de entorno http_proxy, https_proxy y no_proxy. Curl y Python no admiten CIDR en no_proxy, pero Ruby sí.
Entrada de ejemplo:
{
"httpProxy": "http://myproxy.server.com:8080",
"httpsProxy": "https://myproxy.server.com:8080",
"noProxy": [
"localhost",
"127.0.0.1"
],
"trustedCA": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUgvVENDQmVXZ0F3SUJB...S0tLS0="
}
Creación de un clúster con una configuración de proxy HTTP mediante la CLI de Azure
Puede configurar un clúster de AKS con una configuración de proxy HTTP durante la creación del clúster.
Use el comando y pase la
az aks createconfiguración como un archivo JSON.az aks create \ --name $clusterName \ --resource-group $resourceGroup \ --http-proxy-config aks-proxy-config.json \ --generate-ssh-keysEl clúster debe inicializarse con el proxy HTTP configurado en los nodos.
Compruebe que la configuración del proxy HTTP está en los pods y nodos comprobando que las variables de entorno contienen los valores adecuados para
http_proxy,https_proxyyno_proxymediante elkubectl describe podcomando .kubectl describe {any pod} -n kube-systemPara validar que las variables de proxy están establecidas en los pods, puede comprobar las variables de entorno presentes en los nodos.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Actualización de una configuración de proxy HTTP
Puede actualizar las configuraciones de proxy HTTP en clústeres existentes, entre las que se incluyen:
- Actualización de un clúster existente para habilitar el proxy HTTP y agregar una nueva configuración de proxy HTTP.
- Actualizar un clúster existente para cambiar una configuración de proxy HTTP.
Consideraciones sobre la actualización del proxy HTTP
El --http-proxy-config parámetro debe establecerse en un nuevo archivo JSON con valores actualizados para httpProxy, httpsProxy, noProxyy trustedCa si es necesario. La actualización inserta nuevas variables de entorno en pods con los nuevos valores httpProxy, httpsProxy o noProxy. Los pods deben girarse para que las aplicaciones lo detecten, porque los valores de las variables de entorno los inyecta un webhook de admisión mutante.
Nota:
Si cambia a un nuevo proxy, el nuevo proxy ya debe existir para que la actualización se realice correctamente. Una vez completada la actualización, puede eliminar el proxy anterior.
Actualización de un clúster para actualizar o habilitar el proxy HTTP
Habilite o actualice las configuraciones de proxy HTTP en un clúster existente mediante el
az aks updatecomando .Por ejemplo, supongamos que ha creado un nuevo archivo con la cadena codificada en base64 del nuevo certificado de autoridad certificadora llamado aks-proxy-config-2.json. Puede actualizar la configuración del proxy en el clúster con el siguiente comando:
az aks update --name $clusterName --resource-group $resourceGroup --http-proxy-config aks-proxy-config-2.json
Precaución
AKS reconfigura automáticamente todos los grupos de nodos del clúster al actualizar la configuración del proxy en el clúster mediante el comando az aks update. Puede usar los Presupuestos de Disrupción de Pods (PDB) para evitar la disrupción de pods críticos durante la reimagen.
Compruebe que la configuración del proxy HTTP está en los pods y nodos comprobando que las variables de entorno contienen los valores adecuados para
http_proxy,https_proxyyno_proxymediante elkubectl describe podcomando .kubectl describe {any pod} -n kube-systemPara validar que las variables de proxy están establecidas en los pods, puede comprobar las variables de entorno presentes en los nodos.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Deshabilitación del proxy HTTP en un clúster existente (versión preliminar)
Instala la extensión aks-preview
Instale la extensión
aks-previewAzure CLI mediante el comandoaz extension add.Importante
Las características en versión preliminar de AKS están disponibles a elección del usuario y en régimen de autoservicio. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y garantía limitada. Las versiones preliminares de AKS cuentan con soporte parcial por parte del servicio al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción. Para más información, consulte los siguientes artículos de soporte:
az extension add --name aks-previewActualiza a la última versión de la extensión mediante el comando
az extension update. Deshabilitar el proxy HTTP requiere un mínimo de 18.0.0b13.az extension update --name aks-preview
Registrar DisableHTTPProxyPreview marca de características
Registre la marca de características de
DisableHTTPProxyPreviewmediante el comandoaz feature register.az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewComprobar el estado del registro mediante el comando
az feature show. Tarda unos minutos en que el estado muestre Registrado.az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewCuando aparezca el estado Registrado, actualice el registro del proveedor de recursos Microsoft.ContainerService mediante el comando
az provider register.az provider register --namespace Microsoft.ContainerService
Actualización del clúster para deshabilitar el proxy HTTP (versión preliminar)
Actualice el clúster para deshabilitar el proxy HTTP mediante el comando
az aks updatecon la opción--disable-http-proxy.az aks update --name $clusterName --resource-group $resourceGroup --disable-http-proxy
Precaución
AKS reconfigura automáticamente todos los grupos de nodos del clúster al actualizar la configuración del proxy en el clúster mediante el comando az aks update. Puede usar los Presupuestos de Disrupción de Pods (PDB) para evitar la disrupción de pods críticos durante la reimagen.
Compruebe que el proxy HTTP está deshabilitado, validando que la configuración del proxy HTTP no está establecida en los pods y nodos mediante el comando
kubectl describe pod.kubectl describe {any pod} -n kube-systemPara validar que las variables de proxy no están establecidas en pods, puede comprobar las variables de entorno presentes en los nodos.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Volver a habilitar el proxy HTTP en un clúster existente
Al crear un clúster, el proxy HTTP está habilitado de forma predeterminada. Una vez deshabilitado el proxy HTTP en un clúster, la configuración del proxy se guarda en la base de datos, pero las variables de proxy se quitan de los pods y nodos.
Para volver a habilitar el proxy HTTP en un clúster existente, use el comando az aks update con el indicador --enable-http-proxy.
az aks update --name $clusterName --resource-group $resourceGroup --enable-http-proxy
Precaución
AKS reconfigura automáticamente todos los grupos de nodos del clúster al actualizar la configuración del proxy en el clúster mediante el comando az aks update. Puede usar los Presupuestos de Disrupción de Pods (PDB) para evitar la disrupción de pods críticos durante la reimagen.
Importante
Si tenía una configuración de proxy HTTP en el clúster antes de deshabilitarla, la configuración de proxy HTTP existente se aplica automáticamente al volver a habilitar el proxy HTTP en ese clúster. Se recomienda comprobar la configuración para asegurarse de que cumple los requisitos actuales antes de continuar. Si desea cambiar la configuración del proxy HTTP después de volver a habilitar el proxy HTTP, siga los pasos para actualizar la configuración del proxy HTTP en un clúster existente.
Configuración de una configuración de proxy HTTP mediante una plantilla de Azure Resource Manager (ARM)
Puede implementar un clúster de AKS con un proxy HTTP mediante una plantilla de ARM.
Revise los requisitos de cada parámetro:
-
httpProxy: dirección URL de proxy que se usará para crear conexiones HTTP fuera del clúster. El esquema de dirección URL debe serhttp. -
httpsProxy: dirección URL de proxy que se usará para crear conexiones HTTPS fuera del clúster. Si no se especifica, se usahttpProxypara las conexiones HTTP y HTTPS. -
noProxy: lista de nombres de dominio de destino, dominios, direcciones IP u otros CIDR de red para excluir el proxy. -
trustedCa: cadena que contiene el contenido del certificado de entidad de certificación alternativobase64 encoded. Actualmente solo se admite el formatoPEM.
Importante
Para la compatibilidad con los componentes basados en Go que forman parte del sistema de Kubernetes, el certificado debe admitir
Subject Alternative Names (SANs)en lugar de los certificados de nombre común en desuso.Hay diferencias en las aplicaciones sobre cómo cumplir con la variable de entorno
http_proxy,https_proxyyno_proxy. Curl y Python no admiten CIDR enno_proxy, pero Ruby sí.-
Cree una plantilla con parámetros de proxy HTTP. En la plantilla, proporcione valores para
httpProxy,httpsProxyynoProxy. Si fuera necesario, especifique también un valor paratrustedCa. El mismo esquema usado para la implementación de la CLI existe en la definiciónMicrosoft.ContainerService/managedClustersen"properties", como se muestra en el ejemplo siguiente:"properties": { ..., "httpProxyConfig": { "enabled": "true", "httpProxy": "string", "httpsProxy": "string", "noProxy": [ "string" ], "trustedCa": "string" } }Implemente la plantilla de ARM con la configuración del proxy HTTP. El clúster debe inicializarse con el proxy HTTP configurado en los nodos.
Actualización de una configuración de proxy HTTP
Puede actualizar las configuraciones de proxy HTTP en clústeres existentes, entre las que se incluyen:
- Actualización de un clúster existente para habilitar el proxy HTTP y agregar una nueva configuración de proxy HTTP.
- Actualizar un clúster existente para cambiar una configuración de proxy HTTP.
Consideraciones sobre la actualización del proxy HTTP
El --http-proxy-config parámetro debe establecerse en un nuevo archivo JSON con valores actualizados para httpProxy, httpsProxy, noProxyy trustedCa si es necesario. La actualización inserta nuevas variables de entorno en pods con los nuevos valores httpProxy, httpsProxy o noProxy. Los pods deben girarse para que las aplicaciones lo detecten, porque los valores de las variables de entorno los inyecta un webhook de admisión mutante.
Nota:
Si cambia a un nuevo proxy, el nuevo proxy ya debe existir para que la actualización se realice correctamente. Una vez completada la actualización, puede eliminar el proxy anterior.
Actualización de una plantilla de ARM para configurar el proxy HTTP
En la plantilla, proporcione nuevos valores para
httpProxy,httpsProxyynoProxy. Si fuera necesario, especifique también un valor paratrustedCa.El mismo esquema usado para la implementación de la CLI existe en la definición
Microsoft.ContainerService/managedClustersen"properties", como se muestra en el ejemplo siguiente:"properties": { ..., "httpProxyConfig": { "enabled": "true", "httpProxy": "string", "httpsProxy": "string", "noProxy": [ "string" ], "trustedCa": "string" } }Implemente la plantilla de ARM con la configuración actualizada del proxy HTTP.
Precaución
AKS reconfigura automáticamente todos los grupos de nodos del clúster al actualizar la configuración del proxy en el clúster mediante el comando az aks update. Puede usar los Presupuestos de Disrupción de Pods (PDB) para evitar la disrupción de pods críticos durante la reimagen.
Compruebe que la configuración del proxy HTTP está en los pods y nodos comprobando que las variables de entorno contienen los valores adecuados para
http_proxy,https_proxyyno_proxymediante elkubectl describe podcomando .kubectl describe {any pod} -n kube-systemPara validar que las variables de proxy están establecidas en los pods, puede comprobar las variables de entorno presentes en los nodos.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Deshabilitación del proxy HTTP en un clúster existente mediante una plantilla de ARM (versión preliminar)
Instala la extensión aks-preview
Instale la extensión
aks-previewAzure CLI mediante el comandoaz extension add.Importante
Las características en versión preliminar de AKS están disponibles a elección del usuario y en régimen de autoservicio. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y garantía limitada. Las versiones preliminares de AKS cuentan con soporte parcial por parte del servicio al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción. Para más información, consulte los siguientes artículos de soporte:
az extension add --name aks-previewActualiza a la última versión de la extensión mediante el comando
az extension update. Deshabilitar el proxy HTTP requiere un mínimo de 18.0.0b13.az extension update --name aks-preview
Registrar DisableHTTPProxyPreview marca de características
Registre la marca de características de
DisableHTTPProxyPreviewmediante el comandoaz feature register.az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewComprobar el estado del registro mediante el comando
az feature show. Tarda unos minutos en que el estado muestre Registrado.az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewCuando aparezca el estado Registrado, actualice el registro del proveedor de recursos Microsoft.ContainerService mediante el comando
az provider register.az provider register --namespace Microsoft.ContainerService
Actualización del clúster para deshabilitar el proxy HTTP
Actualice la plantilla ARM del clúster para deshabilitar el proxy HTTP estableciendo
enabledenfalse. El mismo esquema usado para la implementación de la CLI existe en la definiciónMicrosoft.ContainerService/managedClustersen"properties", como se muestra en el ejemplo siguiente:"properties": { ..., "httpProxyConfig": { "enabled": "false", } }Implemente la plantilla de ARM con el proxy HTTP deshabilitado.
Precaución
AKS reconfigura automáticamente todos los grupos de nodos del clúster al actualizar la configuración del proxy en el clúster mediante el comando az aks update. Puede usar los Presupuestos de Disrupción de Pods (PDB) para evitar la disrupción de pods críticos durante la reimagen.
Compruebe que el proxy HTTP está deshabilitado validando que la configuración del proxy HTTP no está establecida en los pods y nodos mediante el
kubectl describe podcomando .kubectl describe {any pod} -n kube-systemPara validar que las variables de proxy no están establecidas en pods, puede comprobar las variables de entorno presentes en los nodos.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Volver a habilitar el proxy HTTP en un clúster existente
Al crear un clúster, el proxy HTTP está habilitado de forma predeterminada. Una vez deshabilitado el proxy HTTP en un clúster, ya no puede agregar configuraciones de proxy HTTP a ese clúster.
Si desea volver a habilitar el proxy HTTP, siga los pasos para actualizar una configuración de proxy HTTP mediante una plantilla de ARM.
Proxy HTTP del complemento Istio para servicios externos
Si usa el complemento de malla de servicio basado en Istio para AKS, debe crear una entrada de servicio para permitir que las aplicaciones de la malla accedan a recursos externos o no clúster a través del proxy HTTP.
Por ejemplo:
apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
name: proxy
spec:
hosts:
- my-company-proxy.com # ignored
addresses:
- $PROXY_IP/32
ports:
- number: $PROXY_PORT
name: tcp
protocol: TCP
location: MESH_EXTERNAL
Cree un archivo y proporcione valores para
PROXY_IPyPROXY_PORT.Puede implementar la entrada de servicio mediante:
kubectl apply -f service_proxy.yaml
Configuración del complemento de supervisión
El proxy HTTP con el complemento de supervisión admite las siguientes configuraciones:
- Proxy de salida sin autenticación
- Proxy de salida con certificado de confianza para el punto de conexión de Log Analytics
No se admite la siguiente configuración:
- Métricas personalizadas y características de alertas recomendadas al usar un proxy con certificados de confianza
Pasos siguientes
Para obtener más información sobre los requisitos de red de los clústeres de AKS, consulte Control del tráfico de salida para los nodos de clúster en AKS.