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.
O Serviço Kubernetes do Azure (AKS) é um serviço Kubernetes gerenciado que permite implantar e gerenciar clusters rapidamente. Neste início rápido, irá:
- Implemente um cluster do AKS com o portal do Azure.
- Execute 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.
Nota
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.
Antes de começar
Este guia de introdução parte do princípio de que possui conhecimentos básicos 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.
- Se você não estiver familiarizado com o Azure Cloud Shell, consulte Visão geral do Azure Cloud Shell.
- 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).
Importante
A partir de 30 de novembro de 2025, o AKS deixará de suportar ou fornecer atualizações de segurança para o Azure Linux 2.0. A partir de 31 de março de 2026, as imagens dos nós serão removidas e não poderás dimensionar os teus pools de nós. Migre para uma versão Linux do Azure com suporte atualizando seus pools de nós para uma versão do Kubernetes com suporte ou migrando para o osSku AzureLinux3. Para obter mais informações, consulte [Desativação] Pools de nós do Azure Linux 2.0 no AKS.
Criar um cluster do AKS
Inicie sessão no portal do Azure.
Na home page do portal do Azure, selecione Criar um recurso.
Na seção Categorias, selecione Contêineres>Serviço Kubernetes do Azure (AKS).
Na guia Noções básicas, defina as seguintes configurações:
- Em Detalhes do projeto:
- Assinatura: selecione a assinatura do Azure que você deseja usar para este cluster AKS.
- Grupo de recursos: selecione Criar novo, insira um nome de grupo de recursos, como myResourceGroup, e selecione Ok. Embora você possa selecionar um grupo de recursos existente, para fins de teste ou avaliação, recomendamos a criação de um grupo de recursos para hospedar temporariamente esses recursos e evitar afetar suas cargas de trabalho de produção ou desenvolvimento.
- Em Detalhes do cluster:
Configuração predefinida do cluster: Selecione Desenvolvimento/Teste. Para obter mais detalhes sobre configurações predefinidas, consulte Predefinições de configuração de cluster no portal do Azure.
Nome do cluster Kubernetes: insira um nome de cluster, como myAKSCluster.
Região: selecione uma região, como East US 2.
Zonas de disponibilidade: Selecione Nenhum.
Nível de preço do AKS: Selecione Gratuito.
Deixe os valores padrão para as configurações restantes e selecione Avançar.
- Em Detalhes do projeto:
Na guia Pools de nós, defina as seguintes configurações:
Selecione Adicionar pool de nós e insira um nome de pool de nós, como nplinux.
Modo: Selecione Usuário.
OS SKU: Selecione Ubuntu Linux.
Zonas de disponibilidade: Selecione Nenhum.
Deixe a caixa de seleção Habilitar instâncias spot do Azure desmarcada.
Tamanho do nó: selecione Escolher um tamanho. Na página Selecionar um tamanho de VM, selecione D2s_v3 e, em seguida, selecione Selecionar.
Deixe os valores padrão para as configurações restantes e selecione Adicionar.
Selecione Rever + criar para executar a validação na configuração do cluster. Após a conclusão da validação, selecione Criar.
A criação do cluster do AKS demora alguns minutos. Quando a implantação estiver concluída, navegue até o recurso selecionando Ir para o recurso ou navegando até o grupo de recursos do cluster AKS e selecionando o recurso AKS.
Ligar ao cluster
Você usa o cliente de linha de comando do Kubernetes, kubectl, para gerenciar clusters do Kubernetes.
kubectl já está instalado se você usar o Azure Cloud Shell. Se você não estiver familiarizado com o Cloud Shell, consulte Visão geral do Azure Cloud Shell.
Se você estiver usando o Cloud Shell, abra-o com o >_ botão na parte superior do portal do Azure. Se você estiver usando o PowerShell localmente, conecte-se ao Azure por meio do Connect-AzAccount comando. Se você estiver usando a CLI do Azure localmente, conecte-se ao Azure por meio do az login 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 com o cluster usando
kubectl getpara retornar uma lista dos nós do cluster.kubectl get nodesA saída de exemplo seguinte mostra o nó único criado nos passos anteriores. Verifique se o status do nó é Pronto.
NAME STATUS ROLES AGE VERSION aks-nodepool1-31718369-0 Ready agent 6m44s v1.15.10
Implementar a aplicação
Você usa 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 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 uma fila de pedidos.
Nota
Não recomendamos a execução de contêineres com monitoração de estado, como o Rabbit MQ, sem armazenamento persistente para produção. Eles são usados aqui para simplificar, mas recomendamos o uso de serviços gerenciados, como o Azure CosmosDB ou o Azure Service Bus.
No Cloud Shell, abra um editor e crie um arquivo chamado
aks-store-quickstart.yaml.Cole o seguinte manifesto no editor:
apiVersion: apps/v1 kind: StatefulSet metadata: name: rabbitmq spec: serviceName: rabbitmq 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 startupProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 20 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 3000 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 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 env: - name: AI_SERVICE_URL value: "http://ai-service:5001/" resources: requests: cpu: 1m memory: 1Mi limits: cpu: 2m memory: 20Mi readinessProbe: httpGet: path: /health port: 3002 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3002 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- 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 startupProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 5 readinessProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 3 livenessProbe: httpGet: path: /health port: 8080 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- 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 Implantaçõ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 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 a aplicação
Quando o aplicativo é executado, um serviço Kubernetes expõe o front-end do aplicativo à Internet. Este processo pode demorar alguns minutos a concluir.
Verifique o status dos pods implantados usando o
kubectl get podscomando. Certifique-se de que todos os pods estãoRunningantes de prosseguir.kubectl get podsVerifique se há um endereço IP público para o
store-frontaplicativo. Monitore o progresso usando okubectl get servicecomando com o--watchargumento.kubectl get service store-front --watchA saída EXTERNAL-IP para o
store-frontserviço inicialmente mostra 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 pendentemonitoramento.
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 você não planeja passar pela série de tutoriais do AKS, limpe recursos desnecessários para evitar cobranças do Azure.
No portal do Azure, navegue até o grupo de recursos de cluster AKS.
Selecione Eliminar grupo de recursos.
Introduza o nome do grupo de recursos a eliminar e, em seguida, selecione Eliminar>Eliminar.
Nota
O cluster AKS foi criado com uma identidade gerenciada atribuída pelo sistema. Essa identidade é gerenciada pela plataforma e não requer remoção.
Próximos passos
Neste início rápido, você implantou um cluster Kubernetes e, em seguida, implantou um aplicativo simples de vários contêineres nele. Este aplicativo de exemplo é apenas para fins de demonstração e não representa todas as práticas recomendadas para aplicativos Kubernetes. Para obter orientação sobre como criar soluções completas com o AKS para produção, consulte Orientação de solução AKS.
Para saber mais sobre o AKS e percorrer um exemplo completo de código para implantação, continue para a série de tutoriais do cluster Kubernetes.
Azure Kubernetes Service