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.
Este artículo le ayuda a implementar un clúster de AKS basado en vínculo privado mediante CLI de Azure o Terraform. Si está interesado en crear un clúster de AKS sin un vínculo privado o un túnel necesarios, consulte Crear un clúster de Azure Kubernetes Service (AKS) con integración de red virtual del servidor de API.
Introducción a los clústeres privados en AKS
En un clúster privado, el servidor de la API o el plano de control tienen direcciones IP internas que se definen en el documento RFC1918 sobre la asignación de direcciones para conexiones privadas de Internet. Mediante el uso de un clúster privado, puede asegurarse de que el tráfico entre el servidor de API y los grupos de nodos permanece solo en la red privada.
El plano de control o el servidor de API se encuentra en un grupo de recursos de Azure administrado por AKS y el clúster o grupo de nodos se encuentra en el grupo de recursos. El servidor y el grupo de clústeres o nodos pueden comunicarse entre sí a través del servicio Azure Private Link en la red virtual del servidor de API y un punto de conexión privado expuesto en la subred del clúster de AKS.
Al crear un clúster de AKS privado, AKS crea nombres de dominio completos (FQDN) públicos y privados con las zonas DNS correspondientes de forma predeterminada. Para obtener opciones detalladas de configuración de DNS, consulte Configuración de una zona DNS privada, una subzona DNS privada o un subdominio personalizado.
Disponibilidad regional
Los clústeres privados están disponibles en regiones públicas, Azure Government y Microsoft Azure operado por 21Vianet, donde se admite AKS.
Importante
Todas las características de Microsoft Defender for Cloud se retirarán oficialmente en el Azure de la región de China el 18 de agosto de 2026. Debido a esta próxima retirada, los clientes de Azure en China ya no pueden incorporar nuevas suscripciones al servicio. Una nueva suscripción es cualquier suscripción que aún no se haya incorporado al servicio Microsoft Defender for Cloud antes del 18 de agosto de 2025, la fecha del anuncio de retirada. Para obtener más información sobre la obsolescencia, consulte el Anuncio sobre la retirada de Microsoft Defender for Cloud en Microsoft Azure, operado por 21Vianet.
Los clientes deben trabajar con sus representantes de cuenta para Microsoft Azure operados por 21Vianet para evaluar el impacto de esta retirada en sus propias operaciones.
Requisitos previos para clústeres de AKS privados
Una suscripción de Azure activa. Si no tiene una suscripción de Azure, cree una cuenta free antes de comenzar.
Establezca el contexto de suscripción mediante el
az account setcomando . Por ejemplo:az account set --subscription "00000000-0000-0000-0000-000000000000"CLI de Azure versión 2.28.0 o posterior. Busque su versión usando el comando
az --version. Si necesita instalar o actualizar, consulte Install CLI de Azure.Si usa Azure Resource Manager (ARM) o la API rest de Azure, la versión de la API de AKS debe ser 2021-05-01 o superior.
Para usar un servidor DNS personalizado, agregue la dirección IP pública Azure 168.63.129.16 como servidor DNS ascendente en el servidor DNS personalizado y asegúrese de agregar esta dirección IP pública como first servidor DNS. Para obtener más información sobre la dirección IP de Azure, consulte ¿Qué es la dirección IP 168.63.129.16?
- La zona DNS del clúster debe ser lo que reenvía a 168.63.129.16. Puede encontrar más información sobre los nombres de zona en Azure services DNS zone configuration.
Los clústeres de AKS existentes habilitados con la integración con red virtual del servidor de API pueden tener habilitado el modo de clúster privado. Para obtener más información, consulte Habilitación o deshabilitación del modo de clúster privado en un clúster existente con integración con red virtual de API Server.
Si necesita habilitar Azure Container Registry en un clúster de AKS privado, configurar un vínculo privado para el registro de contenedor en la red virtual del clúster (VNet) o configurar el emparejamiento entre la red virtual del registro de contenedor y la red virtual del clúster privado.
kubectl instalado. Puede instalarlo localmente mediante el
az aks install-clicomando .
- Terraform instalado localmente. Para obtener instrucciones de instalación, consulte Instalación de Terraform.
Importante
A partir de November 30, 2025, Azure Kubernetes Service (AKS) ya no admite ni proporciona actualizaciones de seguridad para Azure Linux 2.0. La imagen de nodo de Azure Linux 2.0 quedó congelada en la versión 202512.06.0. A partir del 31 de marzo de 2026, se quitarán las imágenes de nodo y no podrá escalar los grupos de nodos. Migre a una versión de Linux de Azure compatible actualizando los grupos de nodos a una versión de Kubernetes compatible o migrando a osSku AzureLinux3. Para obtener más información, consulte la Incidencia de retirada de GitHub y el Anuncio de la retirada de las actualizaciones de Azure. Para mantenerse informado sobre los anuncios y actualizaciones, siga las notas de lanzamiento de AKS.
Limitaciones
- Los intervalos autorizados por IP solo se aplican al servidor de API público. No puede aplicar estos intervalos al punto de conexión del servidor de API privado.
- Las limitaciones del servicio de Azure Private Link se aplican a los clústeres privados.
- No hay compatibilidad de los agentes hospedados de Microsoft Azure DevOps con los clústeres privados. Considere la posibilidad de usar agentes autohospedados.
- La eliminación o modificación del punto de conexión privado en la subred del cliente hace que el clúster deje de funcionar.
- El servicio Azure Private Link solo se admite en Azure Load Balancer Estándar. No se admite en Basic Azure Load Balancer.
Red en estrella con DNS personalizado para clústeres privados de AKS
Arquitecturas de hub y radio se utilizan comúnmente para desplegar redes en Azure. En muchas de estas implementaciones, los valores de DNS en las redes virtuales de radios están configurados para hacer referencia a un reenviador de DNS central con el fin de permitir la resolución de DNS local y basada en Azure.
En el diagrama siguiente se muestra una arquitectura de tipo hub and spoke para un clúster AKS privado con DNS personalizado.
- Cuando se crea un clúster privado, se crea un punto de conexión privado (1) y una zona DNS privada (2) en el grupo de recursos administrados por clúster de forma predeterminada. El clúster usa un registro
Aen la zona privada a fin de resolver la dirección IP del punto de conexión privado para la comunicación con el servidor de la API. - La zona DNS privada solo está vinculada a la red virtual a la que están conectados los nodos del clúster (3), lo que significa que los hosts de esa red virtual vinculada solo pueden resolver el punto de conexión privado. En escenarios en los que no se configura ningún DNS personalizado en la red virtual (valor predeterminado), funciona sin problema, ya que los hosts apuntan a 168.63.129.16 para DNS que pueden resolver registros en la zona DNS privada debido al vínculo.
- Si mantiene el comportamiento predeterminado de la zona DNS privada, AKS intenta vincular la zona directamente a la red virtual satélite que hospeda el clúster, incluso cuando la zona ya está vinculada a una red virtual central.
- En redes virtuales radiales que usan servidores DNS personalizados, esta acción puede producir un error si la identidad administrada del clúster carece de colaborador de red en la red virtual radial. Para evitar el error, elija una de las siguientes configuraciones admitidas:
-
Zona DNS privada personalizada: proporcione una zona privada existente y establezca en
privateDNSZone/--private-dns-zonesu identificador de recurso. Vincule esa zona a la VNet adecuada (por ejemplo, la VNet del hub) y configurepublicDNS,falseo use--disable-public-fqdn. -
Solo DNS público: deshabilite la creación de zonas privadas estableciendo
privateDNSZone/--private-dns-zoneennoney dejepublicDNSen su valor predeterminado (true) / no use--disable-public-fqdn.
-
Zona DNS privada personalizada: proporcione una zona privada existente y establezca en
- En redes virtuales radiales que usan servidores DNS personalizados, esta acción puede producir un error si la identidad administrada del clúster carece de colaborador de red en la red virtual radial. Para evitar el error, elija una de las siguientes configuraciones admitidas:
- Si va a usar su propia tabla de rutas (BYO) con kubenet, así como su propio DNS, con clústeres privados, se produce un error en la creación del clúster. Tendrá que asociar
RouteTableen el grupo de recursos del nodo a la subred después de que se haya producido un error en la creación del clúster, con el fin de que la creación se realice correctamente.
Limitaciones de los clústeres de AKS privados con DNS personalizado
-
privateDNSZone/ la configuración de--private-dns-zonenoneypublicDNS: false/--disable-public-fqdnal mismo tiempo. - El reenvío condicional no admite subdominios.
Creación de un grupo de recursos
Cree un grupo de recursos con el comando az group create. También puede usar un grupo de recursos existente para el clúster de AKS.
az group create \
--name <private-cluster-resource-group> \
--location <location>
Creación de un clúster de AKS privado con redes básicas predeterminadas
Cree un clúster privado con redes básicas predeterminadas mediante el comando az aks create con la marca --enable-private-cluster.
Parámetros clave en este comando:
-
--enable-private-cluster: habilita el modo de clúster privado.
az aks create \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--load-balancer-sku standard \
--enable-private-cluster \
--generate-ssh-keys
Cree un archivo denominado
main.tfy agregue el código siguiente para definir la versión de Terraform y especifique el proveedor de Azure:terraform { required_version = ">= 1.3.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} subscription_id = var.subscription_id }Agregue el código siguiente a
main.tfpara crear variables de entrada para el identificador de suscripción de Azure, el nombre del grupo de recursos, la ubicación y el nombre del clúster de AKS. Puede modificar los valores predeterminados según sea necesario.variable "subscription_id" { description = "The Azure subscription ID." type = string } variable "resource_group_name" { description = "The name of the resource group for the AKS cluster." type = string default = "rg-private-aks-basic" } variable "location" { description = "The Azure region where the resources will be created." type = string default = "eastus" } variable "aks_cluster_name" { description = "The name of the AKS cluster." type = string default = "aks-private-basic" }Agregue el código siguiente a
main.tfpara crear un grupo de recursos de Azure:resource "azurerm_resource_group" "this" { name = var.resource_group_name location = var.location }Agregue el código siguiente a
main.tfpara crear un clúster de AKS privado con red básica.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "privatebasicaks" private_cluster_enabled = true default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" } identity { type = "SystemAssigned" } network_profile { load_balancer_sku = "standard" network_plugin = "kubenet" } }Siga los pasos para inicializar Terraform, dar formato y validar la configuración de Terraform, crear un plan de ejecución de Terraform, aplicar la configuración de Terraform y conectarse al clúster de AKS.
Creación de un clúster de AKS privado con redes avanzadas
Cree un clúster privado con redes avanzadas mediante el az aks create comando .
Parámetros clave en este comando:
-
--enable-private-cluster: habilita el modo de clúster privado. -
--network-plugin azure: especifica el complemento de red de CNI de Azure. -
--vnet-subnet-id <subnet-id>: el identificador de recurso de una subred existente en una red virtual. -
--dns-service-ip <dns-service-ip>: una dirección IP disponible dentro del intervalo de direcciones del servicio Kubernetes que se va a usar para el servicio DNS del clúster. Por ejemplo:10.2.0.10. -
--service-cidr <service-cidr>: intervalo IP de notación CIDR desde el que se van a asignar direcciones IP del clúster de servicio. Por ejemplo:10.2.0.0/24.
az aks create \
--resource-group <private-cluster-resource-group> \
--name <private-cluster-name> \
--load-balancer-sku standard \
--enable-private-cluster \
--network-plugin azure \
--vnet-subnet-id <subnet-id> \
--dns-service-ip <dns-service-ip> \
--service-cidr <service-cidr> \
--generate-ssh-keys
Cree un archivo denominado
main.tfy agregue el código siguiente para definir la versión de Terraform y especifique el proveedor de Azure:terraform { required_version = ">= 1.3.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} subscription_id = var.subscription_id }Agregue el código siguiente a
main.tfpara crear variables de entrada para el identificador de suscripción de Azure, el nombre del grupo de recursos, la ubicación, el nombre del clúster de AKS, el nombre de red virtual (VNet) y el nombre de la subred. Puede modificar los valores predeterminados según sea necesario.variable "subscription_id" { description = "The Azure subscription ID." type = string } variable "resource_group_name" { description = "The name of the resource group for the AKS cluster." type = string default = "rg-private-aks-advanced" } variable "location" { description = "The Azure region where the resources will be created." type = string default = "eastus" } variable "aks_cluster_name" { description = "The name of the AKS cluster." type = string default = "aks-private-advanced" } variable "vnet_name" { description = "The name of the virtual network." type = string default = "vnet-private-aks" } variable "subnet_name" { description = "The name of the subnet used by AKS." type = string default = "snet-aks" }Agregue el código siguiente a
main.tfpara crear un grupo de recursos, una red virtual y una subred de Azure:resource "azurerm_resource_group" "this" { name = var.resource_group_name location = var.location } resource "azurerm_virtual_network" "this" { name = var.vnet_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name address_space = ["10.0.0.0/8"] } resource "azurerm_subnet" "aks" { name = var.subnet_name resource_group_name = azurerm_resource_group.this.name virtual_network_name = azurerm_virtual_network.this.name address_prefixes = ["10.240.0.0/16"] }Agregue el código siguiente en
main.tfpara crear el clúster de AKS con redes avanzadas.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "privateadvancedaks" private_cluster_enabled = true default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "SystemAssigned" } network_profile { load_balancer_sku = "standard" network_plugin = "azure" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Siga los pasos para inicializar Terraform, dar formato y validar la configuración de Terraform, crear un plan de ejecución de Terraform, aplicar la configuración de Terraform y conectarse al clúster de AKS.
Uso de dominios personalizados con clústeres de AKS privados
Si desea configurar dominios personalizados que solo se pueden resolver internamente, consulte Uso de dominios personalizados.
Deshabilitar un FQDN público en un clúster privado de AKS
Deshabilita un FQDN público en un nuevo clúster
Deshabilite un FQDN público al crear un clúster de AKS privado mediante el comando az aks create con la marca --disable-public-fqdn.
Parámetros clave en este comando:
-
--disable-public-fqdn: deshabilita el nombre de dominio completo (FQDN) público para el servidor de API. -
--assign-identity <resource-id>: especifica la identidad administrada que se va a usar para el clúster. -
--private-dns-zone [system|none]: especifica la zona DNS privada que se va a usar para el clúster.systemes el valor predeterminado al configurar una zona DNS privada. Si omite--private-dns-zone, AKS crea una zona DNS privada en el grupo de recursos del nodo.nonedeshabilita la creación de una zona DNS privada.
az aks create \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--load-balancer-sku standard \
--enable-private-cluster \
--assign-identity <resource-id> \
--private-dns-zone [system|none] \
--disable-public-fqdn \
--generate-ssh-keys
Siga los pasos del 1 al 3 en Creación de un clúster de AKS privado con redes avanzadas o Creación de un clúster de AKS privado con redes básicas predeterminadas para configurar la configuración de Terraform y crear los recursos necesarios en función de su escenario. En este ejemplo se usan redes avanzadas.
Agregue el código siguiente a
main.tfpara crear un clúster de AKS privado con una identidad asignada por el usuario y el FQDN público deshabilitado.resource "azurerm_user_assigned_identity" "aks" { name = "id-private-aks-public-fqdn-off" location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name } resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "privateaks" private_cluster_enabled = true private_cluster_public_fqdn_enabled = false private_dns_zone_id = "System" default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "UserAssigned" identity_ids = [azurerm_user_assigned_identity.aks.id] } network_profile { load_balancer_sku = "standard" network_plugin = "azure" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Siga los pasos para inicializar Terraform, dar formato y validar la configuración de Terraform, crear un plan de ejecución de Terraform, aplicar la configuración de Terraform y conectarse al clúster de AKS.
Deshabilitar un FQDN público en un clúster existente
Deshabilite un FQDN público en un clúster de AKS existente mediante el comando az aks update con la marca --disable-public-fqdn.
Parámetros clave en este comando:
-
--disable-public-fqdn: deshabilita el nombre de dominio completo (FQDN) público para el servidor de API.
az aks update \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--disable-public-fqdn
Agregue el código siguiente al existente
main.tfpara deshabilitar el FQDN público en un clúster de AKS existente. En este ejemplo se usan redes avanzadas. Puede modificarlo para usar las redes básicas predeterminadas cambiando los parámetros y los recursos de Terraform pertinentes.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "privateaks" private_cluster_enabled = true private_cluster_public_fqdn_enabled = false private_dns_zone_id = "System" default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "UserAssigned" identity_ids = [azurerm_user_assigned_identity.aks.id] } network_profile { load_balancer_sku = "standard" network_plugin = "azure" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Aplique la configuración actualizada de Terraform mediante los
terraform plancomandos yterraform apply.terraform plan terraform apply
Opciones de configuración para DNS privado
Puede configurar valores DNS privados para un clúster de AKS privado mediante el CLI de Azure (con el parámetro /> privateDNSZone propiedad:
| Configuración | Description |
|---|---|
system |
Valor predeterminado al configurar una zona DNS privada. Si omite --private-dns-zone / privateDNSZone, AKS crea una zona DNS privada en el grupo de recursos del nodo. |
none |
Si establece --private-dns-zone / privateDNSZone en none, AKS no crea una zona DNS privada. |
<custom-private-dns-zone-resource-id> |
Para usar este parámetro, debe crear una zona DNS privada en el siguiente formato para Azure nube global: privatelink.<region>.azmk8s.io o <subzone>.privatelink.<region>.azmk8s.io. Necesita el identificador de recurso de la zona DNS privada para su uso futuro. También necesita una identidad asignada por el usuario o una entidad de servicio con los roles colaborador de zona DNS privada y colaborador de red. En el caso de los clústeres que usan la integración con red virtual del servidor de API, una zona DNS privada admite el formato de nomenclatura de private.<region>.azmk8s.io o <subzone>.private.<region>.azmk8s.io.
No puede cambiar ni eliminar estos recursos después de crear el clúster, ya que puede provocar problemas de rendimiento y errores de actualización del clúster. Puede usar --fqdn-subdomain <subdomain> solo con <custom-private-dns-zone-resource-id> para proporcionar funcionalidades de subdominio para privatelink.<region>.azmk8s.io. Si especifica una subzona, hay un límite de 32 caracteres para el <subzone> nombre. |
Consideraciones para DNS privado
Tenga en cuenta las siguientes consideraciones al configurar DNS privado para un clúster de AKS privado:
- Si la zona DNS privada está en una suscripción diferente a la del clúster de AKS, debe registrar el proveedor de
Microsoft.ContainerServiceAzure en ambas suscripciones. - Si el clúster de AKS está configurado con una entidad de servicio de Active Directory, AKS no admite el uso de una identidad administrada asignada por el sistema con una zona DNS privada personalizada. El clúster debe usar autenticación de identidad administrada asignada por el usuario.
Creación de un clúster de AKS privado con una zona DNS privada
Cree un clúster de AKS privado con una zona DNS privada mediante el az aks create comando .
Parámetros clave en este comando:
-
--enable-private-cluster: habilita el modo de clúster privado. -
--private-dns-zone [system|none]: configura la zona DNS privada para el clúster.systemes el valor predeterminado al configurar una zona DNS privada. Si omite--private-dns-zone, AKS crea una zona DNS privada en el grupo de recursos del nodo.nonedeshabilita la creación de una zona DNS privada. -
--assign-identity <resource-id>: el identificador de recurso de una identidad administrada asignada por el usuario con los roles DNS privado Zone Contributor y Network Contributor.
az aks create \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--load-balancer-sku standard \
--enable-private-cluster \
--assign-identity <resource-id> \
--private-dns-zone [system|none] \
--generate-ssh-keys
Siga los pasos del 1 al 3 en Creación de un clúster de AKS privado con redes avanzadas o Creación de un clúster de AKS privado con redes básicas predeterminadas para configurar la configuración de Terraform y crear los recursos necesarios en función de su escenario. En este ejemplo se usan redes avanzadas.
Agregue el código siguiente para
main.tfcrear un clúster de AKS privado con una zona DNS privada administrada por AKS:resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "aks-system-dns" private_cluster_enabled = true private_dns_zone_id = "System" default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "SystemAssigned" } network_profile { network_plugin = "azure" load_balancer_sku = "standard" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Siga los pasos para inicializar Terraform, dar formato y validar la configuración de Terraform, crear un plan de ejecución de Terraform, aplicar la configuración de Terraform y conectarse al clúster de AKS.
Creación de un clúster de AKS privado sin una zona DNS privada
Siga los pasos del 1 al 3 en Creación de un clúster de AKS privado con redes avanzadas o Creación de un clúster de AKS privado con redes básicas predeterminadas para configurar la configuración de Terraform y crear los recursos necesarios en función de su escenario. En este ejemplo se usan redes avanzadas.
Agregue el siguiente código a
main.tfpara crear el clúster de AKS sin una zona DNS privada.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "aks-no-dns" private_cluster_enabled = true private_dns_zone_id = "None" default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "SystemAssigned" } network_profile { network_plugin = "azure" load_balancer_sku = "standard" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Siga los pasos para inicializar Terraform, dar formato y validar la configuración de Terraform, crear un plan de ejecución de Terraform, aplicar la configuración de Terraform y conectarse al clúster de AKS.
Creación de un clúster de AKS privado con una zona DNS privada o una subzona DNS privada personalizada
Cree un clúster de AKS privado con una zona DNS privada personalizada o una subzona mediante el az aks create comando .
Parámetros clave en este comando:
-
--enable-private-cluster: habilita el modo de clúster privado. -
--private-dns-zone [<custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>]: el identificador de recurso de una zona DNS privada o una subzona existentes en el siguiente formato para Azure nube global:privatelink.<region>.azmk8s.ioo<subzone>.privatelink.<region>.azmk8s.io. -
--assign-identity <resource-id>: el identificador de recurso de una identidad administrada asignada por el usuario con los roles DNS privado Zone Contributor y Network Contributor.
az aks create \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--load-balancer-sku standard \
--enable-private-cluster \
--assign-identity <resource-id> \
--private-dns-zone [<custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>] \
--generate-ssh-keys
Al usar una zona DNS privada personalizada, usted es responsable de crear y administrar la infraestructura DNS en lugar de confiar en el DNS administrado por Azure. Esto incluye la creación de la zona DNS, la vinculación a la red virtual y la asignación de los permisos necesarios para que AKS administre registros.
Para las configuraciones DNS personalizadas, debe usar una identidad administrada asignada por el usuario con los roles colaborador de zona DNS privado y Network Contributor.
Siga los pasos del 1 al 3 en Creación de un clúster de AKS privado con redes avanzadas o Creación de un clúster de AKS privado con redes básicas predeterminadas para configurar la configuración de Terraform y crear los recursos necesarios en función de su escenario. En este ejemplo se usan redes avanzadas.
Agregue el código a
main.tf, para crear un clúster de AKS privado con una zona DNS privada personalizada o una subzona:resource "azurerm_user_assigned_identity" "aks" { name = "aks-custom-dns-id" location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name } resource "azurerm_private_dns_zone" "aks" { name = "privatelink.eastus.azmk8s.io" resource_group_name = azurerm_resource_group.this.name } resource "azurerm_private_dns_zone_virtual_network_link" "link" { name = "aks-dns-link" resource_group_name = azurerm_resource_group.this.name private_dns_zone_name = azurerm_private_dns_zone.aks.name virtual_network_id = azurerm_virtual_network.this.id } resource "azurerm_role_assignment" "dns" { scope = azurerm_private_dns_zone.aks.id role_definition_name = "Private DNS Zone Contributor" principal_id = azurerm_user_assigned_identity.aks.principal_id } resource "azurerm_role_assignment" "network" { scope = azurerm_virtual_network.this.id role_definition_name = "Network Contributor" principal_id = azurerm_user_assigned_identity.aks.principal_id } resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "aks-custom-dns" private_cluster_enabled = true private_dns_zone_id = azurerm_private_dns_zone.aks.id default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "UserAssigned" identity_ids = [azurerm_user_assigned_identity.aks.id] } network_profile { network_plugin = "azure" load_balancer_sku = "standard" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } depends_on = [ azurerm_role_assignment.dns, azurerm_role_assignment.network ] }Siga los pasos para inicializar Terraform, dar formato y validar la configuración de Terraform, crear un plan de ejecución de Terraform, aplicar la configuración de Terraform y conectarse al clúster de AKS.
Creación de un clúster de AKS privado con una zona DNS privada personalizada y un subdominio personalizado
Cree un clúster de AKS privado con una zona DNS privada personalizada y un subdominio mediante el az aks create comando .
Parámetros clave en este comando:
-
--enable-private-cluster: habilita el modo de clúster privado. -
--private-dns-zone <custom-private-dns-zone-resource-id>: el identificador de recurso de una zona DNS privada existente en el siguiente formato para Azure nube global:privatelink.<region>.azmk8s.io. -
--fqdn-subdomain <subdomain>: subdominio que se va a usar para el FQDN del clúster dentro de la zona DNS privada personalizada. -
--assign-identity <resource-id>: el identificador de recurso de una identidad administrada asignada por el usuario con los roles DNS privado Zone Contributor y Network Contributor.
az aks create \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--load-balancer-sku standard \
--enable-private-cluster \
--assign-identity <resource-id> \
--private-dns-zone <custom-private-dns-zone-resource-id> \
--fqdn-subdomain <subdomain> \
--generate-ssh-keys
Siga los pasos del 1 al 3 en Creación de un clúster de AKS privado con redes avanzadas o Creación de un clúster de AKS privado con redes básicas predeterminadas para configurar la configuración de Terraform y crear los recursos necesarios en función de su escenario. En este ejemplo se usan redes avanzadas.
Agregue el siguiente código a
main.tfpara crear un clúster de AKS privado, con una zona DNS privada personalizada y un subdominio:resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "aks-subdomain" private_cluster_enabled = true private_dns_zone_id = azurerm_private_dns_zone.aks.id fqdn_subdomain = "team1" default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "UserAssigned" identity_ids = [azurerm_user_assigned_identity.aks.id] } network_profile { network_plugin = "azure" load_balancer_sku = "standard" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Siga los pasos para inicializar Terraform, dar formato y validar la configuración de Terraform, crear un plan de ejecución de Terraform, aplicar la configuración de Terraform y conectarse al clúster de AKS.
Actualización de un clúster de AKS privado existente desde una zona DNS privada a pública
Solo puede actualizar de byo (BYO) o system a none. No se admite ninguna otra combinación de valores de actualización.
Advertencia
Al actualizar un clúster privado de byo o system a none, los nodos del agente cambian para usar un FQDN público. En un clúster de AKS que utiliza Virtual Machine Scale Sets de Azure, se realiza una actualización de la imagen de nodo para actualizar los nodos con el FQDN público.
Actualice un clúster privado de byo u system a none usando el comando az aks update con el parámetro --private-dns-zone establecido en none.
az aks update \
--name <private-cluster-name> \
--resource-group <private-cluster-resource-group> \
--private-dns-zone none
Agregue el código siguiente al existente
main.tfpara actualizar el clúster de AKS privado desde una zona DNS privada a pública. En este ejemplo se usan redes avanzadas. Puede modificarlo para usar las redes básicas predeterminadas cambiando los parámetros y los recursos de Terraform pertinentes.resource "azurerm_kubernetes_cluster" "this" { name = var.aks_cluster_name location = azurerm_resource_group.this.location resource_group_name = azurerm_resource_group.this.name dns_prefix = "aks-update" private_cluster_enabled = true private_dns_zone_id = "None" default_node_pool { name = "system" node_count = 1 vm_size = "Standard_DS2_v2" vnet_subnet_id = azurerm_subnet.aks.id } identity { type = "UserAssigned" identity_ids = [azurerm_user_assigned_identity.aks.id] } network_profile { network_plugin = "azure" load_balancer_sku = "standard" dns_service_ip = "10.2.0.10" service_cidr = "10.2.0.0/24" } }Aplique la configuración actualizada de Terraform mediante los
terraform plancomandos yterraform apply.terraform plan terraform apply
Inicialización de Terraform
Inicialice Terraform en el directorio que contiene el archivo main.tf usando el comando terraform init. Este comando descarga el proveedor de Azure necesario para administrar Azure recursos con Terraform.
terraform init
Dar formato y validar la configuración de Terraform
Dar formato y validar la configuración de Terraform mediante los terraform fmt comandos y terraform validate .
terraform fmt
terraform validate
Creación de un plan de ejecución de Terraform
Cree un plan de ejecución de Terraform mediante el comando terraform plan. Este comando muestra los recursos que Terraform creará o modificará en la suscripción de Azure.
terraform plan -var="subscription_id=<your-subscription-id>"
Aplica la configuración de Terraform
Después de revisar y confirmar el plan de ejecución, aplique la configuración de Terraform mediante el terraform apply comando . Este comando crea o modifica los recursos definidos en el archivo main.tf de la suscripción de Azure.
terraform apply -var="subscription_id=<your-subscription-id>"
Configuración de kubectl para conectarse a un clúster de AKS privado
Para administrar un clúster de Kubernetes, use kubectl, el cliente de línea de comandos de Kubernetes.
kubectl ya está instalado si usa Azure Cloud Shell. Para instalar kubectl localmente, use el comando az aks install-cli.
Configure
kubectlpara conectarse a su clúster de Kubernetes utilizando el comandoaz aks get-credentials. Con este comando se descargan las credenciales y se configura la CLI de Kubernetes para usarlas.az aks get-credentials --resource-group <private-cluster-resource-group> --name <private-cluster-name>Compruebe la conexión al clúster con el comando
kubectl get. Este comando devuelve una lista de los nodos del clúster.kubectl get nodesEl comando devuelve una salida similar a la salida de ejemplo siguiente:
NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 3h6m v1.15.11 aks-nodepool1-12345678-vmss000001 Ready agent 3h6m v1.15.11 aks-nodepool1-12345678-vmss000002 Ready agent 3h6m v1.15.11