Início Rápido: Criar um cluster AKS (Serviço de Kubernetes do Azure) automático privado em uma rede virtual personalizada

Aplica-se a: ✔️ AKS Automático

AKS (Serviço de Kubernetes do Azure) Automatic fornece a experiência mais fácil gerenciada do Kubernetes para desenvolvedores, engenheiros de DevOps e engenheiros de plataforma. Ideal para aplicativos modernos e de IA, o AKS Automático automatiza a instalação e as operações de clusters do AKS e incorpora as boas práticas de configurações. Usuários de todos os níveis de habilidade podem se beneficiar da segurança, do desempenho e da confiabilidade do AKS Automático para seus aplicativos. O AKS Automatic também inclui um [SLA de preparação para pod] que garante que 99,9% de operações de preparação de pod qualificadas sejam concluídas em até 5 minutos, garantindo uma infraestrutura confiável e auto-cura para seus aplicativos. Este guia de início rápido pressupõe uma compreensão básica dos conceitos do Kubernetes. Para obter mais informações, consulte os principais conceitos Kubernetes para AKS (Serviço de Kubernetes do Azure).

Neste início rápido, você aprenderá a:

  • Crie uma rede virtual.
  • Crie uma identidade gerenciada com permissões na rede virtual.
  • Implantar um cluster automático do AKS privado na rede virtual.
  • Conecte-se ao cluster privado.
  • Executa um aplicativo de vários contêineres de exemplo com um grupo de microsserviços e front-ends da Web simulando um cenário de varejo.

Pré-requisitos

  • Se você não tiver uma conta Azure, crie uma conta free.
  • CLI do Azure versão 2.86.0 ou posterior. Para localizar a versão, execute az --version o comando. Se precisar instalar ou atualizar, consulte Instalar CLI do Azure.
  • Identidade do cluster com uma atribuição de função interna Network Contributor na sub-rede do servidor de API.
  • Identidade do cluster com uma atribuição de função interna Network Contributor na rede virtual para dar suporte ao Provisionamento automático de nós.
  • Identidade do usuário acessando o cluster com Serviço de Kubernetes do Azure Cluster User Role e Serviço de Kubernetes do Azure RBAC Writer.
  • Uma rede virtual com uma sub-rede dedicada ao servidor de API, de tamanho mínimo */28, delegada a Microsoft.ContainerService/managedClusters.
    • Se houver um NSG (Grupo de Segurança de Rede) anexado a sub-redes, verifique se as regras permitem o seguinte tráfego: entre os nós e o servidor de API, entre o Azure Load Balancer e o servidor de API, e comunicação entre pods.
    • Se houver um Firewall do Azure ou outro método de restrição de saída ou dispositivo, verifique se as regras de rede de saída requeridas e os FQDNs necessários são permitidos.
  • O AKS Automatic habilitará a Azure Policy no seu cluster do AKS, mas você deve registrar previamente o provedor de recursos Microsoft.PolicyInsights na sua assinatura para ter uma experiência mais tranquila. Confira mais informações em Tipos e provedores de recursos do Azure.
  • Desinstale a extensão de visualização do AKS usando az extension remove -n aks-preview.

Importante

A partir do AKS 1.36, os novos clusters AKS Automatic habilitarão por padrão a Gateway API do Kubernetes por meio do complemento de roteamento de aplicativos, em vez do ingresso NGINX gerenciado com o complemento de roteamento de aplicativos, devido à descontinuação do Ingress NGINX upstream.

Os clusters automáticos existentes não são afetados, mas devem iniciar a migração para a API de Gateway do Kubernetes por meio do complemento de roteamento de aplicativos.

Limitações

