Início Rápido: implantar um cluster do AKS (Serviço de Kubernetes do Azure) usando o portal do Azure
O AKS (Serviço de Kubernetes do Azure) é um serviço de Kubernetes gerenciado que permite implantar e gerenciar clusters rapidamente. Neste início rápido, você:
- Implantar um cluster do AKS usando o portal do Azure.
- Executar 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.
Observação
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.
Antes de começar
Este guia de início rápido 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).
- Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.
- Caso não esteja familiarizado com o Azure Cloud Shell, revise a Visão Geral do Azure Cloud Shell.
- 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).
Observação
O pool de nós do Linux do Azure agora está disponível em geral (GA). Para saber mais sobre os benefícios e as etapas de implantação, confira a Introdução ao host de contêiner do Linux do Azure para AKS.
Criar um cluster AKS
Entre no portal do Azure.
Na home page do portal do Azure, selecione Criar um recurso.
Na seção Categorias, selecione Contêineres>Serviço de Kubernetes do Azure (AKS).
Na guia Básico, configure os seguintes valores:
- Em Detalhes do projeto:
- Assinatura: selecione a assinatura do Azure que você deseja usar para este cluster do AKS.
- Grupo de recursos: selecione Criar, 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 criar 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, confira Predefinições de configuração de cluster no portal do Azure.
Nome do cluster do Kubernetes: insira um nome de cluster como myAKSCluster.
Região: selecione uma região, como Leste dos EUA 2.
Zonas de disponibilidade: selecione Nenhum.
Tipo 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, configure os seguintes valores:
Selecione Adicionar pool de nós e insira um Nome do pool de nós, como nplinux.
Modo: selecione Usuário.
SKU do sistema operacional: selecione Ubuntu Linux.
Zonas de disponibilidade: selecione Nenhum.
Deixe a caixa de seleção Habilitar instâncias de 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, Selecionar.
Deixe os valores padrão para as configurações restantes e selecione Adicionar.
Selecione Examinar + criar para executar a validação na configuração do cluster. Depois de concluir a validação, selecione Criar.
Leva alguns minutos para o cluster do AKS ser criado. Quando sua implantação for concluída, navegue até o recurso selecionando Ir para o recurso ou navegando até o grupo de recursos do cluster do AKS e selecionando o recurso do AKS.
Conectar-se ao cluster
Use o cliente de linha de comando do Kubernetes, kubectl, para gerenciar clusters do Kubernetes. kubectl
já está instalado se você usa o Azure Cloud Shell. Caso não esteja familiarizado com o Cloud Shell, revise a 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 comando Connect-AzAccount
. Se você estiver usando a CLI do Azure localmente, conecte-se ao Azure por meio do comando az login
.
Configure o
kubectl
para 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 myAKSCluster
Verifique a conexão com o cluster usando
kubectl get
para retornar uma lista dos nós de cluster.kubectl get nodes
A saída de exemplo a seguir mostra o único nó criado nas etapas anteriores. Verifique se que o status do nó é Pronto.
NAME STATUS ROLES AGE VERSION aks-nodepool1-31718369-0 Ready agent 6m44s v1.15.10
Implantar o aplicativo
Use um arquivo de manifesto para criar todos os objetos necessários para executar o Aplicativo da Loja do AKS. 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:
- 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 de 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. Eles são usados aqui para simplificar, mas recomendamos o uso de serviços gerenciados, como o Azure CosmosDB ou Barramento de Serviço do Azure.
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: 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: LoadBalancer
Para 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 apply
. Além disso, especifique o nome do manifesto YAML:kubectl apply -f aks-store-quickstart.yaml
A 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
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.
Verifique o status dos pods implantados usando o comando
kubectl get pods
. Garanta que todos os pods estejamRunning
, antes de continuar.kubectl get pods
Verifique se há um endereço IP público para o aplicativo
store-front
. Monitore o andamento usando o comandokubectl get service
com o argumento--watch
.kubectl get service store-front --watch
A saída EXTERNAL-IP do serviço
store-front
será mostrada inicialmente como pendente:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
Quando o endereço EXTERNAL-IP for alterado de pendente para um endereço IP público real, use
CTRL-C
para interromper o processo de inspeção 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 4h5m
Abra um navegador da Web no endereço IP externo do serviço para conferir o aplicativo do Microsoft Azure Store em ação.
Excluir o cluster
Se você não planeja seguir a série de tutoriais do AKS, limpe os recursos desnecessários para evitar cobranças do Azure.
No portal do Azure, navegue até o grupo de recursos do cluster do AKS.
Selecione Excluir grupo de recursos.
Insira o nome do grupo de recursos a ser excluído e selecione Excluir>Excluir.
Observação
O cluster do AKS foi criado com uma identidade gerenciada atribuída pelo sistema. Essa identidade é gerenciada pela plataforma e não requer remoção.
Próximas etapas
Neste início rápido, você implantou um cluster do Kubernetes e um simples aplicativo com vários contêineres. 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 e percorrer um código completo de exemplo de implantação, prossiga para a série de tutoriais de cluster Kubernetes.
Azure Kubernetes Service