Deckhouse Kubernetes Platform в Yandex Cloud
Выберите редакцию Deckhouse Kubernetes Platform
Ниже сгенерированы рекомендованные настройки для установки Deckhouse Kubernetes Platform Community Edition:
config.yml
— файл первичной конфигурации кластера. Содержит параметры инсталлятора, параметры доступа облачного провайдера и начальные параметры кластера.resources.yml
— описание ресурсов для создания после установки (настройки узлов и Ingress-контроллера).
Обратите внимание:
- Так выделены параметры, обязательные для самостоятельного заполнения.
- Так выделены параметры, которые вы возможно захотите изменить.
- Если вы запускаете инсталлятор под Windows, то убедитесь, что кодировка создаваемых YAML-файлов конфигурации UTF-8 (либо удалите примечания на русском языке).
Создайте файл config.yml
.
# Общие параметры кластера.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/installing/configuration.html#clusterconfiguration
apiVersion: deckhouse.io/v1
kind: ClusterConfiguration
clusterType: Cloud
cloud:
provider: Yandex
# Префикс объектов, создаваемых в облаке при установке.
# Возможно, захотите изменить.
prefix: cloud-demo
# Адресное пространство Pod’ов кластера.
podSubnetCIDR: 10.111.0.0/16
# Адресное пространство для service’ов кластера.
serviceSubnetCIDR: 10.222.0.0/16
kubernetesVersion: "Automatic"
clusterDomain: "cluster.local"
---
# Настройки первичной инициализации кластера Deckhouse.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/installing/configuration.html#initconfiguration
apiVersion: deckhouse.io/v1
kind: InitConfiguration
deckhouse:
imagesRepo: registry.deckhouse.ru/deckhouse/ce
registryDockerCfg: eyJhdXRocyI6IHsgInJlZ2lzdHJ5LmRlY2tob3VzZS5ydSI6IHt9fX0K
---
# Настройки модуля deckhouse.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/002-deckhouse/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: deckhouse
spec:
version: 1
enabled: true
settings:
bundle: Default
# Канал обновлений Deckhouse. Канал Early Access достаточно стабилен, его можно использовать в продуктивных окружениях.
# Если планируется использовать несколько кластеров, то рекомендуется установить на них разные каналы обновлений.
# Подробнее: https://deckhouse.ru/products/kubernetes-platform/documentation/v1/deckhouse-release-channels.html
releaseChannel: EarlyAccess
logLevel: Info
---
# Глобальные настройки Deckhouse.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/deckhouse-configure-global.html#%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: global
spec:
version: 1
settings:
modules:
# Шаблон, который будет использоваться для составления адресов системных приложений в кластере.
# Например, Grafana для %s.example.com будет доступна на домене 'grafana.example.com'.
# Домен НЕ ДОЛЖЕН совпадать с указанным в параметре clusterDomain ресурса ClusterConfiguration.
# Можете изменить на свой сразу, либо следовать шагам руководства и сменить его после установки.
publicDomainTemplate: "%s.example.com"
---
# Настройки модуля user-authn.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/150-user-authn/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: user-authn
spec:
version: 2
enabled: true
settings:
controlPlaneConfigurator:
dexCAMode: DoNotNeed
# Включение доступа к API-серверу Kubernetes через Ingress.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/150-user-authn/configuration.html#parameters-publishapi
publishAPI:
enabled: true
https:
mode: Global
global:
kubeconfigGeneratorMasterCA: ""
---
# Настройки облачного провайдера.
# https://deckhouse.io/products/kubernetes-platform/documentation/v1/modules/030-cloud-provider-yandex/cluster_configuration.html
apiVersion: deckhouse.io/v1
kind: YandexClusterConfiguration
layout: Standard
# Параметры доступа к облаку Yandex Cloud.
provider:
# ID облака.
cloudID: *!CHANGE_CloudID*
# ID каталога.
folderID: *!CHANGE_FolderID*
# JSON-ключ, сгенерированный с помощью `yc iam key create` на предыдущем шаге.
# Пример заполнения serviceAccountJSON:
# serviceAccountJSON: |
# {
# "id": "...",
# "service_account_id": "...",
# "created_at": "2022-08-04T05:38:34.756137618Z",
# "key_algorithm": "RSA_2048",
# "public_key": "-----BEGIN PUBLIC KEY-----...-----END PUBLIC KEY-----\n",
# "private_key": "-----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY-----\n"
# }
serviceAccountJSON: *!CHANGE_ServiceAccountJSON*
masterNodeGroup:
replicas: 1
instanceClass:
cores: 4
memory: 8192
# ID образа в Yandex Cloud. Рекомендуется использовать актуальную сборку Ubuntu 22.04 LTS.
# Для получения можете воспользоваться командой:
# yc compute image list --folder-id standard-images --format json | jq -r '[.[] | select(.family == "ubuntu-2204-lts")] | sort_by(.created_at)[-1].id'
# Возможно, захотите изменить.
imageID: fd864gbboths76r8gm5f
externalIPAddresses:
- "Auto"
# Данная подсеть будет разделена на три равных части и использована для создания подсетей в трёх зонах Yandex Cloud.
nodeNetworkCIDR: "10.241.32.0/20"
# Публичная часть SSH-ключа для доступа к узлам облака.
# Этот ключ будет добавлен пользователю на созданных узлах (имя пользователя зависит от используемого образа).
sshPublicKey: *!CHANGE_SSH_KEY*
Введите лицензионный ключ
Нет ключа?
Ниже сгенерированы рекомендованные настройки для установки Deckhouse Kubernetes Platform Enterprise Edition:
config.yml
— файл первичной конфигурации кластера. Содержит параметры инсталлятора, параметры доступа облачного провайдера и начальные параметры кластера.resources.yml
— описание ресурсов для создания после установки (настройки узлов и Ingress-контроллера).
Обратите внимание:
- Так выделены параметры, обязательные для самостоятельного заполнения.
- Так выделены параметры, которые вы возможно захотите изменить.
- Если вы запускаете инсталлятор под Windows, то убедитесь, что кодировка создаваемых YAML-файлов конфигурации UTF-8 (либо удалите примечания на русском языке).
Создайте файл config.yml
.
# Общие параметры кластера.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/installing/configuration.html#clusterconfiguration
apiVersion: deckhouse.io/v1
kind: ClusterConfiguration
clusterType: Cloud
cloud:
provider: Yandex
# Префикс объектов, создаваемых в облаке при установке.
# Возможно, захотите изменить.
prefix: cloud-demo
# Адресное пространство Pod’ов кластера.
podSubnetCIDR: 10.111.0.0/16
# Адресное пространство для service’ов кластера.
serviceSubnetCIDR: 10.222.0.0/16
kubernetesVersion: "Automatic"
clusterDomain: "cluster.local"
---
# Настройки первичной инициализации кластера Deckhouse.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/installing/configuration.html#initconfiguration
apiVersion: deckhouse.io/v1
kind: InitConfiguration
deckhouse:
imagesRepo: registry.deckhouse.ru/deckhouse/ee
# Строка с ключом для доступа к Docker registry (сгенерировано автоматически для вашего токена доступа).
registryDockerCfg: <YOUR_ACCESS_STRING_IS_HERE>
---
# Настройки модуля deckhouse.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/002-deckhouse/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: deckhouse
spec:
version: 1
enabled: true
settings:
bundle: Default
releaseChannel: Stable
logLevel: Info
---
# Глобальные настройки Deckhouse.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/deckhouse-configure-global.html#%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: global
spec:
version: 1
settings:
modules:
# Шаблон, который будет использоваться для составления адресов системных приложений в кластере.
# Например, Grafana для %s.example.com будет доступна на домене 'grafana.example.com'.
# Домен НЕ ДОЛЖЕН совпадать с указанным в параметре clusterDomain ресурса ClusterConfiguration.
# Можете изменить на свой сразу, либо следовать шагам руководства и сменить его после установки.
publicDomainTemplate: "%s.example.com"
---
# Настройки модуля user-authn.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/150-user-authn/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: user-authn
spec:
version: 2
enabled: true
settings:
controlPlaneConfigurator:
dexCAMode: DoNotNeed
# Включение доступа к API-серверу Kubernetes через Ingress.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/150-user-authn/configuration.html#parameters-publishapi
publishAPI:
enabled: true
https:
mode: Global
global:
kubeconfigGeneratorMasterCA: ""
---
# Настройки облачного провайдера.
# https://deckhouse.io/products/kubernetes-platform/documentation/v1/modules/030-cloud-provider-yandex/cluster_configuration.html
apiVersion: deckhouse.io/v1
kind: YandexClusterConfiguration
layout: Standard
# Параметры доступа к облаку Yandex Cloud.
provider:
# ID облака.
cloudID: *!CHANGE_CloudID*
# ID каталога.
folderID: *!CHANGE_FolderID*
# JSON-ключ, сгенерированный с помощью `yc iam key create` на предыдущем шаге.
# Пример заполнения serviceAccountJSON:
# serviceAccountJSON: |
# {
# "id": "...",
# "service_account_id": "...",
# "created_at": "2022-08-04T05:38:34.756137618Z",
# "key_algorithm": "RSA_2048",
# "public_key": "-----BEGIN PUBLIC KEY-----...-----END PUBLIC KEY-----\n",
# "private_key": "-----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY-----\n"
# }
serviceAccountJSON: *!CHANGE_ServiceAccountJSON*
masterNodeGroup:
replicas: 1
instanceClass:
cores: 4
memory: 8192
# ID образа в Yandex Cloud. Рекомендуется использовать актуальную сборку Ubuntu 22.04 LTS.
# Для получения можете воспользоваться командой:
# yc compute image list --folder-id standard-images --format json | jq -r '[.[] | select(.family == "ubuntu-2204-lts")] | sort_by(.created_at)[-1].id'
# Возможно, захотите изменить.
imageID: fd864gbboths76r8gm5f
externalIPAddresses:
- "Auto"
# Данная подсеть будет разделена на три равных части и использована для создания подсетей в трёх зонах Yandex Cloud.
nodeNetworkCIDR: "10.241.32.0/20"
# Публичная часть SSH-ключа для доступа к узлам облака.
# Этот ключ будет добавлен пользователю на созданных узлах (имя пользователя зависит от используемого образа).
sshPublicKey: *!CHANGE_SSH_KEY*
Подсеть, указанная в nodeNetworkCIDR
, будет автоматически разбита на три равные части для использования в трех зонах Yandex Cloud.
Убедитесь, что выбранной размерности подсети хватит для вашего кластера.
Создайте файл resources.yml
.
# Секция, описывающая параметры инстанс-класса для узлов c компонентами, обеспечивающими рабочую нагрузку.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/030-cloud-provider-yandex/cr.html
apiVersion: deckhouse.io/v1
kind: YandexInstanceClass
metadata:
name: worker
spec:
# Возможно, захотите изменить.
cores: 4
# Возможно, захотите изменить.
memory: 8192
# Возможно, захотите изменить.
diskSizeGB: 30
---
# Секция, описывающая параметры группы узлов c компонентами, обеспечивающими рабочую нагрузку.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/040-node-manager/cr.html#nodegroup
apiVersion: deckhouse.io/v1
kind: NodeGroup
metadata:
name: worker
spec:
cloudInstances:
classReference:
kind: YandexInstanceClass
name: worker
# Максимальное количество инстансов в каждой зоне (используется при масштабировании).
# Возможно, захотите изменить.
maxPerZone: 1
# Минимальное количество инстансов в каждой зоне.
minPerZone: 1
# Список зон, в которых создаются инстансы.
# Возможно, захотите изменить.
zones:
- ru-central1-a
disruptions:
approvalMode: Automatic
nodeType: CloudEphemeral
---
# Секция, описывающая параметры NGINX Ingress controller.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/402-ingress-nginx/cr.html
apiVersion: deckhouse.io/v1
kind: IngressNginxController
metadata:
name: nginx
spec:
ingressClass: nginx
inlet: LoadBalancer
# Описывает, на каких узлах будет находиться Ingress-контроллер. Лейбл node.deckhouse.io/group: <NODE_GROUP_NAME> устанавливается автоматически.
nodeSelector:
node.deckhouse.io/group: worker
---
# Настройки RBAC и авторизации.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/140-user-authz/cr.html#clusterauthorizationrule
apiVersion: deckhouse.io/v1
kind: ClusterAuthorizationRule
metadata:
name: admin
spec:
subjects:
- kind: User
name: admin@deckhouse.io
accessLevel: SuperAdmin
portForwarding: true
---
# Данные статического пользователя.
# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/150-user-authn/cr.html#user
apiVersion: deckhouse.io/v1
kind: User
metadata:
name: admin
spec:
# E-mail пользователя.
email: admin@deckhouse.io
# Это хэш пароля <GENERATED_PASSWORD>, сгенерированного при загрузке страницы "Быстрого Старта".
# Сгенерируйте свой или используйте этот, но только для тестирования
# echo "<GENERATED_PASSWORD>" | htpasswd -BinC 10 "" | cut -d: -f2 | base64 -w0
# Возможно, захотите изменить.
password: <GENERATED_PASSWORD_HASH>
Для установки Deckhouse Kubernetes Platform используется Docker-образ, в который необходимо передать конфигурационные файлы и SSH-ключи доступа на master-узел (далее подразумевается что используется SSH-ключ ~/.ssh/id_rsa
).
Запустите установщик на персональном компьютере.
docker run --pull=always -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" \
-v "$PWD/resources.yml:/resources.yml" -v "$PWD/dhctl-tmp:/tmp/dhctl" registry.deckhouse.ru/deckhouse/ce/install:stable bash
docker run --pull=always -it -v "%cd%\config.yml:/config.yml" -v "%userprofile%\.ssh\:/tmp/.ssh/" -v "%cd%\resources.yml:/resources.yml" -v "%cd%\dhctl-tmp:/tmp/dhctl" registry.deckhouse.ru/deckhouse/ce/install:stable bash -c "chmod 400 /tmp/.ssh/id_rsa; bash"
Внутри контейнера выполните команду:
dhctl bootstrap --ssh-user=ubuntu --ssh-agent-private-keys=/tmp/.ssh/id_rsa --config=/config.yml --config=/resources.yml
В параметре --ssh-user
укажите имя пользователя по умолчанию для выбранного образа виртуальной машины. Для предложенного в руководстве образа это ubuntu
.
Процесс установки может занять от 5 до 30 минут, в зависимости от качества соединения.
По окончании установки инсталлятор выведет IP-адрес master-узла (он вам потребуется далее). Пример вывода:
...
┌ 🎈 ~ Common: Kubernetes Master Node addresses for SSH
│ cloud-demo-master-0 | ssh ubuntu@1.2.3.4
└ 🎈 ~ Common: Kubernetes Master Node addresses for SSH (0.00 seconds)
Почти все готово для полноценной работы Deckhouse Kubernetes Platform!
Для установки Deckhouse Kubernetes Platform используется Docker-образ, в который необходимо передать конфигурационные файлы и SSH-ключи доступа на master-узел (далее подразумевается что используется SSH-ключ ~/.ssh/id_rsa
).
Запустите установщик на персональном компьютере.
echo <LICENSE_TOKEN> | docker login -u license-token --password-stdin registry.deckhouse.ru
docker run --pull=always -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" \
-v "$PWD/resources.yml:/resources.yml" -v "$PWD/dhctl-tmp:/tmp/dhctl" registry.deckhouse.ru/deckhouse/ee/install:stable bash
Авторизуйтесь на персональном компьютере в container image registry, введя лицензионный ключ на запрос пароля:
docker login -u license-token registry.deckhouse.ru
Запустите контейнер с установщиком:
docker run --pull=always -it -v "%cd%\config.yml:/config.yml" -v "%userprofile%\.ssh\:/tmp/.ssh/" -v "%cd%\resources.yml:/resources.yml" -v "%cd%\dhctl-tmp:/tmp/dhctl" registry.deckhouse.ru/deckhouse/ee/install:stable bash -c "chmod 400 /tmp/.ssh/id_rsa; bash"
Внутри контейнера выполните команду:
dhctl bootstrap --ssh-user=ubuntu --ssh-agent-private-keys=/tmp/.ssh/id_rsa --config=/config.yml --config=/resources.yml
В параметре --ssh-user
укажите имя пользователя по умолчанию для выбранного образа виртуальной машины. Для предложенного в руководстве образа это ubuntu
.
Процесс установки может занять от 5 до 30 минут, в зависимости от качества соединения.
По окончании установки инсталлятор выведет IP-адрес master-узла (он вам потребуется далее). Пример вывода:
...
┌ 🎈 ~ Common: Kubernetes Master Node addresses for SSH
│ cloud-demo-master-0 | ssh ubuntu@1.2.3.4
└ 🎈 ~ Common: Kubernetes Master Node addresses for SSH (0.00 seconds)
Почти все готово для полноценной работы Deckhouse Kubernetes Platform!