Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Comece a usar Azure ACL (Container Linux) para AKS implantando um cluster do AKS usando um modelo Azure Resource Manager (ARM).
Neste guia de início rápido, você aprende a:
- Crie um cluster do AKS usando ACL para AKS.
- Implante o cluster usando um modelo do ARM.
- 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.
Note
Para começar a provisionar rapidamente um cluster do AKS, este artigo inclui etapas para implantar um cluster com configurações padrão somente para fins de avaliação. Antes de implantar um cluster pronto para produção, recomendamos que você se familiarize com nossa arquitetura de referência de linha de base para considerar como ele se alinha aos seus requisitos de negócios.
Importante
Se você estiver usando Azure ACL (Container Linux) no AKS, examine as seguintes considerações e limitações:
- A ACL geralmente está disponível a partir do AKS v1.34.
- ACL requer Trusted Launch com Inicialização Segura e vTPM. As variantes de inicialização não confiáveis não estão disponíveis.
- A ACL no Arm64 requer SKUs baseadas em Cobalt (v6) para habilitar a compatibilidade de Inicialização Confiável.
-
NodeImageeNonesão os únicos canais de atualização do sistema operacional (SO) com suporte.UnmanagedeSecurityPatchsão incompatíveis com ACL devido ao diretório imutável/usr. - O suporte para Streaming de Artefatos não está disponível.
- Não há suporte para o Pod Sandboxing.
- Não há suporte para CVMs (Máquinas Virtuais Confidenciais).
- Não há suporte para VMs de geração 1.
- Não há suporte para nós habilitados para FIPS.
Pré-requisitos
- Este artigo pressupõe uma compreensão básica dos conceitos do Kubernetes. Para obter mais informações, confira Principais conceitos do Kubernetes para o AKS (Serviço de Kubernetes do Azure).
- Se você ainda não tiver uma conta do Azure, crie uma conta gratuita antes de começar.
- Verifique se a identidade usada para criar seu cluster tem as permissões mínimas apropriadas. Para obter mais detalhes sobre acesso e identidade do AKS, consulte Opções de acesso e identidade para o AKS (Serviço de Kubernetes do Azure).
- Para implantar um modelo ARM, você precisa de acesso de gravação aos recursos que está implantando e acesso a todas as operações no tipo de recurso
Microsoft.Resources/deployments. Por exemplo, para implantar uma máquina virtual, você precisa de permissõesMicrosoft.Compute/virtualMachines/writeeMicrosoft.Resources/deployments/*. Para obter uma lista de funções e permissões, consulte funções internas do Azure.
Depois de implantar o cluster a partir do modelo, você pode usar a CLI do Azure ou o Azure PowerShell para se conectar ao cluster e implantar o aplicativo de exemplo.
Registrar os provedores de recursos necessários
Talvez seja necessário registrar os provedores de recursos necessários, como Microsoft.ContainerService em sua assinatura Azure.
Verificar o status do registro
Verifique o status do registro usando o az provider show comando.
az provider show --namespace Microsoft.ContainerService --query registrationState
Registrar o provedor de recursos
Se necessário, registre o provedor de recursos Microsoft.ContainerService usando o comando az provider register.
az provider register --namespace Microsoft.ContainerService
Criar um par de chaves SSH
Para criar um cluster do AKS usando um modelo ARM, forneça uma chave pública SSH. Se você precisar desse recurso, siga as etapas nesta seção. Caso contrário, pule para a seção Examinar o modelo.
Para acessar os nós do AKS, você se conecta usando um par de chaves SSH (pública e privada), que você gera usando o comando ssh-keygen. Por padrão, esses arquivos são criados no diretório ~/.ssh. A execução do comando ssh-keygen substituirá qualquer par de chaves SSH com o mesmo nome já existente na localização especificada. Para obter mais informações sobre como criar chaves SSH, confira Criar e gerenciar chaves SSH para autenticação no Azure.
Navegue até https://shell.azure.com para abrir Cloud Shell no navegador.
Crie um grupo de recursos usando o comando
az group create. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup na região Leste dos EUA :az group create \ --name myResourceGroup \ --location eastusCrie um par de chaves SSH usando o
az sshkey createcomando ou ossh-keygencomando.az sshkey create --name mySSHKey --resource-group myResourceGroupOu crie um par de chaves SSH usando
ssh-keygen:ssh-keygen -t rsa -b 4096Para implantar o modelo, você deve fornecer a chave pública do par SSH. Recupere a chave pública usando o
az sshkey showcomando.az sshkey show --name mySSHKey --resource-group myResourceGroup --query publicKey
Examinar o modelo
A implantação a seguir usa um modelo ARM de Azure Quickstart Templates:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.26.170.59819",
"templateHash": "14823542069333410776"
}
},
"parameters": {
"clusterName": {
"type": "string",
"defaultValue": "aks101cluster",
"metadata": {
"description": "The name of the Managed Cluster resource."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The location of the Managed Cluster resource."
}
},
"dnsPrefix": {
"type": "string",
"metadata": {
"description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN."
}
},
"osDiskSizeGB": {
"type": "int",
"defaultValue": 0,
"minValue": 0,
"maxValue": 1023,
"metadata": {
"description": "Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize."
}
},
"agentCount": {
"type": "int",
"defaultValue": 3,
"minValue": 1,
"maxValue": 50,
"metadata": {
"description": "The number of nodes for the cluster."
}
},
"agentVMSize": {
"type": "string",
"defaultValue": "standard_d2s_v3",
"metadata": {
"description": "The size of the Virtual Machine."
}
},
"linuxAdminUsername": {
"type": "string",
"metadata": {
"description": "User name for the Linux Virtual Machines."
}
},
"sshRSAPublicKey": {
"type": "string",
"metadata": {
"description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'"
}
}
},
"resources": [
{
"type": "Microsoft.ContainerService/managedClusters",
"apiVersion": "2026-03-01",
"name": "[parameters('clusterName')]",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"dnsPrefix": "[parameters('dnsPrefix')]",
"agentPoolProfiles": [
{
"name": "agentpool",
"osDiskSizeGB": "[parameters('osDiskSizeGB')]",
"count": "[parameters('agentCount')]",
"vmSize": "[parameters('agentVMSize')]",
"osType": "Linux",
"osSKU": "AzureContainerLinux",
"mode": "System"
}
],
"linuxProfile": {
"adminUsername": "[parameters('linuxAdminUsername')]",
"ssh": {
"publicKeys": [
{
"keyData": "[parameters('sshRSAPublicKey')]"
}
]
}
}
}
}
],
"outputs": {
"controlPlaneFQDN": {
"type": "string",
"value": "[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('clusterName')), '2026-03-01').fqdn]"
}
}
}
O tipo de recurso definido no modelo ARM é Microsoft.ContainerService/managedClusters.
Para obter mais amostras do AKS, confira o site de modelos de início rápido do AKS.
Implantar o modelo
Selecione Implantar no Azure para entrar e abrir um modelo.
Configure os parâmetros de modelo na página de implantação personalizada . Para este início rápido, deixe os valores padrão para o tamanho do disco do sistema operacional GB, a contagem de agentes, o tamanho da VM do agente e o tipo de sistema operacional. Forneça seus próprios valores para os seguintes parâmetros:
- Assinatura: Selecione uma assinatura do Azure.
- Grupo de recursos: Selecione Criar novo. Insira um nome exclusivo para o grupo de recursos, como myResourceGroup, e selecione OK.
-
SKU do sistema operacional: especifique AzureContainerLinux. Se você não atualizar o SKU do sistema operacional, o padrão será
Ubuntu. - Localização: selecione um local, como Leste dos EUA.
- Nome do cluster: insira um nome exclusivo para o cluster do AKS, como myAKSCluster.
- Prefixo DNS: insira um prefixo DNS exclusivo para seu cluster, como myakscluster.
- Nome do Usuário Administrador do Linux: insira um nome de usuário para se conectar usando SSH, como azureuser.
- Origem de chave pública SSH: selecione Usar chave pública existente.
- Nome do par de chaves: copie e cole o bloco público do seu par de chaves SSH (por padrão, o conteúdo de ~/.ssh/id_rsa.pub).
Selecione Examinar + Criar>Criar.
Leva alguns minutos para o cluster do AKS ser criado. Aguarde até que o cluster seja implantado com êxito antes de passar para a próxima etapa.
Conectar-se ao cluster
Para gerenciar um cluster do Kubernetes, use o cliente de linha de comando do Kubernetes, kubectl. Se você usar o Azure Cloud Shell, o kubectl já estará instalado.
Para instalar e executar kubectl localmente, use o az aks install-cli comando.
Configure o
kubectlpara se conectar ao cluster do Kubernetes usando o comandoaz aks get-credentials. Este comando baixa as credenciais e configura a CLI do Kubernetes para usá-las.az aks get-credentials \ --resource-group myResourceGroup \ --name myAKSClusterVerifique a conexão com o cluster usando o comando
kubectl get. Esse comando retorna uma lista dos nós de cluster.kubectl get nodesA saída de exemplo a seguir mostra os três nós criados nas etapas anteriores. Verifique se que o status do nó é Pronto:
NAME STATUS ROLES AGE VERSION aks-agentpool-12345678-vmss000000 Ready <none> 5m53s v1.32.7 aks-agentpool-12345678-vmss000001 Ready <none> 6m31s v1.32.7 aks-agentpool-12345678-vmss000002 Ready <none> 6m35s v1.32.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, como quais imagens de contêiner executar. O manifesto inclui as seguintes implantações e serviços do Kubernetes:
- 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.
Note
Não é recomendável executar contêineres com estado, como o Rabbit MQ, sem armazenamento persistente para produção. Elas são usadas aqui para simplificar, mas recomendamos o uso de serviços gerenciados, como Azure Cosmos DB ou Barramento de Serviço do Azure.
Crie um arquivo chamado
aks-store-quickstart.yamle copie-o para o manifesto a seguir:apiVersion: apps/v1 kind: Deployment metadata: name: rabbitmq spec: replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi initContainers: - name: wait-for-rabbitmq image: busybox command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;'] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 resources: requests: cpu: 1m memory: 1Mi limits: cpu: 1m memory: 7Mi --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancerPara obter um detalhamento dos arquivos de manifesto YAML, confira Implantações e manifestos YAML.
Se você criar e salvar o arquivo YAML localmente, poderá carregar o arquivo de manifesto no diretório padrão no CloudShell selecionando o botão Carregar/Baixar arquivos e selecionando o arquivo no sistema de arquivos local.
Implante o aplicativo usando o comando
kubectl applye especifique o nome do manifesto YAML.kubectl apply -f aks-store-quickstart.yamlA saída de exemplo a seguir mostra as implantações e os serviços:
deployment.apps/rabbitmq 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
Testar o aplicativo
Verifique o status dos pods implantados usando o comando
kubectl get pods. Faça com que todos os pods estejamRunningantes de continuar.kubectl get podsVerifique se há um endereço IP público para o aplicativo de store-front. Monitore o andamento usando o comando
kubectl get servicecom o argumento--watch.kubectl get service store-front --watchA saída EXTERNAL-IP do serviço
store-frontserá mostrada inicialmente como pendente:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4mQuando o endereço EXTERNAL-IP for alterado de pendente para um endereço IP público real, use
CTRL-Cpara parar o processo de monitoramento dokubectl.A seguinte saída de exemplo mostra um endereço IP público válido atribuído ao serviço:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5mAbra um navegador da Web no endereço IP externo do serviço para ver o aplicativo da Loja do Azure em ação:
Excluir o cluster
Se você não planeja seguir o tutorial do AKS, limpe os recursos desnecessários para evitar cobranças do Azure.
Remova o grupo de recursos, o serviço de contêiner e todos os recursos relacionados usando o comando az group delete.
az group delete --name myResourceGroup --yes --no-wait
Note
O cluster do AKS foi criado com uma identidade gerenciada atribuída pelo sistema, que é a opção de identidade padrão usada neste início rápido. A plataforma gerencia essa identidade, para que você não precise removê-la manualmente.
Conteúdo relacionado
Neste início rápido, você implantou um cluster do AKS com ACL para AKS usando um modelo do ARM. Para saber mais sobre ACL para AKS, consulte Azure ACL (Container Linux) para AKS (Serviço de Kubernetes do Azure).