Início Rápido: Implantar um cluster do Serviço de Kubernetes do Azure usando a CLI do Azure

O AKS (Serviço de Kubernetes do Azure) é um serviço de Kubernetes gerenciado que permite implantar e gerenciar clusters rapidamente. Neste guia de início rápido, você vai:

  • Implantar um cluster do AKS usando a CLI do Azure.
  • Execute um aplicativo de vários contêineres de exemplo com um front-end da Web e uma instância do Redis no cluster.

Captura de tela da navegação do aplicativo de exemplo de Voto do Azure.

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.

Para saber mais sobre como criar um pool de nós do Windows Server, confira Criar um cluster do AKS compatível com contêineres do Windows Server.

Pré-requisitos

Você pode usar o Azure Cloud Shell ou uma CLI do Azure local.

  • Este artigo exige a versão 2.0.64 ou posterior da CLI do Azure. Se você está usando o Azure Cloud Shell, a versão mais recente já está instalada.

  • A identidade que você está usando para criar o 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).

  • Se tiver várias assinaturas do Azure, selecione a ID da assinatura adequada para cobrança dos recursos usando o comando az account.

  • Verifique se os provedores Microsoft.OperationsManagement e Microsoft.OperationalInsights estão registrados em sua assinatura. Esses são os provedores de recursos do Azure necessários para dar suporte aos insights de contêiner. Para verificar o status de registro, execute os seguintes comandos:

    az provider show -n Microsoft.OperationsManagement -o table
    az provider show -n Microsoft.OperationalInsights -o table
    

    Se ainda não estiverem registrados, registre Microsoft.OperationsManagement e Microsoft.OperationalInsights usando os seguintes comandos:

    az provider register --namespace Microsoft.OperationsManagement
    az provider register --namespace Microsoft.OperationalInsights
    

Observação

Execute os comandos com privilégios administrativos, se você planeja executar os comandos neste início rápido localmente, e não no Azure Cloud Shell.

Criar um grupo de recursos

Um grupo de recursos do Azure é um grupo lógico no qual os recursos do Azure são implantados e gerenciados. Ao criar um grupo de recursos, você será solicitado a especificar uma localização. Essa localização é:

  • A localização de armazenamento dos metadados do grupo de recursos.
  • Onde seus recursos serão executados no Azure caso você não especifique outra região durante a criação de recursos.

O exemplo a seguir cria um grupo de recursos chamado myResourceGroup no local eastus.

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

az group create --name myResourceGroup --location eastus

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

{
  "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
  "location": "eastus",
  "managedBy": null,
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Criar cluster AKS

Crie um cluster do AKS usando o comando az aks create com o parâmetro --enable-addons monitoring e --enable-msi-auth-for-monitoring para habilitar os insights de Contêineres do Azure Monitor com a autenticação de identidade gerenciada (versão prévia). O exemplo a seguir cria um cluster chamado myAKSCluster com um nó e habilita uma identidade gerenciada atribuída pelo sistema:

az aks create -g myResourceGroup -n myAKSCluster --enable-managed-identity --node-count 1 --enable-addons monitoring --enable-msi-auth-for-monitoring  --generate-ssh-keys

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

Observação

Quando você cria um cluster do AKS, um segundo grupo de recursos é criado automaticamente para armazenar os recursos do AKS. Para obter mais informações, confira Por que dois grupos de recursos são criados com o AKS?

Conectar-se ao cluster

Para gerenciar um cluster do Kubernetes, use o cliente de linha de comando do Kubernetes, kubectl. kubectl já está instalado se você usa o Azure Cloud Shell.

  1. Instale kubectl localmente usando o comando az aks install-cli:

    az aks install-cli
    
  2. Configure o kubectl para se conectar ao cluster do Kubernetes usando o comando az aks get-credentials. O seguinte comando:

    • Baixa credenciais e configura a CLI de Kubernetes para usá-las.
    • Usa ~/.kube/config, a localização padrão do arquivo de configuração do Kubernetes. Especifique outra localização para o arquivo de configuração do Kubernetes usando o argumento --file.
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. 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 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.12.8
    

Implantar o aplicativo

Um arquivo de manifesto do Kubernetes define o estado desejado de um cluster, por exemplo, as imagens de contêiner a serem executadas.

Neste início rápido, você usará um manifesto para criar todos os objetos necessários para executar o aplicativo Azure Vote. Esse manifesto inclui duas implantações do Kubernetes:

  • Os aplicativos Azure Vote de exemplo em Python.
  • Uma instância do Redis.

Dois Serviços Kubernetes também são criados:

  • Um serviço interno para a instância do Redis.
  • Um serviço externo para acessar o aplicativo Azure Vote da Internet.
  1. Crie um arquivo chamado azure-vote.yaml e copie-o para o manifesto a seguir.

    • Se você usar o Azure Cloud Shell, esse arquivo poderá ser criado usando code, vi ou nano, como se você estivesse trabalhando em um sistema físico ou virtual.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-back
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-back
      template:
        metadata:
          labels:
            app: azure-vote-back
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: azure-vote-back
            image: mcr.microsoft.com/oss/bitnami/redis:6.0.8
            env:
            - name: ALLOW_EMPTY_PASSWORD
              value: "yes"
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            ports:
            - containerPort: 6379
              name: redis
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: azure-vote-back
    spec:
      ports:
      - port: 6379
      selector:
        app: azure-vote-back
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-front
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-front
      template:
        metadata:
          labels:
            app: azure-vote-front
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: azure-vote-front
            image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            ports:
            - containerPort: 80
            env:
            - name: REDIS
              value: "azure-vote-back"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: azure-vote-front
    spec:
      type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: azure-vote-front
    
  2. Implante o aplicativo usando o comando kubectl apply e especifique o nome do manifesto YAML:

    kubectl apply -f azure-vote.yaml
    

    O exemplo a seguir é semelhante à saída que mostra as implantações e serviços criados com êxito:

    deployment "azure-vote-back" created
    service "azure-vote-back" created
    deployment "azure-vote-front" created
    service "azure-vote-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.

Monitore o andamento usando o comando kubectl get service com o argumento --watch.

kubectl get service azure-vote-front --watch

A saída EXTERNAL-IP do serviço azure-vote-front será mostrada inicialmente como pendente.

NAME               TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s

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 do kubectl. A seguinte saída de exemplo mostra um endereço IP público válido atribuído ao serviço:

azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

Para ver o aplicativo Azure Vote em ação, abra um navegador da Web no endereço IP externo do serviço.

Captura de tela da navegação do aplicativo de exemplo de Voto do Azure.

Excluir o cluster

Para evitar encargos do Azure, se você não planeja passar pelos tutoriais a seguir, limpe os recursos desnecessários. Use 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 myResourceGroup --yes --no-wait

Observação

Se o cluster do AKS tiver sido criado com a identidade gerenciada atribuída pelo sistema (opção de identidade padrão usada neste guia de início rápido), a identidade será gerenciada pela plataforma e não exigirá 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.

Para saber mais sobre o AKS e percorrer um código completo de exemplo de implantação, prossiga para o tutorial de cluster Kubernetes.

Este início rápido é para fins introdutórios. Para obter diretrizes sobre como criar soluções completas com o AKS para produção, consulte Diretrizes sobre a solução AKS.