Esercitazione: Configurare cluster servizio Azure Kubernetes (AKS) in Azure con Ansible
Importante
Per eseguire i playbook di esempio contenuti in questo articolo, è necessario Ansible 2.8 (o versione successiva).
Il servizio Azure Kubernetes semplifica la distribuzione di un cluster Kubernetes gestito in Azure. Il servizio Azure Kubernetes riduce la complessità e il sovraccarico operativo della gestione di Kubernetes scaricando gran parte di tale responsabilità su Azure. Come servizio Kubernetes ospitato, Azure gestisce automaticamente attività critiche come il monitoraggio dello stato e la manutenzione. I master di Kubernetes sono gestiti da Azure. È possibile gestire solo i nodi agente. In quanto servizio Kubernetes gestito, il servizio Azure Kubernetes è gratuito: si paga solo per i nodi dell'agente all'interno dei cluster e non per i master.
Il servizio Azure Kubernetes può essere configurato per l'uso dell'ID Entra Di Microsoft per l'autenticazione utente. Dopo la configurazione, usare il token di autenticazione Microsoft Entra per accedere al cluster del servizio Azure Kubernetes. Il ruolo Controllo degli accessi in base al ruolo può essere basato sull'identità di un utente o sull'appartenenza a gruppi di Active Directory.
In questo articolo vengono illustrate le operazioni seguenti:
- Creare un cluster del servizio Azure Kubernetes
- Configurare un cluster del servizio Azure Kubernetes
Prerequisiti
- Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
- Entità servizio di Azure: creare un'entità servizio, prendere nota dei valori seguenti: appId, displayName, password e tenant.
Installare Ansible: eseguire una delle opzioni seguenti:
- Installare e configurare Ansible in una macchina virtuale Linux
- Configurare Azure Cloud Shell e, se non si ha accesso a una macchina virtuale Linux, creare una macchina virtuale con Ansible.
Creare un cluster servizio Azure Kubernetes gestito
Il playbook di esempio consente di creare un gruppo di risorse e un cluster del servizio Azure Kubernetes nel gruppo di risorse.
Salvare il playbook seguente come 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
Prima di eseguire il playbook, vedere le note seguenti:
- La prima sezione in
tasks
consente di definire un gruppo di risorse denominatomyResourceGroup
nella localitàeastus
. - La seconda sezione in
tasks
consente di definire un cluster del servizio Azure Kubernetes risorse denominatomyAKSCluster
nel gruppo di risorsemyResourceGroup
. - Per il segnaposto
your_ssh_key
immettere una chiave pubblica RSA nel formato a riga singola che inizi con "ssh-rsa" (senza virgolette). - Per il segnaposto
aks_version
, usare il comando az aks get-versions.
Eseguire il playbook con ansible-playbook
ansible-playbook azure_create_aks.yml
Quando si esegue il playbook, i risultati visualizzati sono simili all'output seguente:
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
Aumentare i nodi del servizio Azure Container
Il playbook di esempio nella sezione precedente definisce due nodi. Per adattare il numero di nodi, modificare il valore count
nel blocco agent_pool_profiles
.
Salvare il playbook seguente come 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
Prima di eseguire il playbook, vedere le note seguenti:
- Per il segnaposto
your_ssh_key
immettere una chiave pubblica RSA nel formato a riga singola che inizi con "ssh-rsa" (senza virgolette).
Eseguire il playbook con ansible-playbook
ansible-playbook azure_configure_aks.yml
Quando si esegue il playbook, i risultati visualizzati sono simili all'output seguente:
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
Eliminare un cluster servizio Azure Kubernetes gestito
Il playbook di esempio consente di eliminare un cluster del servizio Azure Kubernetes.
Salvare il playbook seguente come 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
Eseguire il playbook con ansible-playbook
ansible-playbook azure_delete_aks.yml
Quando si esegue il playbook, i risultati visualizzati sono simili all'output seguente:
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