Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Creando un Clúster AKS

Puedes utilizar Rancher para crear un clúster alojado en Microsoft Azure Kubernetes Service (AKS).

Requisitos previos en Microsoft Azure

Desplegar en AKS generará cargos.

Para interactuar con las API de Azure, un clúster AKS requiere un principal de servicio de Azure Active Directory (AD). El principal de servicio es necesario para crear y gestionar dinámicamente otros recursos de Azure, y proporciona credenciales para que tu clúster se comunique con AKS. Para más información sobre el principal de servicio, consulta la documentación de AKS.

Antes de crear el principal de servicio, necesitas obtener la siguiente información del Portal de Microsoft Azure:

  • ID de suscripción

  • ID de cliente (también conocido como ID de aplicación)

  • Secreto del cliente

Las secciones a continuación describen cómo configurar estos requisitos previos utilizando la herramienta shell de Azure o el portal de Azure.

Configurando el principal de servicio con la herramienta shell de Azure

Debes asignar roles al principal de servicio para que tenga privilegios de comunicación con la API de AKS. También necesita acceso para crear y listar redes virtuales.

En el siguiente ejemplo, el comando crea el principal de servicio y le otorga el rol de Colaborador. El rol de Colaborador puede gestionar cualquier cosa en AKS, pero no puede dar acceso a otros. Ten en cuenta que debes proporcionar scopes una ruta completa a al menos un recurso de Azure:

az ad sp create-for-rbac --role Contributor --scopes /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>

El resultado debería mostrar información sobre el nuevo principal de servicio:

{
  "appId": "xxxx--xxx",
  "displayName": "<service-principal-name>",
  "name": "http://<service-principal-name>",
  "password": "<secret>",
  "tenant": "<tenant-name>"
}

Lo siguiente crea un Grupo de Recursos para contener tus recursos de Azure:

az group create --location <azure-location-name> --resource-group <resource-group-name>

Configurando el principal de servicio desde el Portal de Azure

Sigue estas instrucciones para configurar un principal de servicio y darle acceso basado en roles desde el Portal de Azure.

  1. Ve al Portal de Microsoft Azure página de inicio.

  2. Haz clic en Azure Active Directory.

  3. Haz clic en Registros de aplicaciones.

  4. Haz clic en Nueva inscripción.

  5. Introduce un nombre para tu principal de servicio.

  6. Opcional: Elige qué cuentas pueden usar el principal de servicio.

  7. Haz clic en Registrar.

  8. Ahora deberías ver el nombre de tu principal de servicio bajo Azure Active Directory  Registros de aplicaciones.

  9. Haz clic en el nombre de tu principal de servicio. Toma nota del ID de la aplicación (también llamado ID de aplicación o ID de cliente) para que puedas usarlo al aprovisionar tu clúster de AKS. Luego haz clic en Certificados y secretos.

  10. Haz clic en Nueva clave secreta de cliente.

  11. Introduce una breve descripción, elige un tiempo de expiración y haz clic en Añadir. Toma nota de la clave secreta del cliente para que puedas usarla al aprovisionar el clúster de AKS.

Resultado: Has creado un principal de servicio y deberías poder verlo listado en la sección de Azure Active Directory bajo Registros de aplicaciones. Aún necesitas dar acceso a la entidad de servicio a AKS.

Para dar acceso basado en roles a tu entidad de servicio,

  1. Haz clic en Todos los servicios en la barra de navegación izquierda. Luego haz clic en Suscripciones.

  2. Haz clic en el nombre de la suscripción que deseas asociar con tu clúster de Kubernetes. Toma nota del ID de la suscripción para que puedas usarlo al aprovisionar tu clúster de AKS.

  3. Haz clic en Control de acceso (IAM).

  4. En la sección de Añadir asignación de rol, haz clic en Añadir.

  5. En el campo de Rol, selecciona un rol que tendrá acceso a AKS. Por ejemplo, puedes usar el rol de Colaborador, que tiene permiso para gestionar todo excepto para dar acceso a otros usuarios.

  6. En el campo de Asignar acceso a, selecciona usuario de Azure AD, grupo o principal de servicio.

  7. En el campo de Seleccionar, selecciona el nombre de tu entidad de servicio y haz clic en Guardar.