As seguintes limitações se aplicam aos clusters automáticos do AKS:

  • O AKS Automatic está disponível de forma geral nas seguintes regiões: australiaeast, austriaeast, belgiumcentral, brazilsouth, canadacentral, centralindia, centralus, chilecentral, denmarkeast, eastasia, eastus, eastus2, francecentral, germanywestcentral, indonesiacentral, israelcentral, italynorth, japaneast, japanwest, koreacentral, malaysiawest, mexicocentral, newzealandnorth, northeurope, norwayeast, polandcentral, southafricanorth, southcentralus, southeastasia, spaincentral, swedencentral, switzerlandnorth, uaenorth, uksouth, westeurope, westus2, westus3.
    • Os novos clusters AKS automáticos, por padrão, habilitam pools de nós de sistema gerenciados e LocalDNS. Você não pode criar clusters automáticos do AKS sem pools de nós do sistema gerenciado em qualquer região.
  • O cluster automático do AKS tem bloqueio do grupo de recursos do nó pré-configurado, o que não permite alterações no grupo de recursos MC_, impedindo vínculos de rede virtual na zona padrão de DNS Privado. Para cenários de DNS entre redes virtuais (VNets) ou DNS personalizado, use uma rede personalizada e um DNS privado seguindo as instruções em Criar um cluster automático do AKS (Serviço de Kubernetes do Azure) privado em uma rede virtual personalizada.
  • CLI do Azure versão 2.86.0 ou posterior é necessária. Para localizar a versão, execute az --version o comando. Se precisar instalar ou atualizar, consulte Instalar CLI do Azure.
  • Não há suporte para as seguintes extensões:
  • Não há suporte para nós do sistema Windows.
  • Não há suporte para o complemento de malha de serviço baseado em Istio para AKS .
  • Não há suporte para a migração entre o SKU base do AKS e o SKU Automático.
  • Não há suporte para migrações entre clusters automáticos do AKS sem pools de nós do sistema gerenciado e clusters automáticos do AKS com pools de nós do sistema gerenciado.
  • Não há suporte à configuração de extração personalizada de métricas do Prometheus e de coleta de logs.
  • Não há suporte para habilitar a observabilidade do ACNS durante a criação automática do cluster. Você pode habilitar a observabilidade do ACNS depois que o cluster é criado.

Definir variáveis

Defina as variáveis a seguir que são usadas nas etapas subsequentes.

RG_NAME=automatic-rg
VNET_NAME=automatic-vnet
CLUSTER_NAME=automatic
IDENTITY_NAME=automatic-uami
LOCATION=eastus
SUBSCRIPTION_ID=$(az account show --query id -o tsv)

Criar um grupo de recursos

Um grupo de recursos Azure é um grupo lógico no qual Azure recursos são implantados e gerenciados.

Crie um grupo de recursos usando o comando az group create.

az group create -n ${RG_NAME} -l ${LOCATION}

A saída de exemplo a seguir é semelhante à criação bem-sucedida do grupo de recursos:

