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.
- Principal de service Azure : créez un principal de service en notant les valeurs suivantes : appId, displayName, password et tenant.
Installer Ansible. Pour cela, choisissez l’une des options suivantes :
- Installez et configurez Ansible sur une machine virtuelle Linux
- Configurez Azure Cloud Shell et, si vous n’avez pas accès à une machine virtuelle Linux, créez une machine virtuelle avec Ansible.
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’emplacementeastus
. - La deuxième section au sein de
tasks
définit un cluster AKS nommémyAKSCluster
dans le groupe de ressourcesmyResourceGroup
. - 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