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.
- Entidade de serviço do Azure: crie uma entidade de serviço anotando os seguintes valores: appId, displayName, password e tenant.
Instalar o Ansible: escolha uma das seguintes opções:
- Instalar e configurar o Ansible em uma máquina virtual do Linux
- Configurar o Azure Cloud Shell e, se você não tiver acesso a uma máquina virtual do Linux, criar uma máquina virtual com o Ansible.
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 chamadomyResourceGroup
dentro no localeastus
. - A segunda seção dentro de
tasks
define um cluster do AKS chamadomyAKSCluster
dentro do grupo de recursosmyResourceGroup
. - 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