{
  "id": "/subscriptions/<guid>/resourceGroups/automatic-rg",
  "location": "canadacentral",
  "managedBy": null,
  "name": "automatic-rg",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Criar uma rede virtual

Criar uma rede virtual usando o comando az network vnet create. Crie uma sub-rede do servidor de API e uma sub-rede de cluster usando o az network vnet subnet create comando.

Ao usar uma rede virtual personalizada com o AKS Automatic, você deve criar uma sub-rede de servidor de API. O AKS delegará a sub-rede a Microsoft.ContainerService/managedClusters em seu nome, o que concede ao serviço AKS as permissões necessárias para injetar os pods do servidor de API e o balanceador de carga interno nessa sub-rede. Você não pode usar a sub-rede para nenhuma outra carga de trabalho, mas pode usá-la para vários clusters do AKS localizados na mesma rede virtual. O tamanho mínimo com suporte da sub-rede do servidor de API é /28.

Aviso

Um cluster do AKS reserva pelo menos nove (9) IPs no espaço de endereço da sub-rede. A falta de endereços IP pode impedir a escalabilidade do servidor de API e causar uma indisponibilidade do servidor de API.

az network vnet create --name ${VNET_NAME} \
--resource-group ${RG_NAME} \
--location ${LOCATION} \
--address-prefixes 172.19.0.0/16

az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name apiServerSubnet \
--delegations Microsoft.ContainerService/managedClusters \
--address-prefixes 172.19.0.0/28

az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name userNodeSubnet \
--address-prefixes 172.19.1.0/24

az network vnet subnet create --resource-group ${RG_NAME} \
--vnet-name ${VNET_NAME} \
--name managedSystemNodeSubnet \
--address-prefixes 172.19.0.64/26

Regras de grupo de segurança de rede

Todo o tráfego dentro da rede virtual é permitido por padrão. Mas se você adicionou regras de NSG (Grupo de Segurança de Rede) para restringir o tráfego entre sub-redes diferentes, verifique se as regras de segurança do NSG permitem os seguintes tipos de comunicação:

Destino Fonte Protocolo Porto Utilização
CIDR de sub-rede do APIServer sub-rede do nó de usuário e sub-rede do nó do sistema TCP 443 e 4443 Necessário para habilitar a comunicação entre nós e o servidor de API.
CIDR de sub-rede do APIServer Azure Load Balancer TCP 9988 Necessário para habilitar a comunicação entre Azure Load Balancer e o servidor de API. Você também pode habilitar toda a comunicação entre o Azure Load Balancer e o CIDR da sub-rede do servidor de API.
CIDR do nó CIDR do nó Todos os protocolos Todas as portas Necessário para habilitar a comunicação entre nós.
CIDR do nó CIDR do pod Todos os protocolos Todas as portas Necessário para o roteamento de tráfego de serviço.
CIDR do pod CIDR do pod Todos os protocolos Todas as portas Necessário para tráfego entre pods e de pod para serviço, incluindo o DNS.

Criar uma identidade gerenciada e conceder a ela permissões na rede virtual

Crie uma identidade gerenciada usando o comando az identity create e recupere a ID principal. Atribua a função Colaborador de Rede na rede virtual à identidade gerenciada usando o az role assignment create comando.

az identity create \
--resource-group ${RG_NAME} \
 --name ${IDENTITY_NAME} \
 --location ${LOCATION}

IDENTITY_PRINCIPAL_ID=$(az identity show --resource-group ${RG_NAME} --name ${IDENTITY_NAME} --query principalId -o tsv)

az role assignment create \
--scope "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}" \
--role "Network Contributor" \
--assignee-object-id "${IDENTITY_PRINCIPAL_ID}" \
--assignee-principal-type ServicePrincipal

Criar um cluster automático do AKS privado em uma rede virtual personalizada

Para criar um cluster automático do AKS privado, use o comando az aks create . Observe o uso do --enable-private-cluster sinalizador.

Observação

Você pode consultar a documentação do cluster privado para configurar outras opções, como desabilitar o FQDN público do cluster e configurar a zona DNS privada.

az aks create \
--resource-group ${RG_NAME} \
--name ${CLUSTER_NAME} \
--location ${LOCATION} \
--apiserver-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/apiServerSubnet" \
--node-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/userNodeSubnet" \
--system-node-subnet-id "/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${RG_NAME}/providers/Microsoft.Network/virtualNetworks/${VNET_NAME}/subnets/managedSystemNodeSubnet" 
--assign-identity "/subscriptions/${SUBSCRIPTION_ID}/resourcegroups/${RG_NAME}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/${IDENTITY_NAME}" \
--sku automatic \
--enable-private-cluster \
--no-ssh-key

Após alguns minutos, o comando será concluído e retornará informações no formato JSON sobre o cluster.

Conectar-se ao cluster

Quando um cluster automático do AKS é criado como um cluster privado, o ponto de extremidade do servidor de API não tem endereço IP público. Para gerenciar o servidor de API, por exemplo, por meio de kubectl, você precisa se conectar por meio de um computador que tenha acesso à rede virtual Azure do cluster. Existem várias opções para estabelecer a conectividade de rede com o cluster privado:

Criar uma máquina virtual na mesma rede virtual que o cluster do AKS é a opção mais fácil. ExpressRoute e VPNs adicionam custos e exigem outra complexidade de rede. O emparelhamento de rede virtual exige que você planeje os intervalos de CIDR de rede para garantir que não haja intervalos sobrepostos. Para obter mais informações, consulte Opções para se conectar ao cluster privado.

Para gerenciar um cluster do Kubernetes, use o cliente de linha de comando do Kubernetes, kubectl. kubectl já está instalado se você usar Azure Cloud Shell. Para instalar o kubectl localmente, use o comando az aks install-cli. Os clusters automáticos do AKS são configurados com Microsoft Entra ID para controle de acesso baseado em funções do Kubernetes (RBAC).

Quando você cria um cluster usando o CLI do Azure, o usuário é atribuído a funções internas para Serviço de Kubernetes do Azure RBAC Cluster Admin.

Configure o kubectl para se conectar ao cluster do Kubernetes usando o comando az aks get-credentials. Este comando baixa as credenciais e configura a CLI do Kubernetes para usá-las.

az aks get-credentials --resource-group ${RG_NAME} --name ${CLUSTER_NAME}

Verifique a conexão com o cluster usando o comando kubectl get. Esse comando retorna uma lista dos nós de cluster.

kubectl get nodes

O exemplo de saída a seguir mostra como você será solicitado a fazer login.

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.

Depois de fazer login, a saída de exemplo a seguir mostra os conjuntos de nós do sistema gerenciado. Verifique se que o status do nó é Pronto.

NAME                           STATUS   ROLES    AGE   VERSION
aks-hostedpool-16652789-vms1   Ready    <none>   19m   v1.34.7
aks-hostedpool-16652789-vms2   Ready    <none>   19m   v1.34.7
aks-hostedpool-16652789-vms3   Ready    <none>   19m   v1.34.7
aks-system-surge-zq4d2         Ready    <none>   19m   v1.34.7

Criar uma rede virtual

Esse arquivo Bicep define uma rede virtual.

@description('The location of the managed cluster resource.')
param location string = resourceGroup().location

@description('The name of the virtual network.')
param vnetName string = 'aksAutomaticVnet'

@description('The address prefix of the virtual network.')
param addressPrefix string = '172.19.0.0/16'

@description('The name of the API server subnet.')
param apiServerSubnetName string = 'apiServerSubnet'

@description('The subnet prefix of the API server subnet.')
param apiServerSubnetPrefix string = '172.19.0.0/28'

@description('The name of the user node subnet.')
param userNodeSubnetName string = 'userNodeSubnet'

@description('The subnet prefix of the user node subnet.')
param userNodeSubnetPrefix string = '172.19.1.0/24'

@description('The name of the system node subnet.')
param systemNodeSubnetName string = 'systemNodeSubnet'

@description('The subnet prefix of the system node subnet.')
param systemNodeSubnetPrefix string = '172.19.0.64/26'

// Virtual network with an API server subnet, a user node subnet, and a system node subnet
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' = {
    name: vnetName
    location: location
    properties: {
        addressSpace: {
            addressPrefixes: [ addressPrefix ]
        }
        subnets: [
            {
                name: apiServerSubnetName
                properties: {
                    addressPrefix: apiServerSubnetPrefix
                }
            }
            {
                name: userNodeSubnetName
                properties: {
                    addressPrefix: userNodeSubnetPrefix
                }
            }
            {
                name: systemNodeSubnetName
                properties: {
                    addressPrefix: systemNodeSubnetPrefix
                }
            }
        ]
    }
}

output apiServerSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, apiServerSubnetName)
output userNodeSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, userNodeSubnetName)
output systemNodeSubnetId string = resourceId('Microsoft.Network/virtualNetworks/subnets', vnetName, systemNodeSubnetName)

Salve o arquivo Bicep virtualNetwork.bicep ao computador local.

Importante

O arquivo Bicep define o parâmetro vnetName como aksAutomaticVnet, o parâmetro addressPrefix para 172.19.0.0/16, o parâmetro apiServerSubnetPrefix para 172.19.0.0/28 e o apiServerSubnetPrefix para 172.19.1.0/24. Se você quiser usar valores diferentes, atualize as cadeias de caracteres para seus valores preferenciais.

Implante o arquivo Bicep usando o CLI do Azure.

az deployment group create --resource-group <resource-group> --template-file virtualNetwork.bicep

Todo o tráfego dentro da rede virtual é permitido por padrão. Mas se você adicionou regras de NSG (Grupo de Segurança de Rede) para restringir o tráfego entre sub-redes diferentes, verifique se as regras de segurança do NSG permitem os seguintes tipos de comunicação:

Destino Fonte Protocolo Porto Utilização
CIDR de sub-rede do APIServer sub-rede do nó de usuário e sub-rede do nó do sistema TCP 443 e 4443 Necessário para habilitar a comunicação entre nós e o servidor de API.
CIDR de sub-rede do APIServer Azure Load Balancer TCP 9988 Necessário para habilitar a comunicação entre Azure Load Balancer e o servidor de API. Você também pode habilitar toda a comunicação entre o Azure Load Balancer e o CIDR da sub-rede do servidor de API.
CIDR do nó CIDR do nó Todos os protocolos Todas as portas Necessário para habilitar a comunicação entre nós.
CIDR do nó CIDR do pod Todos os protocolos Todas as portas Necessário para o roteamento de tráfego de serviço.
CIDR do pod CIDR do pod Todos os protocolos Todas as portas Necessário para tráfego entre pods e de pod para serviço, incluindo o DNS.

