Создать кластер Managed Kubernetes на облачном сервере с поддержкой Intel® SGX
Cоздание кластера Managed Kubernetes с поддержкой Intel® SGX недоступно в кластерах Managed Kubernetes на выделенном сервере.
Кластер Managed Kubernetes можно создать на облачном сервере с поддержкой Intel® SGX. Посмотреть доступность облачных серверов с SGX (линейка фиксированных конфигураций SGX Line) в регионах можно в матрице доступности Облачные серверы.
Создать кластер на облачном сервере с поддержкой Intel® SGX можно через API Managed Kubernetes или Terraform.
- Установите Terraform.
- Создайте манифест.
- Настройте провайдеры.
- Создайте кластер на облачном сервере.
- Проверьте конфигурацию и разверните инфраструктуру.
Установить Terraform
Перед началом работы установите Terraform на облачном сервере или локальном компьютере.
Используйте инструкцию на официальном сайте Terraform в зависимости от операционной системы.
Создать манифест
- Создайте директорию. В этой директории будут храниться манифесты и сохраненные состояния Terraform и инфраструктуры. Файлы с описанием одной инфраструктуры должны находиться в отдельной директории.
- Создайте в этой директории файл с расширением
.tf
, например,main.tf
.
Настроить провайдеры
В манифесте перечислите Terraform-провайдеров, необходимых для создания инфраструктуры. Обычно для работы используются два провайдера: Selectel и OpenStack.
-
Добавьте в манифест блок с описанием провайдеров:
terraform {
required_version = ">= 0.14.0"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.43.0"
}
selectel = {
source = "selectel/selectel"
version = "~> 3.9.1"
}
}
} -
Чтобы проверить актуальные версии провайдеров (
version
) в официальной документации (Selectel и OpenStack), нажмите USE PROVIDER. -
Для авторизации OpenStack-провайдера добавьте в манифест токен:
provider "openstack" {
auth_url = "https://cloud.api.selcloud.ru/identity/v3"
domain_name = "<selectel_account>"
tenant_id = "<project_id>"
user_name = "<user_name>"
password = "<user_password>"
region = "<pool>"
}Укажите:
<selectel_account>
— номер аккаунта Selectel (номер договора). Можно посмотреть в панели управления в правом верхнем углу;<project_id>
— ID проекта;<user_name>
— пользователь OpenStack, привязанный к проекту;<user_password>
— пароль пользователя OpenStack;<pool>
— пул, в котором будет развернута инфраструктура.
-
Для авторизации Selectel-провайдера добавьте в манифест:
provider "selectel" {
token = "<selectel_token>"
}Укажите
<selectel_token>
— токен Selectel (ключ API).
Создать кластер на облачном сервере
Добавьте в манифест описание кластера. Подробнее в документации провайдеров на сайтах Terraform и Github.
Пример для создания кластера с двумя группами нод с разными флейворами:
resource "selectel_mks_cluster_v1" "cluster_1" {
name = "cluster-1"
project_id = <selectel_project_id> # EDIT: add selectel project ID
region = "ru-7"
kube_version = "1.24.10"
}
resource "selectel_mks_nodegroup_v1" "nodegroup_1" {
cluster_id = "${selectel_mks_cluster_v1.cluster_1.id}"
project_id = "${selectel_mks_cluster_v1.cluster_1.project_id}"
region = "${selectel_mks_cluster_v1.cluster_1.region}"
availability_zone = "ru-7a"
nodes_count = 3
flavor_id = "<flavor_id>" # EDIT: add flavor ID, see the list of available flavors in the section below
volume_gb = 50
volume_type = "fast.ru-7a"
labels = {
"sgx.intel.com/capable": "true"
}
}
resource "selectel_mks_nodegroup_v1" "nodegroup_1" {
cluster_id = "${selectel_mks_cluster_v1.cluster_1.id}"
project_id = "${selectel_mks_cluster_v1.cluster_1.project_id}"
region = "${selectel_mks_cluster_v1.cluster_1.region}"
availability_zone = "ru-7a"
nodes_count = 3
flavor_id = "<flavor_id>" # EDIT: add flavor ID, see the list of available flavors in the section below
volume_gb = 50
volume_type = "fast.ru-7a"
labels = {
"sgx.intel.com/capable": "true"
}
}
Доступные флейворы
+------------+----------------------------+---------+------+-----------+-------+-----------+
| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |
+------------+----------------------------+---------+------+-----------+-------+-----------+
| 11011 | SGX1.1-4096-0-2034EPC | 4096 | 0 | 0 | 1 | True |
| 11012 | SGX1.2-8192-0-4071EPC | 8192 | 0 | 0 | 2 | True |
| 11013 | SGX1.4-16384-0-8143EPC | 16384 | 0 | 0 | 4 | True |
| 11014 | SGX1.8-32768-0-16286EPC | 32768 | 0 | 0 | 8 | True |
| 11015 | SGX1.16-65536-0-32572EPC | 65536 | 0 | 0 | 16 | True |
| 11016 | SGX1.24-98304-0-65144EPC | 98304 | 0 | 0 | 24 | True |
| 11311 | SGX1.1-4096-32-2034EPC | 4096 | 32 | 0 | 1 | True |
| 11312 | SGX1.2-8192-64-4071EPC | 8192 | 64 | 0 | 2 | True |
| 11313 | SGX1.4-16384-128-8143EPC | 16384 | 128 | 0 | 4 | True |
| 11314 | SGX1.8-32768-256-16286EPC | 32768 | 256 | 0 | 8 | True |
| 11315 | SGX1.16-65536-512-32572EPC | 65536 | 512 | 0 | 16 | True |
| 11316 | SGX1.24-98304-1024-65144EPC| 98304 | 1024 | 0 | 24 | True |
+------------+----------------------------+---------+------+-----------+-------+-----------+
В полях указаны:
ID
— ID флейвора;Name
— имя флейвора;RAM
— размер оперативной памяти в МБ;Disk
— размер локального диска в ГБ;VCPUs
— количество vCPU;Is Public
— область видимости флейвора:True
— публичный (public) илиFalse
— приватный (private).
Создать инфраструктуру
Выполните следующие команды в директории, в которой находится созданный манифест.
-
Инициализируйте Terraform-окружение:
terraform init
-
Проверьте, что план составлен без ошибок:
terraform plan
Если ошибок в описании нет, будет выведен список ресурсов, готовых к созданию. Если ошибки есть — их нужно устранить.
-
Разверните инфраструктуру и создайте ресурсы:
terraform apply
-
Подтвердите создание — введите yes и нажмите Enter. Созданный кластер автоматически отобразится в панели управления.