VK Cloud logo
Обновлена 15 апреля 2024 г. в 08:50

Создание кластера с помощью Terraform

Далее описывается создание кластера с помощью Terraform. Также возможно создать кластер с помощью личного кабинета VK Cloud.

Готовые примеры конфигурационных файлов для создания разных кластеров приведены в разделе Terraform.

Перед созданием кластера

  1. Ознакомьтесь с доступными ресурсами и квотами для региона, в котором планируется создать кластер. Для разных регионов могут быть настроены разные квоты.

    Если вы хотите увеличить квоты, напишите в техническую поддержку.

  2. Ознакомьтесь с особенностями использования Terraform в сервисе Cloud Containers.

  3. Установите Terraform и настройте провайдер, если этого еще не сделано.

  4. Установите OpenStack CLI и пройдите авторизацию, если этого еще не сделано.

  5. Создайте конфигурационный файл Terraform.

1. Подготовьте необходимые источники данных

  1. Определите, какой тип виртуальной машины будет использоваться для master-узлов кластера:

    1. Выполните команду:

      openstack flavor list

      Будут выведены доступные типы виртуальных машин.

    2. Выберите нужный тип виртуальной машины и запишите ее имя из колонки Name.

  2. Определите версию Kubernetes, с которой необходимо создать кластер:

    1. Добавьте в конфигурационный файл следующие строки:

      data "vkcs_kubernetes_clustertemplates" "k8s-template-list" {}output "k8s-version-list" {    value = data.vkcs_kubernetes_clustertemplates.k8s-template-list.cluster_templates.*.version}
    2. Выполните команду:

      terraform refresh
    3. Выполните команду:

      terraform output k8s-version-list

      Будет выведен список доступных версий Kubernetes.

    4. Выберите нужную версию Kubernetes и запишите ее номер.

  3. Добавьте в конфигурационный файл источники данных:

    1. Шаблон виртуальной машины для master-узлов. Пример:

      data "vkcs_compute_flavor" "k8s-master-flavor" {    name = "STD3-2-4"}

      В качестве имени шаблона укажите имя, полученное ранее.

    2. Шаблон кластера. Пример:

      data "vkcs_kubernetes_clustertemplate" "k8s-template" {    version = "<версия Kubernetes>"}

      В качестве версии укажите номер версии, полученный ранее.

2. Опишите конфигурацию кластера

Добавьте в конфигурационный файл ресурс кластера:

resource "vkcs_kubernetes_cluster" "k8s-cluster" {  name                = "k8s-cluster"  cluster_template_id = data.vkcs_kubernetes_clustertemplate.k8s-template.id  master_flavor       = data.vkcs_compute_flavor.k8s-master-flavor.id  master_count        = <количество master-узлов>  network_id          = "<идентификатор сети>"  subnet_id           = "<идентификатор подсети>"  availability_zone   = "<зона доступности>"  floating_ip_enabled = <true или false: назначить ли публичный IP-адрес для API-кластера>  labels = {    # Нужные аддоны    docker_registry_enabled = true    prometheus_monitoring = true    ingress_controller="nginx"  }}

Некоторые пояснения:

  • Количество master-узлов master_count должно быть нечетным числом (1, 3, 5 и так далее). Подробнее в разделе Архитектура сервиса.

  • Идентификаторы сети network_id и подсети subnet_id можно задать разными способами:

    Если нужные сети и подсети уже существуют и вам известны их идентификаторы, укажите идентификаторы явно.

    Пример:

    resource "vkcs_kubernetes_cluster" "k8s-cluster" {  name                = "k8s-cluster"  ...  network_id          = "sample-id-4212-a090-9f30519275e5"  subnet_id           = "sample-id-4bd6-bda4-f66dc7fbaa4f"  ...}
  • Для региона Москва укажите одну из трех зон доступности availability_zone: ME1, MS1 или GZ1.

  • Рекомендуется при создании кластера назначить ему публичный IP-адрес, чтобы можно было получить доступ к кластеру из интернета (floating_ip_enabled = true). Для назначения такого IP-адреса необходимо, чтобы подсеть кластера с идентификатором subnet_id была подключена к маршрутизатору c доступом к внешней сети.

  • Если какие-то из аддонов не нужны, удалите соответствующие им строки из блока labels. Подробнее в разделе Аддоны.

3. Опишите конфигурацию одной или нескольких групп worker-узлов

Эта операция подробно описана в разделе Управление группой worker-узлов.

4. Запустите процедуру создания кластера

  1. Проверьте конфигурационный файл Terraform на корректность:

    terraform validate
  2. Ознакомьтесь с планируемыми изменениями:

    terraform plan
  3. Примените планируемые изменения:

    terraform apply

    Начнется создание кластера Kubernetes. Этот процесс может занять длительное время, в зависимости от размера кластера.

Что дальше?