Поделиться через


Создание кластеров Kubernetes с помощью Terraform (предварительная версия)

В этой статье описывается создание кластеров Kubernetes в локальной среде Azure с помощью Terraform и проверенного модуля Azure. Рабочий процесс выглядит следующим образом:

  • Создание пары ключей SSH.
  • Создайте кластер Kubernetes в Azure Local 23H2 с помощью Terraform. По умолчанию кластер подключен к Azure Arc.
  • Проверьте развертывание и подключитесь к кластеру.

Внимание

Эти функции предварительной версии доступны на основе самообслуживания. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Служба Azure Kubernetes, включенные предварительными версиями Azure Arc, частично охватываются поддержкой клиентов на основе наилучших усилий.

Подготовка к работе

Прежде чем приступить к работе, убедитесь, что у вас есть следующие необходимые компоненты.

  1. Получите следующие сведения от локального администратора инфраструктуры:
    • Идентификатор подписки Azure: идентификатор подписки Azure, который использует Azure Local для развертывания и регистрации.
    • Имя или идентификатор пользовательского расположения: идентификатор Azure Resource Manager пользовательского расположения. Настраиваемое расположение настраивается во время развертывания локального кластера Azure. Администратор инфраструктуры должен предоставить идентификатор Resource Manager пользовательского расположения. Этот параметр необходим для создания кластеров Kubernetes. Вы также можете получить идентификатор Resource Manager, az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsvесли администратор инфраструктуры предоставляет имя пользовательского расположения и имя группы ресурсов.
    • Логическое имя сети или идентификатор: идентификатор Azure Resource Manager локальной логической сети Azure, созданной после выполнения следующих действий. Администратор должен предоставить вам идентификатор логической сети. Этот параметр необходим для создания кластеров Kubernetes. Вы также можете получить идентификатор Azure Resource Manager, используя, az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv если вы знаете группу ресурсов, в которой была создана логическая сеть.
  2. Убедитесь, что у вас есть GitHub, последняя версия Azure CLI и клиент Terraform, установленный на компьютере разработки.
  3. Скачайте и установите kubectl на компьютере разработки.

Создание пары ключей SSH

Чтобы создать пару ключей SSH (так же, как и Azure AKS), используйте следующую процедуру:

  1. Откройте сеанс Cloud Shell в браузере.

  2. Создайте пару ключей SSH с помощью команды az sshkey create, на порталеssh-keygen или команды:

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

    or

    ssh-keygen -t rsa -b 4096 
    
  3. Получите значение открытого ключа из Azure или на локальном компьютере в разделе /.ssh/id_rsa.pub.

Вход в Azure

Terraform поддерживает аутентификацию в Azure только при помощи Azure CLI с использованием az login. Проверка подлинности с помощью Azure PowerShell не поддерживается. Таким образом, хотя при выполнении работы Terraform можно использовать модуль Azure PowerShell, необходимо сначала пройти проверку подлинности в Azure:

az login 

Реализация кода Terraform

  1. Создайте каталог, который можно использовать для тестирования примера кода Terraform и сделать его текущим каталогом.

  2. В том же каталоге создайте файл с именем providers.tf и вставьте следующий код:

    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. Создайте другой файл с именем main.tf , указывающий на последний модуль AKS Arc AVM и вставьте следующий код. Вы можете прочитать описание и входные данные модуля и добавить необязательные параметры по мере необходимости. Чтобы найти идентификатор объекта группы администраторов, см. Включить проверку подлинности Microsoft Entra для кластеров Kubernetes. Вы можете следовать этому руководству, чтобы найти его в среде Azure.

    module "aks_arc" { 
    # Make sure to use the latest AVM module version
    source = "Azure/avm-res-hybridcontainerservice-provisionedclusterinstance/azurerm" 
    version = "~>0.6"
    
    # 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}] 
    ssh_public_key =  "Your_SSH_Key"
    
    # Optional parameters, update them as needed
    enable_workload_identity = false 
    enable_oidc_issuer = false 
    rbac_admin_group_object_ids = ["<Admin_Group_Object_ID>"]
    }
    

Инициализация Terraform

Выполните, terraform init чтобы инициализировать развертывание Terraform. Убедитесь, что флаг используется -upgrade для обновления необходимых подключаемых модулей поставщика до последней версии:

terraform init -upgrade

Создайте план выполнения Terraform и примените

Убедитесь, что вы выполняете az login и проходите проверку подлинности в Azure до этого шага, в противном случае применение плана Terraform завершается сбоем. Запустите terraform plan, чтобы создать план выполнения, а затем запустите terraform apply, чтобы применить выходной файл к облачной инфраструктуре:

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

Команда выполняется, а затем возвращает успешное выполнение после успешной подготовки ресурса.

Проверка развертывания и подключение к кластеру

Теперь вы можете подключиться к кластеру Kubernetes, выполнив на az connectedk8s proxy компьютере разработки. Вы также можете использовать kubectl для просмотра состояния узла и pod. Выполните те же действия, что и в разделе "Подключение к кластеру Kubernetes".

Следующие шаги

Подключение к кластеру Kubernetes