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


Создание кластеров 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. Проверка подлинности с помощью Azure PowerShell не поддерживается. Поэтому при выполнении работы Terraform модуль Azure PowerShell необходимо сначала пройти проверку подлинности в Azure.

Реализация кода 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 и вставьте следующий код. Вы можете прочитать описание и входные данные модуля и добавить необязательные параметры при необходимости:

    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 = "" 
    }
    

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

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

terraform init -upgrade

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

Запустите план terraform для создания плана выполнения, а затем запустите terraform, чтобы применить выходной файл к облачной инфраструктуре:

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

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

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

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

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

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