С помощью этого руководства вы научитесь автоматически развертывать инфраструктуру в облаке Cloud.ru Evolution при помощи инструмента Terraform на примере создания кластера Managed Kubernetes.
Вы будете использовать следующие сервисы:
Виртуальные машины — сервис, в рамках которого предоставляется виртуальная машина.
Managed Kubernetes — сервис управления кластерами Kubernetes на вычислительных ресурсах облака.
Terraform — инструмент для управления IaC.
Шаги:
Перед началом работы
-
Если вы уже зарегистрированы, войдите под своей учетной записью.
Создайте ключ доступа и сохраните Key ID (логин) и Key Secret (пароль). Это данные для аутентификации и подключения к сервисам Cloud.ru вашего проекта.
Создайте сервисный аккаунт для интеграции с другими сервисами облака Evolution вашего проекта.
Установите инструмент для работы с кодом, например Visual Studio Code, или используйте стандартный терминал, например bash, cmd или PowerShell.
1. Установите и настройте Terraform
-
Шаг с командой terraform init пока пропустите.
Проверьте, что установка прошла корректно:
terraform --versionДолжна отобразиться версия Terraform.
2. Настройте конфигурационный файл main.tf
Создайте локальную папку для проекта.
В папке проекта создайте файл main.tf и добавьте в него код:
terraform {required_providers {cloudru = {source = "cloud.ru/cloudru/cloud"version = "1.5.1"}}}provider "cloudru" {project_id = "<your-project-id>"auth_key_id = "<your-key-id>"auth_secret = "<your-key-secret>"iam_endpoint = "iam.api.cloud.ru:443"k8s_endpoint = "mk8s.api.cloud.ru:443"}Где:
<your-project-id> — идентификатор проекта.
<your-key-id> — логин ключа доступа, который вы создали перед началом работы.
<your-key-secret> — пароль ключа доступа, который вы создали перед началом работы.
Сохраните файл main.tf. С помощью него вы задали конфигурацию для провайдера Terraform и точки обращения к сервисам Cloud.ru.
В терминале перейдите в папку проекта и выполните команду:
terraform initЕсли все прошло успешно, вы увидите похожий текст:
Terraform has been successfully initialized!You may now begin working with Terraform. Try running "terraform plan" to seeany changes that are required for your infrastructure. All Terraform commandsshould now work.If you ever set or change modules or backend configuration for Terraform,rerun this command to reinitialize your working directory. If you forget, othercommands will detect it and remind you to do so if necessary.
3. Создайте кластер Managed Kubernetes с помощью Terraform
На этом шаге вы создадите файл конфигурации и примените его.
В каталоге проекта создайте файл конфигурации kuber.tf и добавьте в него код:
data "cloudru_k8s_zone_flavors" "k8s_zones" {}# Creating a K8s cluster / master nodesresource "cloudru_k8s_cluster" "kuber" {name = "tf-cluster"control_plane = {count = 1type = "MASTER_TYPE_SMALL"version = "v1.32.5"zones = [data.cloudru_k8s_zone_flavors.k8s_zones.availability_zones[index(data.cloudru_k8s_zone_flavors.k8s_zones.availability_zones.*.name, "ru.AZ-1")].id]}network_configuration = {services_subnet_cidr = "10.0.0.0/20"nodes_subnet_cidr = "192.168.20.0/24"pods_subnet_cidr = "172.16.0.0/12"kube_api_internet = true}}# Creating a pool of workersresource "cloudru_k8s_nodepool" "kuber_nodepool" {cluster_id = cloudru_k8s_cluster.kuber.idname = "tf-worker-pool"zone = data.cloudru_k8s_zone_flavors.k8s_zones.availability_zones[index(data.cloudru_k8s_zone_flavors.k8s_zones.availability_zones.*.name, "ru.AZ-1")].idscale_policy = {fixed_scale = {count = 1}}hardware_compute = {disk_size = 10disk_type = "DISK_TYPE_SSD_NVME"flavor_id = data.cloudru_k8s_zone_flavors.k8s_zones.flavors[index(data.cloudru_k8s_zone_flavors.k8s_zones.flavors.*.name, "lowcost10-2-4")].id}nodes_network_configuration = {nodes_subnet_cidr = "192.168.123.0/24"}depends_on = [cloudru_k8s_cluster.kuber]}С помощью этой конфигурации вы создадите новые ресурсы:
Кластер Managed Kubernetes на базе одного мастер-узла.
Одну группу узлов.
Сохраните файл kuber.tf.
В терминале перейдите в папку проекта и выполните команду:
terraform validateЕсли все прошло успешно, вы увидите похожий текст:
Success! The configuration is valid.При необходимости устраните ошибки в конфигурации.
Выполните команду:
terraform applyУбедитесь, что Terraform планирует добавить два ресурса, введите «yes» и нажмите Enter.
Если развертывание прошло успешно, вы увидите следующее сообщение:
Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
3. Проверьте создание кластера и подключитесь к нему
Перейдите в личный кабинет Cloud.ru Evolution и проверьте, что все созданные ресурсы отображаются.
Подключитесь к кластеру и выполните команду:
kubectl cluster-infoКоманда выведет информацию о вашем кластере.
Результат
Вы познакомились с механизмом развертывания облачных ресурсов Terraform и научились работать с инструментами в рамках концепции Infrastructure as Code.
- Перед началом работы
- 1. Установите и настройте Terraform
- 2. Настройте конфигурационный файл main.tf
- 3. Создайте кластер Managed Kubernetes с помощью Terraform
- 3. Проверьте создание кластера и подключитесь к нему
- Результат