Yandex Cloud
Подготовка АРМ администратора
Заметка
Для работы с облаком подготовка АРМ администратора не является обязательной частью.
Для обеспечения работоспособности будет достаточно любого АРМ, который удовлетворяет требованиям:
- Установлен docker
- Произведена авторизация в вашем регистри
- Доступ до yandex cloud
Впоследствии вы сможете управлять вашим кластером с помощью bootsmanctl с любого АРМ, сохранив файлы:
- config
- bootsmanctl
- .bootsmanctl
Подготовка Образов ОС
Для работы с боцманом вам понадобятся образы ОС. Возможные варианты:
Использование готовых образов
Мы рекомендуем именно этот вариант, т.к. он наиболее прост в использовании. Для того, чтобы воспользоваться образами, вам понадобится просто скопировать их к себе в облако.
Для этого выполним команду:
yc compute image create --name ${IMAGE_NAME} --source-image-id ${SOURCE_IMAGE_ID} --cloud-id b1ghrp1t4e9stmg7uupu
- ${IMAGE_NAME} имя образа, с которым он сохранится у вас в облаке
- ${SOURCE_IMAGE_ID} id образа из таблицы ниже
| OS | k8s version | id |
|---|---|---|
| Astra linux | 1.27.4 | fd8fqk0um9gqvrdpcs9r |
| Astra linux | 1.27.6 | fd88ls5nmqoact7pnsvb |
| Astra linux | 1.28.4 | fd8kqiqj4hkdtvih44go |
| RedOS | 1.27.4 | fd8fbj7i281qc0juq1in |
| RedOS | 1.27.6 | fd8lkmn5hvhsm93gf88h |
| RedOS | 1.28.4 | fd8ena1840dk1gskt2g1 |
| Ubuntu | 1.27.4 | fd8f63825nupebsvh8bo |
| Ubuntu | 1.27.6 | fd85eh76v781aiga9nnr |
| Ubuntu | 1.28.4 | fd8enf7fe5mre19nq1bu |
Самостоятельная подготовка образов
В случае, если ваша политика ИБ не допускает применение готовых артефактов в виде предподготовленной ОС, существует вариант собрать всё необходимое самостоятельно. Об этом подробно написано в статье Создание golden image.
Подготовка файла конфигурации (config)
export HARBOR_CREDS_URL=
export HARBOR_CREDS_INSECURE=false
export HARBOR_CREDS_USER=
export HARBOR_CREDS_PASSWD=
export AIRGAP=true
export ADDONS_RANCHER_WEBHOSTNAME=
export CURRENT_MACHINE_IP=
export LICENSE=
export SSH_PUBLIC_KEYS_COMMA_SEPARATED=
export ADDONS_RANCHER_BOOTSTRAPPASSWORD=
export CONTROLPLANE_COUNT=3
export WORKER_COUNT=3
export K8SCPIP=127.0.0.1
export YANDEX_FOLDER_ID=
export YANDEX_ZONE=
export YANDEX_NETWORK_NAME=
export YANDEX_SUBNETWORK_NAME=
export YANDEX_TEMPLATEOPTIONS_PLATFORM_ID=standard-v2
export YANDEX_TEMPLATEOPTIONS_CORES=4
export YANDEX_TEMPLATEOPTIONS_MEMORY=12
export YANDEX_TEMPLATEOPTIONS_DISK_TYPE=network-ssd
export YANDEX_TEMPLATEOPTIONS_DISK_SIZE=65
export YANDEX_TEMPLATEOPTIONS_IMAGE_ID=
export YANDEX_NETWORK_USE_EXISTING=
export YANDEX_SUBNETWORK_USE_EXISTING=
export YANDEX_SUBNETWORK_CIDR=10.200.0.0/24
export YANDEX_AUTHORIZED_KEY_JSON=''
export YANDEX_PRIVACY=
Описание параметров
| Имя параметра | Описание | Комментарий |
|---|---|---|
| HARBOR_CREDS_URL | URL вашего регистри | |
| HARBOR_CREDS_INSECURE | Это служебный параметр, всегда будет false | |
| HARBOR_CREDS_USER | Имя пользователя в регистри | Имя пользователя не поддерживает спецсимволы, пожалуйста, используйте только латинские буквы и цифры |
| HARBOR_CREDS_PASSWD | Пароль от регистри | Пароль не поддерживает спецсимволы, пожалуйста, используйте только латинские буквы и цифры |
| AIRGAP | Режим установки | |
| ADDONS_RANCHER_WEBHOSTNAME | URL, по которому будет доступен web портал платформы | |
| CURRENT_MACHINE_IP | IP адрес АРМ администратора | Для Yandex Cloud можно указать любой |
| LICENSE | Строка из файла license, который вы получили вместе с дистрибутивом | |
| SSH_PUBLIC_KEYS_COMMA_SEPARATED | Ключи, распространённые на узлы. Перечисляются через запятую | |
| ADDONS_RANCHER_BOOTSTRAPPASSWORD | Первоначальный пароль от web портала | |
| CONTROLPLANE_COUNT | Количество мастеров | Может принимать значения 3 или 5 |
| WORKER_COUNT | Количество воркеров | Должно быть >=3 |
| K8SCPIP | IP ControlPlane | Для Yandex Cloud не используется, можно указать любой |
| YANDEX_FOLDER_ID | ID каталога, в котором будет развёрнут кластер | Как узнать ID каталога |
| YANDEX_ZONE | Зоны доступности Yandex. | Какие зоны бывают? |
| YANDEX_NETWORK_USE_EXISTING | true, если хотите использовать существующую сеть | |
| YANDEX_NETWORK_NAME | Имя сети в каталоге | |
| YANDEX_SUBNETWORK_USE_EXISTING | true, если хотите использовать существующую подсеть | |
| YANDEX_SUBNETWORK_NAME | Имя подсети в каталоге | |
| YANDEX_SUBNETWORK_CIDR | Адресное пространство для вашего кластера | Не используется в случае YANDEX_SUBNETWORK_USE_EXISTING |
| YANDEX_TEMPLATEOPTIONS_PLATFORM_ID | Выбор типа физического процессора | Какие виды процессоров бывают? |
| YANDEX_TEMPLATEOPTIONS_MEMORY | Какое количество памяти следует заказать узлам | |
| YANDEX_TEMPLATEOPTIONS_CORES | Какое количество ядер следует заказать узлам | |
| YANDEX_TEMPLATEOPTIONS_DISK_TYPE | Тип дискового хранилища. При выборе хранилища учитывайте, что для работы ETCD нужно 3000+ iops | Какие виды хранилищ бывают? |
| YANDEX_TEMPLATEOPTIONS_DISK_SIZE | Размер дискового хранилища | |
| YANDEX_TEMPLATEOPTIONS_IMAGE_ID | ID образа, подготовленного нами | Как узнать ID моего образа |
| YANDEX_PRIVACY | Выбор режима взаимодействия с кластером | Поддерживаемые значения Public, PrivateMachines, Private (1) |
| YANDEX_AUTHORIZED_KEY_JSON | Авторизованный ключ в формате json для Yandex Cloud | Создание авторизованного ключа |
Пример заполненного файла конфигурации:
export HARBOR_CREDS_URL=redos-quay.stsoft.lan/bootsman-v210
export HARBOR_CREDS_INSECURE=False
export HARBOR_CREDS_USER=demo
export HARBOR_CREDS_PASSWD=demo
export AIRGAP=true
export ADDONS_RANCHER_WEBHOSTNAME=rancher.redos-v21-ag.dev.stsoft.lan
export CURRENT_MACHINE_IP=10.0.149.111
export LICENSE=eyJhbGciOiJFZERTQSIsopkljlyuO098790uokjkLKJHKJGJHYu87hlIkpXVCIsInZlcnNpb24iOjV9eyJjbGllbnRJZCI6MjQsImNsaWVudE5hbWUiOiJTb3Zjb21iYW5rIiwiY29udHJhY3RJZCI6IjAwMDAiLCJleHAiOiIyMDIzLTEyLTEyVDAwOjAwOjAwWiIsImhhcmJvclVzZXIiOiJoYXJib3JVc2VyIiwiaWF0asdasdasdasfaew3easfdasdasdadgtawerq23413414adzbZXvLHLKJHFJFHFHKOyituyryu fhKJJJIfhfjgklkasdyiyoOIYIigkjbjJFHURUHfjb,kOjAwOjAwWiIsInR5cGUiOiJwcmVtaXVtIiwic3ViIjoiQm9vdHNtYW4gdjIifQ.Gwokj0KL9RTjJ8XB5IVxsEqQG_wBByVsQNyjz_GRMsyXCof4xzu2notjfyIW2zpQlLA8dlhbWiWA2lhJ7RQ4Bg
export SSH_PUBLIC_KEYS_COMMA_SEPARATED="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYjCYcs/qXpXRZukCZBdGDuc+jDat0gMV6di6U/ejkpqDv6qwl/8JmhOaYFEMo4+7BodHk7Fwmo1+3HsH1ElsPEpMAk6CEe+im7IOzjSvoPbTkvs7XXLCzF9EyxKftrpCCULn/YglEAzQcMqC7xIViZEl0gBU49o73wKaf1M0x0K0bgyZpG6DJDXw24cjbI4U4yaZIvBulwqeTdrCjMvMBqZ6gRmijTh/rhRdW/dWX/cdDHI9BWgz5GXuV/y47G/w6k3uzcF0XlG5o0Rp3KnOHoAevjt+KsiVSQampVM4HB9p7kYBJUk1RkqEkouMAWUV79O/7JYp915rUK1B7cHhJ example"
export ADDONS_RANCHER_BOOTSTRAPPASSWORD="somePassword123$"
export CONTROLPLANE_COUNT=3
export WORKER_COUNT=3
export K8SCPIP=127.0.0.1
export YANDEX_FOLDER_ID=b1gvs031ueof1otylrqr
export YANDEX_ZONE=ru-central1-a
export YANDEX_NETWORK_NAME=default-1
export YANDEX_SUBNETWORK_NAME=default-1
export YANDEX_TEMPLATEOPTIONS_PLATFORM_ID=standard-v2
export YANDEX_TEMPLATEOPTIONS_CORES=4
export YANDEX_TEMPLATEOPTIONS_MEMORY=12
export YANDEX_TEMPLATEOPTIONS_DISK_TYPE=network-ssd
export YANDEX_TEMPLATEOPTIONS_DISK_SIZE=65
export YANDEX_TEMPLATEOPTIONS_IMAGE_ID=fd8gq17vqe1ph4tiyrbc
export YANDEX_NETWORK_USE_EXISTING=false
export YANDEX_SUBNETWORK_USE_EXISTING=false
export YANDEX_SUBNETWORK_CIDR=10.200.0.0/24
export YANDEX_AUTHORIZED_KEY_JSON='{"id": "aaaaaaaaaaaaaaaaaaaa","service_account_id": "bbbbbbbbbbbbbbbbbbbb","created_at": "2124-01-01T01:01:01.940339261Z","key_algorithm": "RSA_2048","public_key": "-----BEGIN PUBLIC KEY-----\n**\n-----END PUBLIC KEY-----\n","private_key": "PLEASE DO NOT REMOVE THIS LINE! Yandex.Cloud SA Key ID \n-----BEGIN PRIVATE KEY-----\n*\n-----END PRIVATE KEY-----\n"}'
export YANDEX_PRIVACY=Public
export HARBOR_CREDS_URL=harbor.bootsman.host/bootsman-nimbus/common-artifacts
export HARBOR_CREDS_INSECURE=False
export HARBOR_CREDS_USER=demo
export HARBOR_CREDS_PASSWD=demo
export AIRGAP=true
export ADDONS_RANCHER_WEBHOSTNAME=rancher.redos-v21-ag.dev.stsoft.lan
export CURRENT_MACHINE_IP=10.0.149.111
export LICENSE=eyJhbGciOiJFZERTQSIsopkljlyuO098790uokjkLKJHKJGJHYu87hlIkpXVCIsInZlcnNpb24iOjV9eyJjbGllbnRJZCI6MjQsImNsaWVudE5hbWUiOiJTb3Zjb21iYW5rIiwiY29udHJhY3RJZCI6I jAwMDAiLCJleHAiOiIyMDIzLTEyLTEyVDAwOjAwOjAwWiIsImhhcmJvclVzZXIiOiJoYXJib3JVc2VyIiwiaWF0asdasdasdasfaew3easfdasdasdadgtawerq23413414adzbZXvLHLKJHFJFHFHKOyituyryu fhKJJJIfhfjgklkasdyiyoOIYIigkjbjJFHURUHfjb,kOjAwOjAwWiIsInR5cGUiOiJwcmVtaXVtIiwic3ViIjoiQm9vdHNtYW4gdjIifQ. Gwokj0KL9RTjJ8XB5IVxsEqQG_wBByVsQNyjz_GRMsyXCof4xzu2notjfyIW2zpQlLA8dlhbWiWA2lhJ7RQ4Bg
export SSH_PUBLIC_KEYS_COMMA_SEPARATED="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYjCYcs/qXpXRZukCZBdGDuc+jDat0gMV6di6U/ejkpqDv6qwl/8JmhOaYFEMo4+7BodHk7Fwmo1+3HsH1ElsPEpMAk6CEe+im7IOzjSvoPbTkvs7XXLCzF9EyxKftrpCCULn/YglEAzQcMqC7xIViZEl0gBU49o73wKaf1M0x0K0bgyZpG6DJDXw24cjbI4U4yaZIvBulwqeTdrCjMvMBqZ6gRmijTh/rhRdW/dWX/cdDHI9BWgz5GXuV/y47G/w6k3uzcF0XlG5o0Rp3KnOHoAevjt+KsiVSQampVM4HB9p7kYBJUk1RkqEkouMAWUV79O/7JYp915rUK1B7cHhJ example"
export ADDONS_RANCHER_BOOTSTRAPPASSWORD="somePassword123$"
export CONTROLPLANE_COUNT=3
export WORKER_COUNT=3
export K8SCPIP=127.0.0.1
export YANDEX_FOLDER_ID=b1gvs031ueof1otylrqr
export YANDEX_ZONE=ru-central1-a
export YANDEX_NETWORK_NAME=default-1
export YANDEX_SUBNETWORK_NAME=default-1
export YANDEX_TEMPLATEOPTIONS_PLATFORM_ID=standard-v2
export YANDEX_TEMPLATEOPTIONS_CORES=4
export YANDEX_TEMPLATEOPTIONS_MEMORY=12
export YANDEX_TEMPLATEOPTIONS_DISK_TYPE=network-ssd
export YANDEX_TEMPLATEOPTIONS_DISK_SIZE=65
export YANDEX_TEMPLATEOPTIONS_IMAGE_ID=fd8gq17vqe1ph4tiyrbc
export YANDEX_NETWORK_USE_EXISTING=false
export YANDEX_SUBNETWORK_USE_EXISTING=false
export YANDEX_SUBNETWORK_CIDR=10.200.0.0/24
export YANDEX_AUTHORIZED_KEY_JSON='{"id": "aaaaaaaaaaaaaaaaaaaa","service_account_id": "bbbbbbbbbbbbbbbbbbbb","created_at": "2124-01-01T01:01:01.940339261Z","key_algorithm": "RSA_2048","public_key": "-----BEGIN PUBLIC KEY-----\n**\n-----END PUBLIC KEY-----\n","private_key": "PLEASE DO NOT REMOVE THIS LINE! Yandex.Cloud SA Key ID \n-----BEGIN PRIVATE KEY-----\n*\n-----END PRIVATE KEY-----\n"}'
export YANDEX_PRIVACY=Public
Выбор режима приватности
Заметка
Балансировщик нагрузки для приложений всегда будет иметь белый адрес.
YANDEX_PRIVACY - параметр, который невозможно поменять после установки. Он определяет, какие настройки сети будут применены для:
- Машин
- Балансировщика нагрузки для Kube-api
Режим Public
Самый простой режим: всем сущностям будет выдан белый IP-адрес
Режим PrivateMachines
- Машины будут спрятаны за NAT
- Kube-api будет с белым IP
Режим Private
- Машины за NAT
- Kube-api использует внутренний балансировщик нагрузки и недоступен снаружи
Установка
Перед запуском установки экспортируйте конфигурацию
source config
./bootsmanctl management create test-cluster -i yandex -k ${Kubernetes_Version}
2023-09-10T17:49:46Z | INFO | finished
Доступ в интерфейс
После окончания установки определите в Yandex Cloud - Network Load Balancer - IP адрес созданного балансировщика с обработчиком https и внесите его в конфиг DNS-сервера. Перейдите в web-панель платформы по адресу, который указывали в конфигурационном файле. (1) Откроется простенький визард настройки с запросом пароля, который указывали в конфиге. (2)
Вы авторизовались под пользователем admin. Рекомендуем сменить пароль с помощью стандартного меню управления пользователями.
- ADDONS_RANCHER_WEBHOSTNAME
- ADDONS_RANCHER_BOOTSTRAPPASSWORD