Tutorial: Configuración de clústeres de Azure Kubernetes Service (AKS) en Azure mediante Ansible
Importante
Para ejecutar los cuadernos de estrategias de ejemplo de este tutorial, se requiere Ansible 2.8 (o cualquier versión posterior).
Azure Kubernetes Service (AKS) simplifica la implementación en Azure de clústeres de Kubernetes administrados. AKS reduce la complejidad y la sobrecarga operativa de la administración de Kubernetes al descargar gran parte de esa responsabilidad en Azure. Como servicio hospedado de Kubernetes, Azure maneja tareas críticas como la supervisión del estado y el mantenimiento para usted. Azure administra los maestros de Kubernetes. Usted solo administra y mantiene los nodos del agente. Como servicio de Kubernetes administrado, AKS es gratuito (solo debe pagar los nodos de agente incluidos en sus clústeres, no los maestros).
AKS se puede configurar para usar microsoft Entra ID para la autenticación de usuario. Una vez configurado, se usa el token de autenticación de Microsoft Entra para iniciar sesión en el clúster de AKS. El RBAC puede basarse en la identidad de un usuario o en la pertenencia al grupo de directorio.
En este artículo aprenderá a:
- Creación de un clúster de AKS
- Configuración de un clúster de AKS
Requisitos previos
- Suscripción de Azure: si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
- Entidad de servicio de Azure: cree una entidad de servicio y tome nota de los siguientes valores: appId, displayName, password y tenant.
Instalación de Ansible: realice una de las siguientes opciones:
- Instalar y configurar Ansible en una máquina virtual Linux
- Configurar Azure Cloud Shell y, si no tiene acceso a una máquina virtual Linux, crear una máquina virtual con Ansible.
Creación de un clúster de AKS administrado
El cuaderno de estrategias de ejemplo crea un grupo de recursos y un clúster de AKS dentro de dicho grupo.
Guarde el siguiente cuaderno de estrategias 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 ejecutar el cuaderno de estrategias, consulte las notas siguientes:
- La primera sección dentro de
tasks
define un grupo de recursos denominadomyResourceGroup
dentro de la ubicacióneastus
. - La segunda sección dentro de
tasks
define un clúster de AKS denominadomyAKSCluster
dentro del grupo de recursosmyResourceGroup
. - Para el marcador de posición
your_ssh_key
, escriba la clave pública de RSA en el formato de línea única: debe empezar por "ssh-rsa" (sin las comillas). - Para el marcador de posición
aks_version
, use el comando az aks get-versions.
Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook azure_create_aks.yml
Al ejecutar el cuaderno de estrategias, se muestran resultados similares a la salida siguiente:
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
Escalado de nodos de AKS
El cuaderno de estrategias de ejemplo de la sección anterior define dos nodos. Ajuste el número de nodos con la modificación del valor count
en el bloque agent_pool_profiles
.
Guarde el siguiente cuaderno de estrategias 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 ejecutar el cuaderno de estrategias, consulte las notas siguientes:
- Para el marcador de posición
your_ssh_key
, escriba la clave pública de RSA en el formato de línea única: debe empezar por "ssh-rsa" (sin las comillas).
Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook azure_configure_aks.yml
Al ejecutar el cuaderno de estrategias, se muestran resultados similares a la salida siguiente:
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
Eliminación de un clúster de AKS administrado
El cuaderno de estrategias de ejemplo elimina un clúster de AKS.
Guarde el siguiente cuaderno de estrategias 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
Ejecute el cuaderno de estrategias mediante ansible-playbook.
ansible-playbook azure_delete_aks.yml
Al ejecutar el cuaderno de estrategias, se muestran resultados similares a la salida siguiente:
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