Criar uma identidade gerenciada

Esse arquivo Bicep define uma identidade gerenciada atribuída pelo usuário.

param location string = resourceGroup().location
param uamiName string = 'aksAutomaticUAMI'

resource userAssignedManagedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
  name: uamiName
  location: location
}

output uamiId string = userAssignedManagedIdentity.id
output uamiPrincipalId string = userAssignedManagedIdentity.properties.principalId
output uamiClientId string = userAssignedManagedIdentity.properties.clientId

Salve o arquivo Bicep uami.bicep ao computador local.

Importante

O arquivo Bicep define o parâmetro uamiName para o aksAutomaticUAMI. Se você quiser usar um nome de identidade diferente, atualize a cadeia de caracteres para seu nome preferido.

Implante o arquivo Bicep usando o CLI do Azure.

az deployment group create --resource-group <resource-group> --template-file uami.bicep

Atribuir a função Colaborador de rede na rede virtual

Esse arquivo Bicep define atribuições de função sobre a rede virtual.

@description('The name of the virtual network.')
param vnetName string = 'aksAutomaticVnet'

@description('The principal ID of the user assigned managed identity.')
param uamiPrincipalId string

// Get a reference to the virtual network
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' existing ={
  name: vnetName
}

// Assign the Network Contributor role to the user assigned managed identity on the virtual network
// '4d97b98b-1d4f-4787-a291-c67834d212e7' is the built-in Network Contributor role definition
// See: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles/networking#network-contributor
resource networkContributorRoleAssignmentToVirtualNetwork 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(uamiPrincipalId, '4d97b98b-1d4f-4787-a291-c67834d212e7', resourceGroup().id, virtualNetwork.name)
  scope: virtualNetwork
  properties: {
      roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', '4d97b98b-1d4f-4787-a291-c67834d212e7')
      principalId: uamiPrincipalId
  }
}

Salve o arquivo Bicep roleAssignments.bicep ao computador local.

Importante

O arquivo Bicep define o parâmetro vnetName como aksAutomaticVnet. Se você usou um nome de rede virtual diferente, atualize a cadeia de caracteres para seu nome de rede virtual preferido.

Implante o arquivo Bicep usando o CLI do Azure. Você precisa fornecer a ID da entidade de segurança da identidade atribuída pelo usuário.

az deployment group create --resource-group <resource-group> --template-file roleAssignments.bicep \
--parameters uamiPrincipalId=<user assigned identity prinicipal id>

Criar um cluster automático do AKS privado em uma rede virtual personalizada

Este arquivo Bicep define o cluster AKS Automatic.

Observação

Você pode consultar a documentação do cluster privado para configurar outras opções, como desabilitar o FQDN público de clusters e configurar a zona DNS privada.

@description('The name of the managed cluster resource.')
param clusterName string = 'aksPrivateAutomaticCluster'

@description('The location of the managed cluster resource.')
param location string = resourceGroup().location

@description('The resource ID of the API server subnet.')
param apiServerSubnetId string

@description('The resource ID of the user node subnet.')
param userNodeSubnetId string

@description('The resource ID of the system node subnet.')
param systemNodeSubnetId string

@description('The resource ID of the user assigned managed identity.')
param uamiId string

/// Create the private AKS Automatic cluster using the custom virtual network and user assigned managed identity
resource aks 'Microsoft.ContainerService/managedClusters@2024-03-02-preview' = {
  name: clusterName
  location: location  
  sku: {
    name: 'Automatic'
  }
  properties: {
    apiServerAccessProfile: {
        subnetId: apiServerSubnetId
        enablePrivateCluster: true
    }
    networkProfile: {
      outboundType: 'loadBalancer'
    }
    hostedSystemProfile: {
      systemNodeSubnetID: systemNodeSubnetId
      nodeSubnetID: userNodeSubnetId
    }
  }
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${uamiId}': {}
    }
  }
}

