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.

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 denominato myResourceGroup nella località eastus.
  • La seconda sezione in tasks consente di definire un cluster del servizio Azure Kubernetes risorse denominato myAKSCluster nel gruppo di risorse myResourceGroup.
  • 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

Passaggi successivi