Resultado: Tu entidad de servicio ahora tiene acceso a AKS.

Crea las credenciales de nube de AKS.

  1. En la interfaz de Rancher, haz clic en ☰ > Gestión de clústeres.

  2. Haz clic en Credenciales de Nube.

  3. Haga clic en Crear.

  4. Haz clic en Azure.

  5. Rellena el formulario. Para obtener ayuda con el llenado del formulario, consulta la referencia de configuración.

  6. Haga clic en Crear.

Crea el clúster AKS.

Utiliza Rancher para configurar tu clúster de Kubernetes.

  1. Haz clic en ☰ > Gestión de Clústeres.

  2. En la sección Clusters, haz clic en Crear.

  3. Haz clic en Azure AKS.

  4. Rellena el formulario. Para obtener ayuda con el llenado del formulario, consulta la referencia de configuración.

  5. Haga clic en Crear.

Resultado: Tu clúster ha sido creado y se le ha asignado un estado de Provisionando. Rancher está configurando tu clúster.

Puedes acceder a tu clúster una vez que su estado se actualice a Activo.

Configuración de control de acceso basado en funciones

Al aprovisionar un clúster AKS en la interfaz de usuario de Rancher, el RBAC no es configurable porque debe estar habilitado.

El RBAC es necesario para los clústeres AKS que están registrados o importados en Rancher.

Configuración de la asignación de roles al principal de servicio con la herramienta shell de Azure

Asigna el rol AKSv2 de Rancher al principal de servicio con la herramienta shell de Azure:

az role assignment create \
--assignee <client-id> \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>" \
--role "Rancher AKSv2"

Referencia de configuración del clúster AKS

Para más información sobre cómo configurar clústeres AKS desde la interfaz de usuario de Rancher, consulta la referencia de configuración.

Clústeres privados

Normalmente, los nodos de trabajo de AKS no obtienen IPs públicas, independientemente de si el clúster es privado. En un clúster privado, el plano de control no tiene un punto de acceso público.

Rancher puede conectarse a un clúster privado de AKS de dos maneras.

La primera forma de asegurar que Rancher esté ejecutándose en el mismo NAT que los nodos de AKS.

La segunda forma es ejecutar un comando para registrar el clúster con Rancher. Una vez que el clúster esté aprovisionado, puedes ejecutar el comando mostrado en cualquier lugar donde puedas conectarte a la API de Kubernetes del clúster. Este comando se muestra en una ventana emergente cuando aprovisionas un clúster de AKS con un punto de acceso API privado habilitado.

Ten en cuenta que al registrar un clúster de AKS existente, el clúster puede tardar un tiempo, posiblemente horas, en aparecer en la lista desplegable Cluster To register. Este resultado se basará en la región.

Para más información sobre cómo conectarse a un clúster privado de AKS, consulta la documentación de AKS.

