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.
Las organizaciones suelen tener estrictos requisitos de seguridad y cumplimiento para regular el tráfico de red de salida (saliente) desde un clúster para eliminar riesgos de filtración de datos. De forma predeterminada, los clústeres estándar de SKU de Azure Kubernetes Service (AKS) tienen acceso a Internet saliente sin restricciones. Este nivel de acceso a la red permite que los nodos y servicios que ejecuta accedan a recursos externos según sea necesario. Si desea restringir el tráfico de salida, es necesario el acceso a un número limitado de puertos y direcciones para mantener las tareas de mantenimiento del clúster en buen estado. En el documento conceptual sobre las reglas de FQDN y de red de salida para clústeres de AKS se proporciona una lista de los puntos de conexión necesarios para el clúster de AKS y sus complementos y características opcionales.
Una solución común para restringir el tráfico saliente del clúster es usar un dispositivo de firewall para restringir el tráfico en función de las reglas de firewall. El firewall es aplicable cuando la aplicación requiere acceso saliente, pero cuando se deben inspeccionar y proteger las solicitudes salientes. La configuración manual de un firewall con reglas de salida necesarias y FQDN es un proceso complicado, especialmente si el único requisito es crear un clúster de AKS aislado sin dependencias salientes para el arranque del clúster.
Para reducir el riesgo de filtración de datos, el clúster aislado de red permite arrancar el clúster de AKS sin dependencias de red salientes, incluso para capturar componentes o imágenes del clúster de Microsoft Artifact Registry (MAR). El operador de clúster podría configurar incrementalmente el tráfico saliente permitido para cada escenario que quiera habilitar. En este artículo se describen los pasos para crear un clúster aislado de red.
Antes de empezar
- Lea la introducción conceptual de esta característica, que proporciona una explicación de cómo funcionan los clústeres aislados de red. En el artículo de información general también:
- Explica dos opciones para el recurso de Azure Container Registry (ACR) privado que se usa para el arranque del clúster: ACR administrado por AKS o bring-your-own ACR.
- Explica dos modos privados de clúster para crear acceso privado al servidor de API: basado en vínculo privado o integración con Vnet del servidor de API.
- Explica los dos tipos de salida para el control de egreso del clúster:
none
oblock
(versión preliminar). - Describe las limitaciones actuales de los clústeres aislados de red.
Nota:
El tipo de salida none
está disponible con carácter general.
El tipo de salida block
está en versión preliminar.
Importante
Las características en versión preliminar de AKS están disponibles como opción de participación y 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 la garantía limitada. Las versiones preliminares de AKS reciben cobertura parcial del soporte 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:
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Introducción a Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. para obtener más información, consulte ejecución de la cli de azure en un contenedor de docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Autenticación en Azure mediante la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. 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 buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
- En este artículo se requiere la versión 2.71.0 o posterior de la CLI de Azure. Si usa Azure Cloud Shell, ya está instalada allí la versión más reciente.
- Debe instalar la versión
aks-preview
9.0.0b2 o posterior de la extensión CLI de Azureblock
si utiliza el tipo de salida (versión preliminar).- Si aún no tiene la
aks-preview
extensión, instálela mediante elaz extension add
comando.az extension add --name aks-preview
- Si ya tiene la
aks-preview
extensión, actualícela para asegurarse de que tiene la versión más reciente mediante elaz extension update
comando.az extension update --name aks-preview
- Si aún no tiene la
- Los clústeres aislados de red se admiten en clústeres de AKS mediante Kubernetes versión 1.30 o posterior.
- Si elige usar la opción Bring your own (BYO) Azure Container Registry (ACR), debe asegurarse de que ACR es el nivel de servicio de SKU Premium.
- Si usa un clúster aislado de red configurado con la integración con red virtual de API Server, debe seguir los requisitos previos e instrucciones de este documento.
Implementación de un clúster aislado de red con ACR administrado por AKS
AKS crea, administra y reconcilia un recurso de ACR en esta opción. No es necesario asignar permisos ni administrar el ACR. AKS administra las reglas de caché, el vínculo privado y el punto de conexión privado que se usan en el clúster aislado de red.
Creación de un clúster aislado de red
Al crear un clúster de AKS aislado de red, puede elegir uno de los siguientes modos de clúster privado: basado en vínculo privado o integración del servidor de API con Vnet.
Independientemente del modo que seleccione, debe establecer los parámetros --bootstrap-artifact-source
y --outbound-type
.
--bootstrap-artifact-source
se puede establecer en Direct
o Cache
correspondiendo al uso de MAR directo (no aislado de red) y ACR privado (aislado de red) para la extracción de imágenes respectivamente.
--outbound-type parameter
se puede establecer en none
o block
(versión preliminar). Si el tipo de salida se establece en none
, AKS no configura ninguna conexión saliente para el clúster, lo que permite al usuario configurarlas personalmente. Si el tipo de salida se establece en block
, se bloquean todas las conexiones salientes.
Basado en vínculo privado
Cree un clúster de red aislada basada en vínculos privados mediante la ejecución del comando az aks create con los parámetros --bootstrap-artifact-source
, --enable-private-cluster
y --outbound-type
.
az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --kubernetes-version 1.30.3 --bootstrap-artifact-source Cache --outbound-type none --network-plugin azure --enable-private-cluster
Integración con red virtual de un servidor de API
Cree un clúster de AKS aislado de red configurado con la integración con red virtual del servidor de API ejecutando el comando az aks create con los parámetros --bootstrap-artifact-source
, --enable-private-cluster
, --enable-apiserver-vnet-integration
y --outbound-type
.
az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --kubernetes-version 1.30.3 --bootstrap-artifact-source Cache --outbound-type none --network-plugin azure --enable-private-cluster --enable-apiserver-vnet-integration
Actualización de un clúster de AKS existente al tipo aislado de red
Si prefiere habilitar el aislamiento de red en un clúster de AKS existente en lugar de crear un nuevo clúster, use el comando az aks update.
Para habilitar la característica aislada de red en un clúster de AKS existente, ejecute primero el siguiente comando para actualizar bootstrap-artifact-source
:
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache
A continuación, debe volver a crear una imagen manual de todos los grupos de nodos existente:
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Nota:
Debe asegurarse de que el saliente existe hasta que se complete la primera imagen de nuevo. Para comprobar si se completa la imagen de nuevo, ejecute:
NODEPOOLS=$(az aks nodepool list \
--resource-group "${RESOURCE_GROUP}" \
--cluster-name "${AKS_NAME}" \
--query "[].name" -o tsv)
for NODEPOOL in $NODEPOOLS; do
echo "Waiting for node pool $NODEPOOL to finish upgrading..."
az aks nodepool wait \
--resource-group "${RESOURCE_GROUP}" \
--cluster-name "${AKS_NAME}" \
--name "$NODEPOOL" \
--updated
echo "Node pool $NODEPOOL upgrade succeeded."
done
Espere y asegúrese de que se completa la imagen de imagen y, a continuación, ejecute el siguiente comando para actualizar outbound-type
:
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --outbound-type none
Tenga en cuenta que debe volver a crear una imagen manual de todos los grupos de nodos existentes de nuevo:
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Importante
Recuerde cambiar la imagen de los grupos de nodos del clúster después de habilitar el modo de aislamiento de red para un clúster existente. De lo contrario, la característica no surtirá efecto para el clúster.
Implementación de un clúster aislado de red con BYO ACR
AKS admite la incorporación de su propio ACR (BYO ACR). Para admitir el escenario de BYO ACR, debe configurar un punto de conexión privado de ACR y una zona DNS privada antes de crear el clúster de AKS.
Los pasos siguientes muestran cómo preparar estos recursos:
- Red virtual personalizada y subredes para AKS y ACR.
- ACR, regla de caché de ACR, punto de conexión privado y zona DNS privada.
- Identidad del plano de control personalizado e identidad de kubelet.
Paso 1: Crear la red virtual y las subredes
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
az network vnet create --resource-group ${RESOURCE_GROUP} --name ${VNET_NAME} --address-prefixes 192.168.0.0/16
az network vnet subnet create --name ${AKS_SUBNET_NAME} --vnet-name ${VNET_NAME} --resource-group ${RESOURCE_GROUP} --address-prefixes 192.168.1.0/24
SUBNET_ID=$(az network vnet subnet show --name ${AKS_SUBNET_NAME} --vnet-name ${VNET_NAME} --resource-group ${RESOURCE_GROUP} --query 'id' --output tsv)
az network vnet subnet create --name ${ACR_SUBNET_NAME} --vnet-name ${VNET_NAME} --resource-group ${RESOURCE_GROUP} --address-prefixes 192.168.2.0/24 --private-endpoint-network-policies Disabled
Paso 2: Deshabilitar la conectividad saliente de red virtual (opcional)
Hay varias maneras de deshabilitar la conectividad saliente de la red virtual.
Paso 3: Crear el ACR y habilitación de la caché de artefactos
Cree el ACR con el vínculo privado.
az acr create --resource-group ${RESOURCE_GROUP} --name ${REGISTRY_NAME} --sku Premium --public-network-enabled false REGISTRY_ID=$(az acr show --name ${REGISTRY_NAME} -g ${RESOURCE_GROUP} --query 'id' --output tsv)
Cree una regla de caché de ACR siguiendo el siguiente comando para permitir a los usuarios almacenar en caché imágenes de contenedor y archivos binarios MAR en el nuevo ACR; tenga en cuenta que el nombre de la regla de caché y los nombres de repositorio deben estar estrictamente alineados con la guía siguiente.
az acr cache create -n aks-managed-mcr -r ${REGISTRY_NAME} -g ${RESOURCE_GROUP} --source-repo "mcr.microsoft.com/*" --target-repo "aks-managed-repository/*"
Nota:
Con BYO ACR, es su responsabilidad asegurarse de que la regla de caché de ACR se crea y mantiene correctamente como se indicó anteriormente. Este paso es fundamental para la creación, el funcionamiento y la actualización del clúster. Esta regla de caché NO debe modificarse.
Paso 4: Crear un punto de conexión privado para ACR
az network private-endpoint create --name myPrivateEndpoint --resource-group ${RESOURCE_GROUP} --vnet-name ${VNET_NAME} --subnet ${ACR_SUBNET_NAME} --private-connection-resource-id ${REGISTRY_ID} --group-id registry --connection-name myConnection
NETWORK_INTERFACE_ID=$(az network private-endpoint show --name myPrivateEndpoint --resource-group ${RESOURCE_GROUP} --query 'networkInterfaces[0].id' --output tsv)
REGISTRY_PRIVATE_IP=$(az network nic show --ids ${NETWORK_INTERFACE_ID} --query "ipConfigurations[?privateLinkConnectionProperties.requiredMemberName=='registry'].privateIPAddress" --output tsv)
DATA_ENDPOINT_PRIVATE_IP=$(az network nic show --ids ${NETWORK_INTERFACE_ID} --query "ipConfigurations[?privateLinkConnectionProperties.requiredMemberName=='registry_data_$LOCATION'].privateIPAddress" --output tsv)
Paso 5: Crear una zona DNS privada y agregar registros
Cree una zona DNS privada denominada privatelink.azurecr.io
. Agregue los registros del punto de conexión REST del registro {REGISTRY_NAME}.azurecr.io
y el punto de conexión de datos del registro {REGISTRY_NAME}.{REGISTRY_LOCATION}.data.azurecr.io
.
az network private-dns zone create --resource-group ${RESOURCE_GROUP} --name "privatelink.azurecr.io"
az network private-dns link vnet create --resource-group ${RESOURCE_GROUP} --zone-name "privatelink.azurecr.io" --name MyDNSLink --virtual-network ${VNET_NAME} --registration-enabled false
az network private-dns record-set a create --name ${REGISTRY_NAME} --zone-name "privatelink.azurecr.io" --resource-group ${RESOURCE_GROUP}
az network private-dns record-set a add-record --record-set-name ${REGISTRY_NAME} --zone-name "privatelink.azurecr.io" --resource-group ${RESOURCE_GROUP} --ipv4-address ${REGISTRY_PRIVATE_IP}
az network private-dns record-set a create --name ${REGISTRY_NAME}.${LOCATION}.data --zone-name "privatelink.azurecr.io" --resource-group ${RESOURCE_GROUP}
az network private-dns record-set a add-record --record-set-name ${REGISTRY_NAME}.${LOCATION}.data --zone-name "privatelink.azurecr.io" --resource-group ${RESOURCE_GROUP} --ipv4-address ${DATA_ENDPOINT_PRIVATE_IP}
Paso 6: Crear identidades del plano de control y de kubelet
Identidad del plano de control
az identity create --name ${CLUSTER_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP}
CLUSTER_IDENTITY_RESOURCE_ID=$(az identity show --name ${CLUSTER_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP} --query 'id' -o tsv)
CLUSTER_IDENTITY_PRINCIPAL_ID=$(az identity show --name ${CLUSTER_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP} --query 'principalId' -o tsv)
Identidad de kubelet
az identity create --name ${KUBELET_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP}
KUBELET_IDENTITY_RESOURCE_ID=$(az identity show --name ${KUBELET_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP} --query 'id' -o tsv)
KUBELET_IDENTITY_PRINCIPAL_ID=$(az identity show --name ${KUBELET_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP} --query 'principalId' -o tsv)
Concesión de permisos AcrPull para la identidad de kubelet
az role assignment create --role AcrPull --scope ${REGISTRY_ID} --assignee-object-id ${KUBELET_IDENTITY_PRINCIPAL_ID} --assignee-principal-type ServicePrincipal
Después de configurar estos recursos, puede continuar con la creación del clúster de AKS aislado de red con BYO ACR.
Paso 7: Creación de un clúster aislado de red mediante BYO ACR
Al crear un clúster aislado de red, puede elegir uno de los siguientes modos de clúster privado: integración con Vnet del servidor de API o basado en vínculo privado.
Independientemente del modo que seleccione, debe establecer los parámetros --bootstrap-artifact-source
y --outbound-type
.
--bootstrap-artifact-source
se puede establecer en Direct
o Cache
correspondientes al uso directo del Registro de artefactos Microsoft (MAR) (NO aislado de red) y ACR privado (aislado de red) para las extracción de imágenes, respectivamente.
--outbound-type parameter
se puede establecer en none
o block
(versión preliminar). Si el tipo de salida se establece en none
, AKS no configura ninguna conexión saliente para el clúster, lo que permite al usuario configurarlas personalmente. Si el tipo de salida se establece en block
, se bloquean todas las conexiones salientes.
Basado en vínculo privado
Cree un clúster aislado de red basado en vínculo privado que acceda a ACR mediante la ejecución del comando az aks create con los parámetros necesarios.
az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --kubernetes-version 1.30.3 --vnet-subnet-id ${SUBNET_ID} --assign-identity ${CLUSTER_IDENTITY_RESOURCE_ID} --assign-kubelet-identity ${KUBELET_IDENTITY_RESOURCE_ID} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id ${REGISTRY_ID} --outbound-type none --network-plugin azure --enable-private-cluster
Integración con red virtual de un servidor de API
En el caso de un clúster aislado de red configurado con la integración de red virtual del servidor de API, cree primero una subred y asigne el rol correcto con los siguientes comandos:
az network vnet subnet create --name ${APISERVER_SUBNET_NAME} --vnet-name ${VNET_NAME} --resource-group ${RESOURCE_GROUP} --address-prefixes 192.168.3.0/24
export APISERVER_SUBNET_ID=$(az network vnet subnet show --resource-group ${RESOURCE_GROUP} --vnet-name ${VNET_NAME} --name ${APISERVER_SUBNET_NAME} --query id -o tsv)
az role assignment create --scope ${APISERVER_SUBNET_ID} --role "Network Contributor" --assignee-object-id ${CLUSTER_IDENTITY_PRINCIPAL_ID} --assignee-principal-type ServicePrincipal
Cree un clúster de aislado de red configurado con la integración con red virtual del servidor de API y acceda a ACR mediante la ejecución del comando az aks create con los parámetros necesarios.
az aks create --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --kubernetes-version 1.30.3 --vnet-subnet-id ${SUBNET_ID} --assign-identity ${CLUSTER_IDENTITY_RESOURCE_ID} --assign-kubelet-identity ${KUBELET_IDENTITY_RESOURCE_ID} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id ${REGISTRY_ID} --outbound-type none --network-plugin azure --enable-apiserver-vnet-integration --apiserver-subnet-id ${APISERVER_SUBNET_ID}
Actualización de un clúster de AKS ya existente
Si prefiere habilitar el aislamiento de red en un clúster de AKS existente en lugar de crear un nuevo clúster, use el comando az aks update.
Al crear el punto de conexión privado y la zona DNS privada para BYO ACR, use la red virtual y las subredes existentes del clúster de AKS existente. Al asignar el permiso AcrPull a la identidad de kubelet, use la identidad de kubelet existente del clúster de AKS existente.
Para habilitar la característica aislada de red en un clúster de AKS existente, ejecute primero el siguiente comando para actualizar bootstrap-artifact-source
:
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id ${REGISTRY_ID}
A continuación, debe volver a crear una imagen manual de todos los grupos de nodos existente:
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Nota:
Debe asegurarse de que el saliente existe hasta que se complete la primera imagen de nuevo. Para comprobar si se completa la imagen de nuevo, ejecute:
NODEPOOLS=$(az aks nodepool list \
--resource-group "${RESOURCE_GROUP}" \
--cluster-name "${AKS_NAME}" \
--query "[].name" -o tsv)
for NODEPOOL in $NODEPOOLS; do
echo "Waiting for node pool $NODEPOOL to finish upgrading..."
az aks nodepool wait \
--resource-group "${RESOURCE_GROUP}" \
--cluster-name "${AKS_NAME}" \
--name "$NODEPOOL" \
--updated
echo "Node pool $NODEPOOL upgrade succeeded."
done
Espere y asegúrese de que se completa la imagen de imagen y, a continuación, ejecute el siguiente comando para actualizar outbound-type
:
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --outbound-type none
Tenga en cuenta que debe volver a crear una imagen manual de todos los grupos de nodos existentes de nuevo:
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Importante
Recuerde cambiar la imagen de los grupos de nodos del clúster después de habilitar la característica de clúster aislado de red. De lo contrario, la característica no surtirá efecto para el clúster.
Actualización del identificador de ACR
Es posible actualizar el ACR privado que se usa con un clúster aislado de red. Para identificar el identificador de recurso de ACR, use el comando az aks show
.
az aks show --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME}
Para actualizar el identificador de ACR, ejecute el comando az aks update
con los parámetros --bootstrap-artifact-source
y --bootstrap-container-registry-resource-id
.
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Cache --bootstrap-container-registry-resource-id <New BYO ACR resource ID>
Al actualizar el identificador de ACR en un clúster existente, debe volver a crear una imagen manual de todos los nodos existentes.
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Importante
Recuerde cambiar la imagen de los grupos de nodos del clúster después de habilitar la característica de clúster aislado de red. De lo contrario, la característica no surtirá efecto para el clúster.
Validación de que el clúster aislado de red está habilitado
Para validar que la característica de clúster aislado de red está habilitada, use el comando az aks show
az aks show --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME}
En la salida siguiente se muestra que la característica está habilitada, en función de los valores de la propiedad outboundType
(ninguno o bloqueado) y la propiedad artifactSource
(almacenado en caché).
"kubernetesVersion": "1.30.3",
"name": "myAKSCluster"
"type": "Microsoft.ContainerService/ManagedClusters"
"properties": {
...
"networkProfile": {
...
"outboundType": "none",
...
},
...
"bootstrapProfile": {
"artifactSource": "Cache",
"containerRegistryId": "/subscriptions/my-subscription-id/my-node-resource-group-name/providers/Microsoft.ContainerRegistry/registries/my-registry-name"
},
...
}
Deshabilitación del clúster aislado de red
Deshabilite la característica de clúster aislado de red ejecutando el comando az aks update
con los parámetros --bootstrap-artifact-source
y --outbound-type
.
az aks update --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --bootstrap-artifact-source Direct --outbound-type LoadBalancer
Al deshabilitar la característica en un clúster existente, debe volver a crear una imagen manual de todos los nodos existentes.
az aks upgrade --resource-group ${RESOURCE_GROUP} --name ${AKS_NAME} --node-image-only
Importante
Recuerde cambiar la imagen de los grupos de nodos del clúster después de deshabilitar la característica de clúster aislado de red. De lo contrario, la característica no surtirá efecto para el clúster.
Solución de problemas
Si tiene problemas, como errores en la extracción de imágenes, consulte Solución de problemas de clústeres de Azure Kubernetes Service (AKS) aislados de red.
Pasos siguientes
Si desea configurar la configuración de restricción de salida mediante Azure Firewall, visite Control del tráfico de salida mediante Azure Firewall en AKS.
Si quiere restringir cómo se comunican los pods entre sí y con las restricciones de tráfico horizontal de derecha a izquierda en el clúster, vea Protección del tráfico entre pods mediante directivas de red en AKS.
Azure Kubernetes Service