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:
- 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.
- 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.
- 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:
Abra una sesión de Cloud Shell en el explorador.
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
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
Cree un directorio que pueda usar para probar el código de ejemplo de Terraform y conviértalo en el directorio actual.
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 } } }
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.