Configurando el Rol de Permiso Mínimo con la herramienta shell de Azure

  1. Crea el Rol de Permiso Mínimo de Rancher AKSv2 ejecutando este comando:

  cat >> rancher-azure.json << EOF

  {
      "Name": "Rancher AKSv2",
      "IsCustom": true,
      "Description": "Everything needed by Rancher AKSv2 operator",
      "Actions": [
          "Microsoft.Compute/disks/delete",
          "Microsoft.Compute/disks/read",
          "Microsoft.Compute/disks/write",
          "Microsoft.Compute/diskEncryptionSets/read",
          "Microsoft.Compute/locations/DiskOperations/read",
          "Microsoft.Compute/locations/vmSizes/read",
          "Microsoft.Compute/locations/operations/read",
          "Microsoft.Compute/proximityPlacementGroups/write",
          "Microsoft.Compute/snapshots/delete",
          "Microsoft.Compute/snapshots/read",
          "Microsoft.Compute/snapshots/write",
          "Microsoft.Compute/virtualMachineScaleSets/manualUpgrade/action",
          "Microsoft.Compute/virtualMachineScaleSets/delete",
          "Microsoft.Compute/virtualMachineScaleSets/read",
          "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/read",
          "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/ipconfigurations/publicipaddresses/read",
          "Microsoft.Compute/virtualMachineScaleSets/virtualmachines/instanceView/read",
          "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/read",
          "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/write",
          "Microsoft.Compute/virtualMachineScaleSets/write",
          "Microsoft.Compute/virtualMachines/read",
          "Microsoft.Compute/virtualMachines/write",
          "Microsoft.ContainerService/managedClusters/read",
          "Microsoft.ContainerService/managedClusters/write",
          "Microsoft.ContainerService/managedClusters/delete",
          "Microsoft.ContainerService/managedClusters/accessProfiles/listCredential/action",
          "Microsoft.ContainerService/managedClusters/agentPools/read",
          "Microsoft.ContainerService/managedClusters/agentPools/write",
          "Microsoft.ContainerService/managedClusters/agentPools/delete",
          "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action",
          "Microsoft.Network/applicationGateways/read",
          "Microsoft.Network/applicationGateways/write",
          "Microsoft.Network/loadBalancers/write",
          "Microsoft.Network/loadBalancers/backendAddressPools/join/action",
          "Microsoft.Network/loadBalancers/delete",
          "Microsoft.Network/loadBalancers/read",
          "Microsoft.Network/networkInterfaces/join/action",
          "Microsoft.Network/networkInterfaces/read",
          "Microsoft.Network/networkInterfaces/write",
          "Microsoft.Network/networkSecurityGroups/read",
          "Microsoft.Network/networkSecurityGroups/write",
          "Microsoft.Network/publicIPAddresses/delete",
          "Microsoft.Network/publicIPAddresses/join/action",
          "Microsoft.Network/publicIPAddresses/read",
          "Microsoft.Network/publicIPAddresses/write",
          "Microsoft.Network/publicIPPrefixes/join/action",
          "Microsoft.Network/privatednszones/*",
          "Microsoft.Network/routeTables/read",
          "Microsoft.Network/routeTables/routes/delete",
          "Microsoft.Network/routeTables/routes/read",
          "Microsoft.Network/routeTables/routes/write",
          "Microsoft.Network/routeTables/write",
          "Microsoft.Network/virtualNetworks/read",
          "Microsoft.Network/virtualNetworks/subnets/join/action",
          "Microsoft.Network/virtualNetworks/subnets/read",
          "Microsoft.Network/virtualNetworks/joinLoadBalancer/action",
          "Microsoft.OperationalInsights/workspaces/sharedkeys/read",
          "Microsoft.OperationalInsights/workspaces/read",
          "Microsoft.OperationsManagement/solutions/write",
          "Microsoft.OperationsManagement/solutions/read",
          "Microsoft.Resources/subscriptions/resourcegroups/read",
          "Microsoft.Resources/subscriptions/resourcegroups/write",
          "Microsoft.Storage/operations/read",
          "Microsoft.Storage/storageAccounts/listKeys/action",
          "Microsoft.Storage/storageAccounts/delete",
          "Microsoft.Storage/storageAccounts/read",
          "Microsoft.Storage/storageAccounts/write"
      ],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
          "/subscriptions/SUBSCRIPTION_ID"
      ]
  }
  EOF
  1. Aplica el Rol de Rancher AKSv2:

  az role definition create --role-definition rancher-azure.json
  1. Verifica si se creó el Rol de Rancher AKSv2:

  az role definition list | grep "Rancher AKSv2"

Sincronización

El aprovisionador de AKS puede sincronizar el estado de un clúster de AKS entre Rancher y el proveedor. Para una explicación técnica detallada de cómo funciona esto, consulta Sincronización.

Para información sobre cómo configurar el intervalo de actualización, consulta esta sección.

Creando Clústeres de AKS Programáticamente

La forma más común de desplegar clústeres de AKS programáticamente a través de Rancher es utilizando el proveedor de Terraform Rancher2. La documentación para crear clústeres con Terraform está aquí.