Compartir a través de


Creación de clústeres de Kubernetes mediante Terraform (versión preliminar)

En este artículo se describe cómo crear clústeres de Kubernetes en Azure Local mediante Terraform y el módulo comprobado de Azure. El flujo de trabajo es el siguiente:

  • Creación de un par de claves SSH.
  • Cree un clúster de Kubernetes en Azure Local 23H2 mediante Terraform. De forma predeterminada, el clúster está conectado a Azure Arc.
  • Valide la implementación y conéctese al clúster.

Importante

Estas características en versión preliminar están disponibles de forma automática. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y garantía limitada. Azure Kubernetes Service, habilitado por las versiones preliminares de Azure Arc, están parcialmente cubiertos por el soporte técnico al cliente de la mejor manera posible.

Antes de empezar

Asegúrese de que cumple los siguientes requisitos previos antes de empezar:

  1. Obtenga los detalles siguientes del administrador de infraestructura local:
    • Identificador de suscripción de Azure: el identificador de suscripción de Azure que usa Azure Local para la implementación y el registro.
    • Nombre o identificador de ubicación personalizado: el identificador de Azure Resource Manager de la ubicación personalizada. La ubicación personalizada se configura durante la implementación del clúster local de Azure. El administrador de infraestructura debe proporcionarle el identificador de Resource Manager de la ubicación personalizada. Este parámetro es necesario para crear clústeres de Kubernetes. También puede obtener el identificador de Resource Manager mediante az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv, si el administrador de infraestructura proporciona un nombre de ubicación personalizado y un nombre de grupo de recursos.
    • Nombre o identificador de red lógico: el identificador de Azure Resource Manager de la red lógica de Azure Stack HCI que se creó siguiendo estos pasos. El administrador debe proporcionarle el identificador de la red lógica. Este parámetro es necesario para crear clústeres de Kubernetes. También puede obtener el identificador de Azure Resource Manager mediante az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv si conoce el grupo de recursos en el que se creó la red lógica.
  2. Asegúrese de que tiene GitHub, la versión más reciente de la CLI de Azure y el cliente de Terraform instalados en la máquina de desarrollo.
  3. Descargue e instale kubectl en la máquina de desarrollo.

Creación de un par de claves SSH

Para crear un par de claves SSH (igual que Azure AKS), use el procedimiento siguiente:

  1. Abra una sesión de Cloud Shell en el explorador.

  2. Cree un par de claves SSH mediante el comando az sshkey create , desde el portal o el ssh-keygen comando :

    az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
    

    o

    ssh-keygen -t rsa -b 4096 
    
  3. Recupere el valor de la clave pública de Azure o de la máquina local en /.ssh/id_rsa.pub.

Inicio de sesión en Azure

Terraform solo admite la autenticación en Azure con la CLI de Azure. No se admite la autenticación con Azure PowerShell. Por lo tanto, aunque puede usar el módulo de Azure PowerShell al realizar el trabajo de Terraform, primero debe autenticarse en Azure.

Implementación del código de Terraform

  1. Cree un directorio que pueda usar para probar el código de ejemplo de Terraform y conviértalo en el directorio actual.

  2. En el mismo directorio, cree un archivo denominado providers.tf y pegue el código siguiente:

    terraform { 
     required_version = "~> 1.5" 
     required_providers { 
       azapi = { 
         source  = "azure/azapi" 
         version = "~> 1.13" 
       } 
       azurerm = { 
        source  = "hashicorp/azurerm" 
        version = "~> 3.74" 
       } 
      }
     }
    
     provider "azurerm" { 
     features { 
      resource_group { 
       prevent_deletion_if_contains_resources = false 
      } 
     } 
    }
    
  3. Cree otro archivo denominado main.tf que apunte al módulo AVM de AKS Arc más reciente e inserte el código siguiente. Puede leer la descripción y la entrada del módulo y agregar parámetros opcionales según sea necesario:

    module "aks_arc" { 
    # Make sure to use the latest AVM module version
    source = "Azure/avm-res-hybridcontainerservice-provisionedclusterinstance/azurerm" 
    version = "0.5.0" 
    
    # Make sure to provide all required parameters  
    resource_group_id = "<Resource_Group>" 
    location = "<Region>" 
    name = "<Cluster_Name>" 
    logical_network_id = "<LNet_ID>" 
    custom_location_id = "<CustomLocation_ID>" 
    agent_pool_profiles = [{count=1}] 
    
    # Optional parameters 
    ssh_public_key =  "Your_SSH_Key" 
    enable_workload_identity = true 
    enable_oidc_issuer = true 
    rbac_admin_group_object_ids = "" 
    }
    

Inicialización de Terraform

Para inicializar la implementación de Terraform, ejecute terraform init. Asegúrese de usar la -upgrade marca para actualizar los complementos de proveedor necesarios a la versión más reciente:

terraform init -upgrade

Creación de un plan de ejecución de Terraform y aplicación del plan

Ejecute terraform plan para crear un plan de ejecución y, a continuación, ejecute terraform apply para aplicar el archivo de salida a la infraestructura en la nube:

terraform plan -out main.tfplan 
terraform apply main.tfplan 

El comando se ejecuta y, a continuación, devuelve correctamente después de que el recurso se aprovisione correctamente.

Validación de la implementación y conexión al clúster

Ahora puede conectarse al clúster de Kubernetes mediante la ejecución az connectedk8s proxy desde la máquina de desarrollo. También puede usar kubectl para ver el estado del nodo y el pod. Siga los mismos pasos que se describen en Conexión al clúster de Kubernetes.

Pasos siguientes

Conexión al clúster de Kubernetes