Creación de un clúster de Azure Kubernetes Service con API Server VNet Integration (versión preliminar)

Un clúster de Azure Kubernetes Service (AKS) configurado con API Server VNet Integration proyecta el punto de conexión del servidor de API directamente en una subred delegada de la red virtual donde se implementa AKS. API Server VNet Integration permite la comunicación de red entre el servidor de API y los nodos del clúster sin necesidad de ningún vínculo privado o túnel. El servidor de API está disponible detrás de una dirección IP virtual de equilibrador de carga interno en la subred delegada, que los nodos estarán configurados para usar. Mediante API Server VNet Integration, puede asegurarse de que el tráfico de red entre el servidor de API y los grupos de nodos permanece solo en la red privada.

Conectividad del servidor de API

El plano de control o el servidor de la API están en una suscripción de Azure administrada mediante AKS. El grupo de clústeres o nodos se encuentra en la suscripción de Azure. El servidor y las máquinas virtuales que componen los nodos del clúster se pueden comunicar entre sí mediante la dirección IP virtual del servidor de API y las direcciones IP del pod que se proyectan en la subred delegada.

API Server VNet Integration se admite en clústeres públicos y privados. Puede agregar o quitar el acceso público después del aprovisionamiento del clúster. A diferencia de los clústeres integrados que no son de red virtual, los nodos del agente siempre se comunican directamente con la dirección IP privada de la dirección IP del equilibrador de carga interno (ILB) del servidor de API sin usar DNS. Todo el tráfico del nodo al servidor de API se mantiene en redes privadas y no se requiere ningún túnel para la conectividad del servidor de API al nodo. Los clientes fuera del clúster que necesitan comunicarse con el servidor de API pueden hacerlo normalmente si está habilitado el acceso a la red pública. Si el acceso a la red pública está deshabilitado, debe seguir la misma metodología de configuración de DNS privada que los clústeres privados estándar.

Disponibilidad en regiones

API Server VNet Integration está disponible en todas las regiones públicas de Azure.

Requisitos previos

  • CLI de Azure con la extensión aks-preview 0.5.97 o posterior.
  • Si usa ARM o la API REST, la versión de la API de AKS debe ser 2022-04-02-preview o posterior.

Instalación de la versión preliminar de la extensión de la CLI de Azure en versión preliminar de AKS

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

  • Instale la extensión aks-preview mediante el comando az extension add.

    az extension add --name aks-preview
    
  • Actualiza a la última versión de la extensión publicada mediante el comando az extension update.

    az extension update --name aks-preview
    

Registro de la marca de característica "EnableAPIServerVnetIntegrationPreview"

  1. Registre la marca de características de EnableAPIServerVnetIntegrationPreview mediante el comando az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview"
    

    Tarda unos minutos en que el estado muestre Registrado.

  2. Comprobar el estado del registro mediante el comando az feature show:

    az feature show --namespace "Microsoft.ContainerService" --name "EnableAPIServerVnetIntegrationPreview"
    
  3. Cuando 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
    

Creación de un clúster de AKS con API Server VNet Integration mediante una red virtual administrada

Se pueden configurar los clústeres de AKS con API Server VNet Integration en una red virtual administrada o en el modo de aportación de la propia red virtual. Se pueden crear como clústeres públicos (con acceso al servidor de API disponible a través de una dirección IP pública) o clústeres privados (donde el servidor de API solo es accesible a través de la conectividad de red virtual privada). También se puede alternar entre un estado público y privado sin volver a implementar el clúster.

Crear un grupo de recursos

  • Cree un grupo de recursos con el comando az group create.

    az group create -l westus2 -n <resource-group>
    

Implementación de un clúster público

  • Implemente un clúster de AKS público con API Server VNet Integration para la red virtual administrada mediante el comando az aks create con la marca --enable-api-server-vnet-integration.

    az aks create -n <cluster-name> \
        -g <resource-group> \
        -l <location> \
        --network-plugin azure \
        --enable-apiserver-vnet-integration
    

Implementación de un clúster privado

  • Implemente un clúster de AKS privado con API Server VNet Integration para la red virtual administrada mediante el comando az aks create con las marcas --enable-api-server-vnet-integration y --enable-private-cluster.

    az aks create -n <cluster-name> \
        -g <resource-group> \
        -l <location> \
        --network-plugin azure \
        --enable-private-cluster \
        --enable-apiserver-vnet-integration
    

Crear un clúster de AKS privado con API Server VNet Integration mediante la aportación de la propia red virtual

Al usar la red traiga su propia red, debe crear y delegar una subred del servidor de API en Microsoft.ContainerService/managedClusters, lo que concede a los servicios de AKS permisos para insertar los pods del servidor de API y el equilibrador de carga interno en esa subred. No puede usar la subred para ninguna otra carga de trabajo, pero puede usarla para varios clústeres de AKS ubicados en la misma red virtual. El tamaño mínimo admitido de subred del servidor de API es /28.

La identidad del clúster necesita permisos para la subred del servidor de API y la subred del nodo. La falta de permisos en la subred del servidor de API puede provocar un error de aprovisionamiento.

Advertencia

Un clúster de AKS reserva al menos 9 direcciones IP en el espacio de direcciones de la subred. La ejecución de direcciones IP puede impedir el escalado del servidor de API y provocar una interrupción del servidor de API.

