Создание кластеров Kubernetes с помощью Terraform (предварительная версия)
В этой статье описывается создание кластеров Kubernetes в локальной среде Azure с помощью Terraform и проверенного модуля Azure. Рабочий процесс выглядит следующим образом:
- Создание пары ключей SSH.
- Создайте кластер Kubernetes в Azure Local 23H2 с помощью Terraform. По умолчанию кластер подключен к Azure Arc.
- Проверьте развертывание и подключитесь к кластеру.
Внимание
Эти функции предварительной версии доступны на основе самообслуживания. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Служба Azure Kubernetes, включенные предварительными версиями Azure Arc, частично охватываются поддержкой клиентов на основе наилучших усилий.
Подготовка к работе
Прежде чем приступить к работе, убедитесь, что у вас есть следующие необходимые компоненты.
- Получите следующие сведения от локального администратора инфраструктуры:
- Идентификатор подписки 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
если вы знаете группу ресурсов, в которой была создана логическая сеть.
- Убедитесь, что у вас есть GitHub, последняя версия Azure CLI и клиент Terraform, установленный на компьютере разработки.
- Скачайте и установите kubectl на компьютере разработки.
Создание пары ключей SSH
Чтобы создать пару ключей SSH (так же, как и Azure AKS), используйте следующую процедуру:
Откройте сеанс Cloud Shell в браузере.
Создайте пару ключей SSH с помощью команды az sshkey create, на портале
ssh-keygen
или команды:az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
or
ssh-keygen -t rsa -b 4096
Получите значение открытого ключа из Azure или на локальном компьютере в разделе /.ssh/id_rsa.pub.
Вход в Azure
Terraform поддерживает проверку подлинности только в Azure с помощью Azure CLI. Проверка подлинности с помощью Azure PowerShell не поддерживается. Поэтому при выполнении работы Terraform модуль Azure PowerShell необходимо сначала пройти проверку подлинности в Azure.
Реализация кода Terraform
Создайте каталог, который можно использовать для тестирования примера кода Terraform и сделать его текущим каталогом.
В том же каталоге создайте файл с именем 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 } } }
Создайте другой файл с именем 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".