Tutorial: Configurar clusters do Serviço de Kubernetes do Azure (AKS) no Azure usando o Ansible

Importante

O Ansible 2.8 (ou posterior) é necessário para executar os guias estratégicos de exemplo deste artigo.

O AKS (Serviço de Kubernetes do Azure) simplifica a implantação de um cluster do Kubernetes gerenciado no Azure. O AKS reduz a complexidade e a sobrecarga operacional de gerenciar o Kubernetes passando grande parte dessa responsabilidade para o Azure. Como um serviço Kubernetes hospedado, o Azure lida com as tarefas críticas para você, como o monitoramento da integridade e a manutenção. Os mestres de Kubernetes são gerenciados pelo Azure. Você só gerencia e mantém os nós de agente. Como um serviço do Kubernetes gerenciado, o AKS é gratuito: você paga apenas pelos nós de agentes dentro dos clusters, não pelos mestres.

O AKS pode ser configurado para usar o Microsoft Entra ID para autenticação do usuário. Depois de configurado, você usa o token de autenticação do Microsoft Entra para entrar no cluster AKS. O RBAC pode ser baseado na identidade de um usuário ou na associação do grupo de diretórios.

Neste artigo, você aprenderá como:

  • Criar um cluster AKS
  • Configurar um cluster do AKS

Pré-requisitos

  • Assinatura do Azure: caso você não tenha uma assinatura do Azure, crie uma conta gratuita antes de começar.

Criar um cluster do AKS gerenciado

O guia estratégico de exemplo cria um grupo de recursos e um cluster do AKS no grupo de recursos.

Salve o guia estratégico a seguir como azure_create_aks.yml:

- name: Create Azure Kubernetes Service
  hosts: localhost
  connection: local
  vars:
    resource_group: myResourceGroup
    location: eastus
    aks_name: myAKSCluster
    username: azureuser
    ssh_key: "your_ssh_key"
    client_id: "your_client_id"
    client_secret: "your_client_secret"
    aks_version: aks_version
  tasks:
  - name: Create resource group
    azure_rm_resourcegroup:
      name: "{{ resource_group }}"
      location: "{{ location }}"
  - name: Create a managed Azure Container Services (AKS) cluster
    azure_rm_aks:
      name: "{{ aks_name }}"
      location: "{{ location }}"
      resource_group: "{{ resource_group }}"
      dns_prefix: "{{ aks_name }}"
      kubernetes_version: "{{aks_version}}"
      linux_profile:
        admin_username: "{{ username }}"
        ssh_key: "{{ ssh_key }}"
      service_principal:
        client_id: "{{ client_id }}"
        client_secret: "{{ client_secret }}"
      agent_pool_profiles:
        - name: default
          count: 2
          vm_size: Standard_D2_v2
      tags:
        Environment: Production

Antes de executar o guia estratégico, confira as observações a seguir:

  • A primeira seção dentro de tasks define um grupo de recursos chamado myResourceGroup dentro no local eastus.
  • A segunda seção dentro de tasks define um cluster do AKS chamado myAKSCluster dentro do grupo de recursos myResourceGroup.
  • Para o espaço reservado your_ssh_key, insira a chave pública RSA no formato de linha única – começando com "ssh-rsa" (sem as aspas).
  • Para o espaço reservado aks_version, use o comando az aks get-versions.

Executar o guia estratégico usando ansible-playbook

ansible-playbook azure_create_aks.yml

A execução do guia estratégico mostra resultados semelhantes à seguinte saída:

PLAY [Create AKS] 

TASK [Gathering Facts] 
ok: [localhost]

TASK [Create resource group] 
changed: [localhost]

TASK [Create an Azure Container Services (AKS) cluster] 
changed: [localhost]

PLAY RECAP 
localhost                  : ok=3    changed=2    unreachable=0    failed=0

Dimensionar nós do AKS

O guia estratégico de exemplo na seção anterior define dois nós. Você pode ajustar o número de nós modificando o valor count no bloco agent_pool_profiles.

Salve o guia estratégico a seguir como azure_configure_aks.yml:

- name: Scale AKS cluster
  hosts: localhost
  connection: local
  vars:
    resource_group: myResourceGroup
    location: eastus
    aks_name: myAKSCluster
    username: azureuser
    ssh_key: "your_ssh_key"
    client_id: "your_client_id"
    client_secret: "your_client_secret"
  tasks:
  - name: Scaling an existed AKS cluster
    azure_rm_aks:
        name: "{{ aks_name }}"
        location: "{{ location }}"
        resource_group: "{{ resource_group }}"
        dns_prefix: "{{ aks_name }}"
        linux_profile:
          admin_username: "{{ username }}"
          ssh_key: "{{ ssh_key }}"
        service_principal:
          client_id: "{{ client_id }}"
          client_secret: "{{ client_secret }}"
        agent_pool_profiles:
          - name: default
            count: 3
            vm_size: Standard_D2_v2

Antes de executar o guia estratégico, confira as observações a seguir:

  • Para o espaço reservado your_ssh_key, insira a chave pública RSA no formato de linha única – começando com "ssh-rsa" (sem as aspas).

Executar o guia estratégico usando ansible-playbook

ansible-playbook azure_configure_aks.yml

A execução do guia estratégico mostra resultados semelhantes à seguinte saída:

PLAY [Scale AKS cluster] 

TASK [Gathering Facts] 
ok: [localhost]

TASK [Scaling an existed AKS cluster] 
changed: [localhost]

PLAY RECAP 
localhost                  : ok=2    changed=1    unreachable=0    failed=0

Excluir um cluster do AKS gerenciado

O guia estratégico de exemplo exclui um cluster do AKS.

Salve o guia estratégico a seguir como azure_delete_aks.yml:

- name: Delete a managed Azure Container Services (AKS) cluster
  hosts: localhost
  connection: local
  vars:
    resource_group: myResourceGroup
    aks_name: myAKSCluster
  tasks:
  - name:
    azure_rm_aks:
      name: "{{ aks_name }}"
      resource_group: "{{ resource_group }}"
      state: absent

Executar o guia estratégico usando ansible-playbook

ansible-playbook azure_delete_aks.yml

A execução do guia estratégico mostra resultados semelhantes à seguinte saída:

PLAY [Delete a managed Azure Container Services (AKS) cluster] 

TASK [Gathering Facts] 
ok: [localhost]

TASK [azure_rm_aks] 

PLAY RECAP 
localhost                  : ok=2    changed=1    unreachable=0    failed=0

Próximas etapas