Crear un grupo de recursos

az group create -l <location> -n <resource-group>

Creación de una red virtual

  1. Cree una red virtual mediante el comando az network vnet create.

    az network vnet create -n <vnet-name> \
    -g <resource-group> \
    -l <location> \
    --address-prefixes 172.19.0.0/16
    
  2. Cree una subred de servidor de API mediante el comando az network vnet subnet create.

    az network vnet subnet create -g <resource-group> \
    --vnet-name <vnet-name> \
    --name <apiserver-subnet-name> \
    --delegations Microsoft.ContainerService/managedClusters \
    --address-prefixes 172.19.0.0/28
    
  3. Cree una subred de clúster mediante el comando az network vnet subnet create.

    az network vnet subnet create -g <resource-group> \
    --vnet-name <vnet-name> \
    --name <cluster-subnet-name> \
    --address-prefixes 172.19.1.0/24
    

Creación de una identidad administrada y concesión de permisos en la red virtual

  1. Crear una identidad administrada usando el comando az identity create.

    az identity create -g <resource-group> -n <managed-identity-name> -l <location>
    
  2. Asigne el rol Colaborador de red a la subred del servidor de API mediante el comando az role assignment create.

    az role assignment create --scope <apiserver-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    
  3. Asigne el rol Colaborador de red a la subred del clúster mediante el comando az role assignment create.

    az role assignment create --scope <cluster-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    

Implementación de un clúster público

  • Implemente un clúster de AKS público con API Server VNet Integration mediante el comando az aks create con la marca --enable-api-server-vnet-integration.

    az aks create -n <cluster-name> \
    -g <resource-group> \
    -l <location> \
    --network-plugin azure \
    --enable-apiserver-vnet-integration \
    --vnet-subnet-id <cluster-subnet-resource-id> \
    --apiserver-subnet-id <apiserver-subnet-resource-id> \
    --assign-identity <managed-identity-resource-id>
    

Implementación de un clúster privado

  • Implemente un clúster de AKS privado con API Server VNet Integration mediante el comando az aks create con las marcas --enable-api-server-vnet-integration y --enable-private-cluster.

    az aks create -n <cluster-name> \
    -g <resource-group> \
    -l <location> \
    --network-plugin azure \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --vnet-subnet-id <cluster-subnet-resource-id> \
    --apiserver-subnet-id <apiserver-subnet-resource-id> \
    --assign-identity <managed-identity-resource-id>
    

Conversión de un clúster de AKS existente en la integración con red virtual del servidor de API

Puede convertir los clústeres de AKS públicos o privados existentes en clústeres de API Server VNet Integration proporcionando una subred de servidor de API que cumpla los requisitos enumerados anteriormente. Estos requisitos incluyen: en la misma red virtual que los nodos de clúster, los permisos concedidos para la identidad del clúster de AKS, no utilizados por otros recursos, como el punto de conexión privado, y el tamaño de al menos /28. La conversión del clúster es una migración unidireccional. Los clústeres no pueden tener deshabilitado el servicio API Server VNet Integration una vez que se ha habilitado.

Esta actualización realiza una actualización de la versión de imagen de nodo en todos los grupos de nodos y reinicia todas las cargas de trabajo mientras se someten a una actualización gradual de la imagen.

Advertencia

La conversión de un clúster a la integración con red virtual del servidor de API da lugar a un cambio de la dirección IP del servidor de API, aunque el nombre de host sigue siendo el mismo. Si la dirección IP del servidor de API se ha configurado en cualquier firewall o reglas de grupo de seguridad de red, es posible que sea necesario actualizar esas reglas.

  • Actualice el clúster a API Server VNet Integration mediante el comando az aks update con la marca --enable-apiserver-vnet-integration.

    az aks update -n <cluster-name> \
    -g <resource-group> \
    --enable-apiserver-vnet-integration \
    --apiserver-subnet-id <apiserver-subnet-resource-id>
    

Habilitación o deshabilitación del modo de clúster privado en un clúster existente con integración con red virtual del servidor de API

Los clústeres de AKS configurados con la integración con red virtual del servidor de API pueden tener habilitado el acceso a la red pública o el modo de clúster privado o deshabilitado sin volver a implementar el clúster. El nombre de host del servidor de API no cambia, pero las entradas DNS públicas se modifican o se quitan si es necesario.

Nota

'--disable-private-cluster se encuentra actualmente en versión preliminar. Para obtener más información, consulte Niveles de referencia y soporte técnico.

Habilitación del modo de clúster privado

  • Habilite el modo de clúster privado mediante el comando az aks update con la marca --enable-private-cluster.

    az aks update -n <cluster-name> \
    -g <resource-group> \
    --enable-private-cluster
    

Deshabilitación del modo de clúster privado

  • Deshabilite el modo de clúster privado mediante el comando az aks update con la marca --disable-private-cluster.

    az aks update -n <cluster-name> \
    -g <resource-group> \
    --disable-private-cluster
    

Conexión a un clúster mediante kubectl

  • Configure kubectl para conectarse al clúster ejecutando el comando az aks get-credentials.

    az aks get-credentials -g <resource-group> -n <cluster-name>
    

Pasos siguientes

Para los procedimientos recomendados asociados, consulte Procedimientos recomendados con la conectividad de red y la seguridad en Azure Kubernetes Service (AKS).