Tutorial: Configurar clusters do Serviço Kubernetes do Azure (AKS) no Azure usando o Ansible
Importante
O Ansible 2.8 (ou posterior) é necessário para executar os playbooks de exemplo neste artigo.
O Serviço Kubernetes do Azure (AKS) simplifica a implantação de um cluster Kubernetes gerenciado no Azure. O AKS reduz a complexidade e a sobrecarga operacional de gerir o Kubernetes ao descarregar grande parte dessa responsabilidade para o Azure. Enquanto serviço alojado do Kubernetes, o Azure lida com tarefas críticas para si, como a monitorização do estado de funcionamento e a manutenção. Os mestres do Kubernetes são geridos pelo Azure. Pode apenas gerir e manter os nós dos agentes. Como um serviço Kubernetes gerenciado, o AKS é gratuito - você paga apenas pelos nós do agente dentro de seus clusters; não para os mestres.
O AKS pode ser configurado para usar o Microsoft Entra ID para autenticação do usuário. Uma vez configurado, você usa seu 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 a um grupo de diretórios.
Neste artigo, vai aprender a:
- Criar um cluster do AKS
- Configurar um cluster do AKS
Pré-requisitos
- Subscrição do Azure: se não tem uma subscrição 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, senha e locatário.
Instale o Ansible: execute uma das seguintes opções:
- Instalar e configurar o Ansible em uma máquina virtual Linux
- Configure o Azure Cloud Shell e, se você não tiver acesso a uma máquina virtual Linux, crie uma máquina virtual com o Ansible.
Criar um cluster do AKS gerido
O manual de exemplo cria um grupo de recursos e um cluster AKS dentro do grupo de recursos.
Guarde o manual de procedimentos seguinte 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 playbook, consulte as seguintes notas:
- A primeira seção dentro define um grupo de recursos nomeado
myResourceGroup
dentrotasks
doeastus
local. - A segunda seção dentro define um cluster AKS nomeado
myAKSCluster
dentrotasks
domyResourceGroup
grupo de recursos. - Para o
your_ssh_key
espaço reservado, insira sua chave pública RSA no formato de linha única - começando com "ssh-rsa" (sem as aspas). - Para o espaço reservado, use o
aks_version
comando az aks get-versions .
Execute o playbook usando o ansible-playbook
ansible-playbook azure_create_aks.yml
A execução do playbook 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 manual de procedimentos de exemplo na secção anterior define dois nós. Você ajusta o número de nós modificando o count
valor no agent_pool_profiles
bloco .
Guarde o manual de procedimentos seguinte 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 playbook, consulte as seguintes notas:
- Para o
your_ssh_key
espaço reservado, insira sua chave pública RSA no formato de linha única - começando com "ssh-rsa" (sem as aspas).
Execute o playbook usando o ansible-playbook
ansible-playbook azure_configure_aks.yml
A execução do playbook 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
Eliminar um cluster do AKS gerido
O playbook de exemplo exclui um cluster AKS.
Guarde o manual de procedimentos seguinte 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
Execute o playbook usando o ansible-playbook
ansible-playbook azure_delete_aks.yml
A execução do playbook 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