Tutoriel : Configurer des clusters Azure Kubernetes Service (AKS) dans Azure à l’aide d’Ansible

Important

Ansible 2.8 (ou version ultérieure) est nécessaire pour exécuter les exemples de playbooks dans cet article.

Azure Kubernetes Service (AKS) simplifie le déploiement dans Azure d’un cluster Kubernetes managé. AKS permet de réduire la complexité et la surcharge opérationnelle de la gestion d’un cluster Kubernetes en déléguant une grande partie de cette responsabilité à Azure. En tant que service Kubernetes hébergé, Azure gère pour vous des tâches critiques telles que l’analyse de l'intégrité et la maintenance. Les maîtres Kubernetes sont gérés par Azure. Vous gérez uniquement les nœuds de l’agent. En tant que service Kubernetes managé, AKS est gratuit. Vous payez uniquement pour les nœuds de l’agent au sein de vos clusters, pas pour les maîtres.

AKS peut être configuré pour utiliser l’ID Microsoft Entra pour l’authentification utilisateur. Une fois configuré, vous utilisez votre jeton d’authentification Microsoft Entra pour vous connecter au cluster AKS. Le RBAC peut être basé sur l’identité d’un utilisateur ou l’appartenance à un groupe de répertoire.

Dans cet article, vous apprendrez comment :

  • Créer un cluster AKS
  • Configurer un cluster AKS

Prérequis

  • Abonnement Azure : Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Créer un cluster AKS managé

L’exemple de manuel crée un groupe de ressources et un cluster AKS au sein du groupe de ressources.

Enregistrez le playbook suivant en tant que 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

Avant d’exécuter le playbook, consultez les notes suivantes :

  • La première section au sein de tasks définit un groupe de ressources nommé myResourceGroup dans l’emplacement eastus.
  • La deuxième section au sein de tasks définit un cluster AKS nommé myAKSCluster dans le groupe de ressources myResourceGroup.
  • Pour l’espace réservé your_ssh_key, entrez votre clé publique RSA dans un format de ligne unique, commençant par « ssh-rsa » (sans les guillemets).
  • Pour l'espace réservé aks_version, utilisez la commande az aks get-versions.

Exécutez le playbook en utilisant ansible-playbook

ansible-playbook azure_create_aks.yml

L’exécution du playbook donne des résultats similaires à la sortie suivante :

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

Mettre à l’échelle nœuds ACS

L’exemple de playbook de la section précédente définit deux nœuds. Vous ajustez le nombre de nœuds en modifiant la valeur count dans le bloc agent_pool_profiles.

Enregistrez le playbook suivant en tant que 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

Avant d’exécuter le playbook, consultez les notes suivantes :

  • Pour l’espace réservé your_ssh_key, entrez votre clé publique RSA dans un format de ligne unique, commençant par « ssh-rsa » (sans les guillemets).

Exécutez le playbook en utilisant ansible-playbook

ansible-playbook azure_configure_aks.yml

L’exécution du playbook donne des résultats similaires à la sortie suivante :

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

Supprimer un cluster AKS managé

L’exemple de manuel supprime un cluster AKS.

Enregistrez le playbook suivant en tant que 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

Exécutez le playbook en utilisant ansible-playbook

ansible-playbook azure_delete_aks.yml

L’exécution du playbook donne des résultats similaires à la sortie suivante :

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

Étapes suivantes