Salve o arquivo Bicep aks.bicep ao computador local.

Importante

O arquivo Bicep define o parâmetro clusterName como aksPrivateAutomaticCluster. Se você quiser um nome de cluster diferente, atualize a cadeia de caracteres para seu nome de cluster preferido.

Implante o arquivo Bicep usando o CLI do Azure. Você precisa fornecer a ID do recurso de sub-rede do servidor de API, a ID do recurso de sub-rede do nó de usuário, a ID do recurso de sub-rede do nó do sistema e a ID do recurso de identidade gerenciada atribuída pelo usuário.

az deployment group create --resource-group <resource-group> --template-file aks.bicep \
--parameters apiServerSubnetId=<API server subnet resource id> \
--parameters nodeSubnetId=<user node subnet resource id> \
--parameters systemNodeSubnetId=<system node subnet resource id> \
--parameters uamiPrincipalId=<user assigned identity prinicipal id>

Conectar-se ao cluster

Quando um cluster automático do AKS é criado como um cluster privado, o ponto de extremidade do servidor de API não tem endereço IP público. Para gerenciar o servidor de API, por exemplo, por meio de kubectl, você precisa se conectar por meio de um computador que tenha acesso à rede virtual Azure do cluster. Existem várias opções para estabelecer a conectividade de rede com o cluster privado:

Criar uma máquina virtual na mesma rede virtual que o cluster do AKS é a opção mais fácil. As VPNs e a Rota Expressa adicionam custos e exigem mais complexidade de rede. O emparelhamento de rede virtual exige que você planeje os intervalos de CIDR de rede para garantir que não haja intervalos sobrepostos. Para obter mais informações, consulte Opções para se conectar ao cluster privado.

Para gerenciar um cluster do Kubernetes, use o cliente de linha de comando do Kubernetes, kubectl. kubectl já está instalado se você usar Azure Cloud Shell. Para instalar o kubectl localmente, use o comando az aks install-cli. Os clusters automáticos do AKS são configurados com Microsoft Entra ID para controle de acesso baseado em funções do Kubernetes (RBAC).

Importante

Ao criar um cluster usando Bicep, você precisa tribuir uma das funções internas como Serviço de Kubernetes do Azure RBAC Reader, Serviço de Kubernetes do Azure RBAC Writer, Serviço de Kubernetes do Azure RBAC Admin ou Serviço de Kubernetes do Azure RBAC Cluster Admin para seus usuários, com escopo para o cluster ou um namespace específico, por exemplo, usando az role assignment create --role "Serviço de Kubernetes do Azure RBAC Cluster Admin" --scope <AKS cluster resource id> --assignee user@contoso.com. Além disso, certifique-se de que seus usuários tenham uma função integrada de Serviço de Kubernetes do Azure Cluster User para poderem executar az aks get-credentials e, a seguir, obter o kubeconfig do seu cluster do AKS usando o comando az aks get-credentials.

Configure o kubectl para se conectar ao cluster do Kubernetes usando o comando az aks get-credentials. Este comando baixa as credenciais e configura a CLI do Kubernetes para usá-las.

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

Verifique a conexão com o cluster usando o comando kubectl get. Esse comando retorna uma lista dos nós de cluster.

kubectl get nodes

O exemplo de saída a seguir mostra como você será solicitado a fazer login.

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.

Depois de fazer login, a saída de exemplo a seguir mostra os conjuntos de nós do sistema gerenciado. Verifique se que o status do nó é Pronto.

NAME                           STATUS   ROLES    AGE   VERSION
aks-hostedpool-16652789-vms1   Ready    <none>   19m   v1.34.7
aks-hostedpool-16652789-vms2   Ready    <none>   19m   v1.34.7
aks-hostedpool-16652789-vms3   Ready    <none>   19m   v1.34.7
aks-system-surge-zq4d2         Ready    <none>   19m   v1.34.7

Implantar o aplicativo

