Чтобы создать кластер Kubernetes, где будет создана нод-группа с включенным автомасштабированием, создайте файл kubernetes.tf, где будет описано создание кластера Kubernetes. Добавьте текст из примеров ниже, и исправьте значения настроек для вашего кластера.
Для создания кластера нам потребуются следующие объекты:
1. Ресурсы (resource)
- linxcs_networking_network — сеть, в которой будет создан кластер и его ноды. В примере ниже сеть создается с именем «k8s-net».
- linxcs_networking_subnet — подсеть из сети, для нод кластера. В примере: k8s-subnet.
- linxcs_networking_router — роутер для внешней сети и взаимодействия с внешним миром.
- linxcs_networking_router_interface — подключить роутер к внутренней сети.
- linxcs_compute_keypair — ключевая пара для ВМ нод кластера. Эта ключевая пара позволяет подключаться к ВМ по ssh при необходимости. Можно не указывать, если не требуется доступ на ноды.
- Источники данных (data source):
- linxcs_networking_network – внешняя сеть для получения публичного IP (Floating IP).
- зования при создании кластера и его нод-групп.
1. linxcs_kubernetes_clustertemplates — шаблоны/версии кластеров Kubernetes. Нужно указать версию кластера, которая будет создана.
Посмотреть список доступных версий можно:
· В визарде при создании кластера через личный кабинет.
· Используя данные из linxcs_kubernetes_clustertemplates. Подробнее на официальной странице.
2. linxcs_kubernetes_cluster — кластер Kubernetes. В этом ресурсе мы описываем кластер и используем ранее описанные ресурсы.
- depends_on – terraform будет ждать завершения создания linxcs_networking_router_interface, прежде чем начать создавать кластер.
- name – имя кластера.
- cluster_template_id – шаблон/версия кластера указанная ранее в linxcs_kubernetes_clustertemplate.cluster_template
- master_count — количество мастер нод. Поддерживаются нечетные числа 1, 3, 5, 7.
- master_flavor — флейвор мастер нод.
- availability_zone — зона доступности.
- ingress_controller — аддон балансировщика ingress controller, который устанавливается при создании кластера. Аддоны описываются в блоке labels.
- keypair — ключевая пара для доступа на ноды кластера. Может быть пропущена, если не требуется доступ на ноды.
- network_id — сеть кластера Kubernetes.
- subnet_id — подсеть для кластера.
- floating_ip_enabled — назначение публичного IP для API сервера Kubernetes. Поддерживает значение true | false.
3. linxcs_kubernetes_node_group — нод-группа кластера, в которой будет располагаться рабочая нагрузка.
- depends_on — создание нод-группы начнется после создания кластера.
- cluster_id — идентификатор кластера, в котором создается нод-группа.
- name — имя нод-группы.
- node_count — начальное количество нод в группе.
- autoscaling_enabled — включаем автомасштабирование кластера. Поддерживает значение true | false.
- max_nodes — максимальное количество нод, до которого кластер автоматически масштабируется при повышении нагрузки. Максимальное значение 100.
- min_nodes — минимальное количество нод в нод-группе.
- flavor_id — флейвор нод в нод-группе.
Добавьте обе части примера в файл kubernetes.tf и выполните следующие команды: