Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Comece a usar Azure Container Linux (ACL) para AKS implementando um cluster AKS usando um modelo Azure Resource Manager (ARM).
Neste início rápido, vais aprender como:
- Crie um cluster AKS usando ACL para AKS.
- Implemente o cluster usando um modelo ARM.
- Execute uma aplicação de exemplo com múltiplos contêineres, incluindo um grupo de microserviços e interfaces web, simulando um cenário de retalho.
Note
Para começar a provisionar rapidamente um cluster AKS, este artigo inclui etapas para implantar um cluster com configurações padrão apenas 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 ela se alinha aos seus requisitos de negócios.
Importante
Se estiver a usar Azure Container Linux (ACL) no AKS, certifique-se de rever as seguintes considerações e limitações:
- O ACL está geralmente disponível a partir do AKS v1.34.
- ACL requer Trusted Launch com Secure Boot e vTPM. Variantes de Lançamento Não Confiável não estão disponíveis.
- A ACL no Arm64 requer SKUs baseados em Cobalto (v6) para permitir a compatibilidade com o Trusted Launch.
-
NodeImageeNonesão os únicos canais de atualização de sistemas operativos (SO) suportados.UnmanagedeSecurityPatchsão incompatíveis com ACL devido ao diretório imutável/usr. - O Streaming de Artefactos não é suportado.
- O Pod Sandboxing não é suportado.
- Não há suporte para Máquinas Virtuais Confidenciais (CVMs).
- As VMs da Geração 1 não são suportadas.
Pré-requisitos
- Este artigo pressupõe uma compreensão básica dos conceitos do Kubernetes. Para obter mais informações, consulte Conceitos principais do Kubernetes para o Serviço Kubernetes do Azure (AKS).
- Se não tiver uma conta do Azure, crie uma conta gratuita antes de começar.
- Verifique se a identidade usada para criar o cluster tem as permissões mínimas apropriadas. Para obter mais detalhes sobre acesso e identidade para AKS, consulte Opções de acesso e identidade para o Serviço Kubernetes do Azure (AKS).
- Para implementar um template ARM, precisas de acesso de escrita aos recursos que estás a implementar e acesso a todas as operações no tipo de recurso
Microsoft.Resources/deployments. Por exemplo, para implantar uma máquina virtual, é necessário ter permissõesMicrosoft.Compute/virtualMachines/writeeMicrosoft.Resources/deployments/*. Para obter uma lista de funções e permissões, veja Funções incorporadas 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.
Registe os fornecedores de recursos necessários
Pode ser necessário registar os fornecedores de recursos necessários, como Microsoft.ContainerService na sua subscrição de Azure.
Verificar o estado do registo
Verifique o status do registro usando o az provider show comando.
az provider show --namespace Microsoft.ContainerService --query registrationState
Registar o fornecedor de recursos
Se necessário, registar o fornecedor 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 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, vá para a seção Revisar o modelo .
Para acessar os nós AKS, você se conecta usando um par de chaves SSH (público e privado), que você gera usando o ssh-keygen comando. Por padrão, esses arquivos são criados no diretório ~/.ssh . A execução do ssh-keygen comando substitui qualquer par de chaves SSH com o mesmo nome já existente no local determinado. Para obter mais informações sobre como criar chaves SSH, consulte Criar e gerenciar chaves SSH para autenticação no Azure.
Navega até https://shell.azure.com para abrir Cloud Shell no teu navegador.
Crie um grupo de recursos usando o comando
az group create. O exemplo seguinte cria um grupo de recursos chamado myResourceGroup na região do 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 criar 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
Rever o modelo
A seguinte implementação utiliza um template 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 exemplos do AKS, consulte o site de modelos de início rápido do AKS.
Implementar o modelo
Selecione Implantar no Azure para entrar e abrir um modelo.
Configure os parâmetros do modelo na página de Implementação Personalizada . Para este quickstart, deixe os valores predefinidos para o Tamanho do Disco do SO GB, Número de Agentes, Tamanho da VM do Agente e Tipo de SO. Forneça os seus próprios valores para os seguintes parâmetros:
- Subscrição: selecione uma subscrição do Azure.
- Grupo de recursos: selecione Criar novo. Insira um nome exclusivo para o grupo de recursos, como myResourceGroup, e selecione OK.
-
SKU do SO: Especifique AzureContainerLinux. Se não atualizares o SKU do sistema operativo, o padrão é
Ubuntu. - Localização: selecione um local, como East US.
- Nome do cluster: insira um nome exclusivo para o cluster AKS, como myAKSCluster.
- Prefixo DNS: insira um prefixo DNS exclusivo para seu cluster, como myakscluster.
- Linux Admin Username: insira um nome de usuário para se conectar usando SSH, como azureuser.
- Origem da chave pública SSH: Selecione Usar chave pública existente.
- Nome do par de chaves: copie e cole a parte pública do seu par de chaves SSH (por padrão, o conteúdo de ~/.ssh/id_rsa.pub).
Selecione Rever + Criar>Criar.
A criação do cluster do AKS demora alguns minutos. Aguarde até que o cluster seja implantado com êxito antes de passar para a próxima etapa.
Ligar ao cluster
Para gerenciar um cluster Kubernetes, use o cliente de linha de comando Kubernetes, kubectl. Se você usa o Azure Cloud Shell, kubectl já está instalado.
Para instalar e executar kubectl localmente, use o az aks install-cli comando.
Configure
kubectlpara se conectar ao cluster do Kubernetes usando oaz aks get-credentialscomando. Este comando baixa credenciais e configura a CLI do Kubernetes para usá-las.az aks get-credentials \ --resource-group myResourceGroup \ --name myAKSClusterVerifique a conexão ao seu cluster utilizando o comando
kubectl get. Este comando devolve uma lista dos nodes do cluster.kubectl get nodesA saída de exemplo a seguir mostra os três nós criados nas etapas anteriores. Certifique-se de que o estado do nó está 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
Implementar a aplicação
Para implementar a aplicação, utiliza-se um ficheiro manifesto para criar todos os objetos necessários para executar a aplicação AKS Store. Um arquivo de manifesto do Kubernetes define o estado desejado de um cluster, como quais imagens de contêiner devem ser executadas. O manifesto inclui as seguintes implantações e serviços do Kubernetes:
- Vitrine: aplicativo Web para que os clientes visualizem produtos e façam pedidos.
- Serviço do produto: Mostra as informações do produto.
- Serviço de pedidos: Faz pedidos.
- Rabbit MQ: Fila de mensagens para processamento de pedidos.
Note
Não recomendamos a execução de contentores com estado, como o RabbitMQ, sem armazenamento persistente para produção. Eles são usados aqui para simplificar, mas recomendamos o uso de serviços gerenciados, como o Azure Cosmos DB ou o Azure Service Bus.
Crie um arquivo nomeado
aks-store-quickstart.yamle copie no seguinte manifesto: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, consulte Implementações e manifestos YAML.
Se você criar e salvar o arquivo YAML localmente, poderá carregar o arquivo de manifesto para seu diretório padrão no CloudShell selecionando o botão Upload/Download de arquivos e selecionando o arquivo do seu sistema de arquivos local.
Implante o aplicativo usando o
kubectl applycomando e especifique o nome do seu manifesto YAML.kubectl apply -f aks-store-quickstart.yamlA saída de exemplo a seguir mostra as implementaçõ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 a aplicação
Verifique o status dos pods implantados usando o
kubectl get podscomando. Faça com que todos os pods estejamRunningantes de prosseguir.kubectl get podsVerifique se há um endereço IP público para a aplicação de loja. Monitore o progresso usando o
kubectl get servicecomando com o--watchargumento.kubectl get service store-front --watchO resultado EXTERNAL-IP para o
store-frontserviço aparece 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 mudar de pendente para um endereço IP público real, use
CTRL-Cpara parar o processo de monitoramentokubectl.A saída de exemplo a seguir 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 seu serviço para ver o aplicativo da Loja Azure em ação:
Eliminar o cluster
Se não planeias seguir o tutorial AKS, elimina recursos desnecessários para evitar encargos do Azure.
Remova o grupo de recursos, o serviço de contêiner e todos os recursos relacionados usando o az group delete comando.
az group delete --name myResourceGroup --yes --no-wait
Note
O cluster AKS foi criado com uma identidade gerenciada atribuída ao sistema, que é a opção de identidade padrão usada neste início rápido. A plataforma gerencia essa identidade, portanto, você não precisa removê-la manualmente.
Conteúdo relacionado
Neste quickstart, implementaste um cluster AKS com ACL para AKS usando um template ARM. Para saber mais sobre ACL para AKS, consulte Azure Container Linux (ACL) para Azure Kubernetes Service (AKS).