Para implantar o aplicativo, use um arquivo de manifesto para criar todos os objetos necessários para executar o aplicativo AKS Store. Um arquivo de manifesto do Kubernetes define o estado desejado de um cluster, por exemplo, as imagens de contêiner a serem executadas. O manifesto inclui as seguintes implantações e serviços do Kubernetes:

Screenshot da arquitetura de exemplo da Azure Store.

  • Frente de loja: Aplicativo Web para clientes visualizarem produtos e fazerem pedidos.
  • Serviço do produto: Mostra informações do produto.
  • Serviço de pedido: Realiza pedidos.
  • Rabbit MQ: fila de mensagens para uma fila de pedidos.

Observação

Não é recomendável executar contêineres com estado, como o Rabbit MQ, sem armazenamento persistente para produção. Esses contêineres são usados aqui para simplificar, mas é recomendável usar serviços gerenciados, como Azure Cosmos DB ou Barramento de Serviço do Azure.

  1. Crie um namespace aks-store-demo onde você irá implantar os recursos do Kubernetes.

    kubectl create ns aks-store-demo
    
  2. Implante o aplicativo usando o comando kubectl apply no namespace aks-store-demo. O arquivo YAML que define a implantação está em GitHub.

    kubectl apply -n aks-store-demo -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-ingress-quickstart.yaml
    

    A amostra de saída a seguir mostra as implantações e os serviços:

    statefulset.apps/rabbitmq created
    configmap/rabbitmq-enabled-plugins created
    service/rabbitmq created
    deployment.apps/order-service created
    service/order-service created
    deployment.apps/product-service created
    service/product-service created
    deployment.apps/store-front created
    service/store-front created
    ingress/store-front created
    

Testar o aplicativo

Quando o aplicativo é executado, um serviço de Kubernetes expõe o front-end do aplicativo à Internet. A conclusão desse processo pode levar alguns minutos.

  1. Verifique o status dos pods implantados usando o comando kubectl get pods. Garanta que todos os pods estejam Running, antes de continuar. Se essa for a primeira carga de trabalho que você implanta, pode levar alguns minutos para que o provisionamento automático de nós crie um pool de nós para executar os pods.

    kubectl get pods -n aks-store-demo
    
  2. Verifique se há um endereço IP público para o aplicativo de store-front. Monitore o andamento usando o comando kubectl get service com o argumento --watch.

    kubectl get ingress store-front -n aks-store-demo --watch
    

    A saída ADDRESS para o serviço store-front inicialmente aparece vazia:

    NAME          CLASS                                HOSTS   ADDRESS        PORTS   AGE
    store-front   webapprouting.kubernetes.azure.com   *                      80      12m
    
  3. Quando o ADDRESS muda de vazio para um endereço IP público real, use CTRL-C para interromper o processo de inspeção do kubectl.

    A seguinte saída de exemplo mostra um endereço de IP público válido atribuído ao serviço:

    NAME          CLASS                                HOSTS   ADDRESS        PORTS   AGE
    store-front   webapprouting.kubernetes.azure.com   *       4.255.22.196   80      12m
    
  4. Abra um navegador da web para o endereço IP externo da sua entrada para ver o aplicativo do Azure Store em ação.

    Captura de tela do aplicativo de exemplo do AKS Store.

Excluir o cluster

Se você não planeja passar pelo tutorial AKS, limpe os recursos desnecessários para evitar custos no Azure. Execute o comando az group delete para remover o grupo de recursos, o serviço de contêiner e todos os recursos relacionados.

az group delete --name <resource-group> --yes --no-wait

Observação

O cluster do AKS foi criado com uma identidade gerenciada atribuída pelo usuário. Se você não precisar mais dessa identidade, poderá removê-la manualmente.

Próximas etapas

Neste início rápido, você implantou um cluster privado do Kubernetes usando o AKS Automatic dentro de uma rede virtual personalizada e implantou um aplicativo de vários contêineres simples nele. Esse aplicativo de exemplo é apenas para fins de demonstração e não representa todas as melhores práticas para aplicativos do Kubernetes. Para obter diretrizes sobre como criar soluções completas com o AKS para produção, consulte Diretrizes sobre a solução AKS.

Para saber mais sobre o AKS Automático, prossiga para a introdução.