Tutorial: Configuración de clústeres de Azure Kubernetes Service (AKS) en Azure mediante AnsibleTutorial: Configure Azure Kubernetes Service (AKS) clusters in Azure using Ansible

Importante

Para ejecutar los cuadernos de estrategias de ejemplo de este tutorial, se requiere Ansible 2.8 (o cualquier versión posterior).Ansible 2.8 (or later) is required to run the sample playbooks in this article.

Azure Kubernetes Service (AKS) simplifica la implementación en Azure de clústeres de Kubernetes administrados.Azure Kubernetes Service (AKS) makes it simple to deploy a managed Kubernetes cluster in Azure. AKS reduce la complejidad y la sobrecarga operativa de la administración de Kubernetes al descargar gran parte de esa responsabilidad en Azure.AKS reduces the complexity and operational overhead of managing Kubernetes by offloading much of that responsibility to Azure. Como servicio hospedado de Kubernetes, Azure maneja tareas críticas como la supervisión del estado y el mantenimiento para usted.As a hosted Kubernetes service, Azure handles critical tasks like health monitoring and maintenance for you. Azure administra los maestros de Kubernetes.The Kubernetes masters are managed by Azure. Solo debe administrar y mantener los nodos de agente.You only manage and maintain the agent nodes. Como servicio de Kubernetes administrado, AKS es gratuito (solo debe pagar los nodos de agente incluidos en sus clústeres, no los maestros).As a managed Kubernetes service, AKS is free - you pay only for the agent nodes within your clusters; not for the masters.

Es posible configurar AKS para que utilice Azure Active Directory (AD) para la autenticación de usuarios.AKS can be configured to use Azure Active Directory (AD) for user authentication. Una vez configurado, use el token de autenticación de Azure AD para iniciar sesión en el clúster de AKS.Once configured, you use your Azure AD authentication token to sign into the AKS cluster. El RBAC puede basarse en la identidad de un usuario o en la pertenencia al grupo de directorio.The RBAC can be based on a user's identity or directory group membership.

En este tutorial, se usa Ansible para:In this tutorial, Ansible is used to:

  • Creación de un clúster de AKSCreate an AKS cluster
  • Configuración de un clúster de AKSConfigure an AKS cluster

Requisitos previosPrerequisites

  • Suscripción de Azure: Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.Azure subscription: If you don't have an Azure subscription, create a free account before you begin.
  • Entidad de servicio de Azure: Cree una entidad de servicio, tomando nota de los siguientes valores: appId, displayName, password y tenant.Azure service principal: Create a service principal, making note of the following values: appId, displayName, password, and tenant.

Creación de un clúster de AKS administradoCreate a managed AKS cluster

El cuaderno de estrategias de ejemplo crea un grupo de recursos y un clúster de AKS dentro de dicho grupo.The sample playbook creates a resource group and an AKS cluster within the resource group.

Guarde el siguiente cuaderno de estrategias como azure_create_aks.yml:Save the following playbook as 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, vea las notas siguientes:Before running the playbook, see the following notes:

  • La primera sección dentro de tasks define un grupo de recursos denominado myResourceGroup dentro de la ubicación eastus.The first section within tasks defines a resource group named myResourceGroup within the eastus location.
  • La segunda sección dentro de tasks define un clúster de AKS denominado myAKSCluster dentro del grupo de recursos myResourceGroup.The second section within tasks defines an AKS cluster named myAKSCluster within the myResourceGroup resource group.
  • 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).For the your_ssh_key placeholder, enter your RSA public key in the single-line format - starting with "ssh-rsa" (without the quotes).
  • Para el marcador de posición aks_version, use el comando az aks get-versions.For the aks_version placeholder, use the az aks get-versions command.

Use el comando ansible-playbook para ejecutar el cuaderno de estrategias:Run the playbook using the ansible-playbook command:

ansible-playbook azure_create_aks.yml

Al ejecutar el cuaderno de estrategias, se muestran resultados similares a la salida siguiente:Running the playbook shows results similar to the following output:

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 AKSScale AKS nodes

El cuaderno de estrategias de ejemplo de la sección anterior define dos nodos.The sample playbook in the previous section defines two nodes. Ajuste el número de nodos con la modificación del valor count en el bloque agent_pool_profiles.You adjust the number of nodes by modifying the count value in the agent_pool_profiles block.

Guarde el siguiente cuaderno de estrategias como azure_configure_aks.yml:Save the following playbook as 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, vea las notas siguientes:Before running the playbook, see the following notes:

  • 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).For the your_ssh_key placeholder, enter your RSA public key in the single-line format - starting with "ssh-rsa" (without the quotes).

Ejecute el comando de estrategias con el comando ansible-playbook:Run the playbook using the ansible-playbook command:

ansible-playbook azure_configure_aks.yml

Al ejecutar el cuaderno de estrategias, se muestran resultados similares a la salida siguiente:Running the playbook shows results similar to the following output:

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 administradoDelete a managed AKS cluster

El cuaderno de estrategias de ejemplo elimina un clúster de AKS.The sample playbook deletes an AKS cluster.

Guarde el siguiente cuaderno de estrategias como azure_delete_aks.yml:Save the following playbook as 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 comando de estrategias con el comando ansible-playbook:Run the playbook using the ansible-playbook command:

ansible-playbook azure_delete_aks.yml

Al ejecutar el cuaderno de estrategias, se muestran resultados similares a la salida siguiente:Running the playbook shows results similar to the following output:

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

Pasos siguientesNext steps