Deckhouse Kubernetes Platform в VK Cloud (OpenStack)

Введите лицензионный ключ

Ввести

Ниже сгенерированы рекомендованные настройки для установки Deckhouse Kubernetes Platform Enterprise Edition:

  • config.yml — файл первичной конфигурации кластера. Содержит параметры инсталлятора, параметры доступа облачного провайдера, описание ресурсов для создания после установки, и начальные параметры кластера.

Обратите внимание:

  • Так выделены параметры, обязательные для самостоятельного заполнения.
  • Так выделены параметры, которые вы возможно захотите изменить.
  • Если вы запускаете инсталлятор под Windows, то убедитесь, что кодировка создаваемого YAML-файла конфигурации UTF-8 (либо удалите примечания на русском языке).

Создайте файл config.yml.

1# Общие параметры кластера.
2# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/installing/configuration.html#clusterconfiguration
3apiVersion: deckhouse.io/v1
4kind: ClusterConfiguration
5clusterType: Cloud
6cloud:
7  provider: OpenStack
8  # Префикс объектов, создаваемых в облаке при установке.
9  # Возможно, захотите изменить.
10  prefix: cloud-demo
11# Адресное пространство Pod’ов кластера.
12podSubnetCIDR: 10.111.0.0/16
13# Адресное пространство для service’ов кластера.
14serviceSubnetCIDR: 10.222.0.0/16
15kubernetesVersion: "Automatic"
16clusterDomain: "cluster.local"
17---
18# Настройки первичной инициализации кластера Deckhouse.
19# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/installing/configuration.html#initconfiguration
20apiVersion: deckhouse.io/v1
21kind: InitConfiguration
22deckhouse:
23  imagesRepo: registry.deckhouse.ru/deckhouse/ee
24  # Строка с ключом для доступа к Docker registry (сгенерировано автоматически для вашего токена доступа).
25  registryDockerCfg: <YOUR_ACCESS_STRING_IS_HERE>
26---
27# Настройки модуля deckhouse.
28# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/deckhouse/configuration.html
29apiVersion: deckhouse.io/v1alpha1
30kind: ModuleConfig
31metadata:
32  name: deckhouse
33spec:
34  version: 1
35  enabled: true
36  settings:
37    bundle: Default
38    releaseChannel: Stable
39    logLevel: Info
40---
41# Глобальные настройки Deckhouse.
42# 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
43apiVersion: deckhouse.io/v1alpha1
44kind: ModuleConfig
45metadata:
46  name: global
47spec:
48  version: 2
49  settings:
50    modules:
51      # Шаблон, который будет использоваться для составления адресов системных приложений в кластере.
52      # Например, Grafana для %s.example.com будет доступна на домене 'grafana.example.com'.
53      # Домен НЕ ДОЛЖЕН совпадать с указанным в параметре clusterDomain ресурса ClusterConfiguration.
54      # Можете изменить на свой сразу, либо следовать шагам руководства и сменить его после установки.
55      publicDomainTemplate: "%s.example.com"
56---
57# Настройки модуля user-authn.
58# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/user-authn/configuration.html
59apiVersion: deckhouse.io/v1alpha1
60kind: ModuleConfig
61metadata:
62  name: user-authn
63spec:
64  version: 2
65  enabled: true
66  settings:
67    controlPlaneConfigurator:
68      dexCAMode: DoNotNeed
69    # Включение доступа к API-серверу Kubernetes через Ingress.
70    # https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/user-authn/configuration.html#parameters-publishapi
71    publishAPI:
72      enabled: true
73      https:
74        mode: Global
75        global:
76          kubeconfigGeneratorMasterCA: ""
77---
78# Настройки модуля cloud-provider-openstack.
79# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/cloud-provider-openstack/configuration.html
80apiVersion: deckhouse.io/v1alpha1
81kind: ModuleConfig
82metadata:
83  name: cloud-provider-openstack
84spec:
85  version: 1
86  enabled: true
87  settings:
88    ignoreVolumeMicroversion: true
89---
90# Настройки облачного провайдера.
91# https://deckhouse.io/products/kubernetes-platform/documentation/v1/modules/cloud-provider-openstack/cluster_configuration.html
92apiVersion: deckhouse.io/v1
93kind: OpenStackClusterConfiguration
94layout: Standard
95standard:
96  # Имя сети для внешнего взаимодействия.
97  # В SDN Neutron и Sprut по умолчанию создаются сети ext-net и internet соответственно. Вы можете использовать их, или создать другие и указать их в конфигурации.
98  externalNetworkName: *!CHANGE_EXT_NET*
99  # Адресация для внутренней сети узлов кластера.
100  internalNetworkCIDR: 192.168.198.0/24
101  # Список адресов рекурсивных DNS внутренней сети.
102  # Возможно, захотите изменить.
103  internalNetworkDNSServers:
104    - 8.8.8.8
105    - 8.8.4.4
106  # Флаг, который определяет необходимо ли настраивать SecurityGroups и AllowedAddressPairs на портах внутренней сети.
107  internalNetworkSecurity: true
108# параметры доступа к OpenStack API
109provider:
110  # Возможно, захотите изменить.
111  authURL: https://infra.mail.ru:35357/v3/
112  # Возможно, захотите изменить.
113  domainName: users
114  # Переменная OS_USER_DOMAIN_NAME из файла openrc.
115  password: *!CHANGE_PASSWORD*
116  # Возможно, захотите изменить.
117  region: RegionOne
118  # Возможно вам нужно указать tenantName вместо tenantID.
119  # https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/cloud-provider-openstack/cluster_configuration.html#openstackclusterconfiguration-provider-tenantname
120  # tenantName: PROJECT_NAME
121  tenantID: *!CHANGE_PROJECT_ID*
122  username: *!CHANGE_USERNAME*
123masterNodeGroup:
124  replicas: 1
125  # Массив используемых типов дисков.
126  volumeTypeMap:
127    # <availability zone>: <volume type>
128    # Возможно, захотите изменить.
129    ME1: high-iops
130  instanceClass:
131    # Используемый flavor. Посмотреть список flavor можно командой 'openstack flavor list'
132    # https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/cloud-provider-openstack/cluster_configuration.html#openstackclusterconfiguration-masternodegroup-instanceclass-flavorname
133    # Возможно, захотите изменить.
134    flavorName: STD3-4-8
135    # Используемый образ виртуальной машины. Посмотреть список образов можно командой 'openstack image list'
136    # https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/cloud-provider-openstack/cluster_configuration.html#openstackclusterconfiguration-masternodegroup-instanceclass-imagename
137    # Возможно, захотите изменить.
138    imageName: ubuntu-22-202404160933.gitd6495fe9
139    # Размер диска для корневой ФС.
140    rootDiskSize: 50
141# Публичная часть SSH-ключа для доступа к узлам облака.
142# Этот ключ будет добавлен пользователю на созданных узлах (имя пользователя зависит от используемого образа).
143sshPublicKey: *!CHANGE_SSH_KEY*
144---
145# Секция, описывающая параметры инстанс-класса для узлов c компонентами, обеспечивающими рабочую нагрузку.
146# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/cloud-provider-openstack/cr.html
147apiVersion: deckhouse.io/v1
148kind: OpenStackInstanceClass
149metadata:
150  name: worker
151spec:
152  # Используемый flavor для данного инстанс-класса.
153  # Возможно, захотите изменить.
154  flavorName: STD3-4-8
155  rootDiskSize: 30
156  # Используемый образ виртуальной машины.
157  # Возможно, захотите изменить.
158  imageName: ubuntu-22-202404160933.gitd6495fe9
159---
160# Секция, описывающая параметры группы узлов c компонентами, обеспечивающими рабочую нагрузку.
161# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/node-manager/cr.html#nodegroup
162apiVersion: deckhouse.io/v1
163kind: NodeGroup
164metadata:
165  name: worker
166spec:
167  cloudInstances:
168    classReference:
169      kind: OpenStackInstanceClass
170      name: worker
171    # Максимальное количество инстансов в каждой зоне (используется при масштабировании).
172    # Возможно, захотите изменить.
173    maxPerZone: 1
174    # Минимальное количество инстансов в каждой зоне. Чтобы запустить больше узлов, увеличьте maxPerZone или добавьте зоны.
175    minPerZone: 1
176    # Список зон, в которых создаются инстансы.
177    # Возможно, захотите изменить.
178    zones:
179    - ME1
180  disruptions:
181    approvalMode: Automatic
182  nodeType: CloudEphemeral
183---
184# Секция, описывающая параметры NGINX Ingress controller.
185# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/ingress-nginx/cr.html
186apiVersion: deckhouse.io/v1
187kind: IngressNginxController
188metadata:
189  name: nginx
190spec:
191  ingressClass: nginx
192  inlet: LoadBalancer
193  # Описывает, на каких узлах будет находиться Ingress-контроллер. Лейбл node.deckhouse.io/group: <NODE_GROUP_NAME> устанавливается автоматически.
194  nodeSelector:
195    node.deckhouse.io/group: worker
196---
197# Настройки RBAC и авторизации.
198# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/user-authz/cr.html#clusterauthorizationrule
199apiVersion: deckhouse.io/v1
200kind: ClusterAuthorizationRule
201metadata:
202  name: admin
203spec:
204  subjects:
205  - kind: User
206    name: admin@deckhouse.io
207  accessLevel: SuperAdmin
208  portForwarding: true
209---
210# Данные статического пользователя.
211# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/user-authn/cr.html#user
212apiVersion: deckhouse.io/v1
213kind: User
214metadata:
215  name: admin
216spec:
217  # E-mail пользователя.
218  email: admin@deckhouse.io
219  # Это хэш пароля tqc5qbsy19, сгенерированного при загрузке страницы "Быстрого Старта".
220  # Сгенерируйте свой или используйте этот, но только для тестирования
221  # echo "tqc5qbsy19" | htpasswd -BinC 10 "" | cut -d: -f2 | base64 -w0
222  # Возможно, захотите изменить.
223  password: 'JDJhJDEwJGhUU3gvaWxGY0svV2EwbFFENHVzSWUva1p0ZEdCRFBmZGY2UFpwamV5dUxxcWFlU3dSTnlx'

Для установки Deckhouse Kubernetes Platform используется образ контейнера, в который необходимо передать конфигурационные файлы и SSH-ключи доступа на master-узел (далее подразумевается что используется SSH-ключ ~/.ssh/id_rsa пользователя персонального компьютера, с которого выполняется установка).

Запустите установщик на персональном компьютере.

Linux / macOS Windows

Авторизуйтесь на персональном компьютере в container image registry:

1echo <LICENSE_TOKEN> | docker login -u license-token --password-stdin registry.deckhouse.ru

Запустите контейнер с установщиком:

1docker run --pull=always -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" registry.deckhouse.ru/deckhouse/se-plus/install:stable bash

Авторизуйтесь на персональном компьютере в container image registry, введя лицензионный ключ на запрос пароля:

1docker login -u license-token registry.deckhouse.ru

Запустите контейнер с установщиком:

1docker run --pull=always -it -v "%cd%\config.yml:/config.yml" -v "%userprofile%\.ssh\:/tmp/.ssh/" registry.deckhouse.ru/deckhouse/se-plus/install:stable bash -c "chmod 400 /tmp/.ssh/id_rsa; bash"

Внутри контейнера выполните команду:

1dhctl bootstrap --ssh-user=ubuntu --ssh-agent-private-keys=/tmp/.ssh/id_rsa --config=/config.yml

В параметре --ssh-user укажите имя пользователя по умолчанию для выбранного образа виртуальной машины. Для предложенного в руководстве образа это ubuntu.

Если установка была прервана...

Если установка была прервана (не хватило квот, ошибки сети и т.п.), вы можете ее перезапустить. Установка корректно продолжится, никакие дублирующие ресурсы в облаке созданы не будут.

Если установка не может быть продолжена и вам нужно удалить созданные в облаке ресурсы, выполните следующую команду:

1dhctl bootstrap-phase abort --ssh-user=ubuntu --ssh-agent-private-keys=/tmp/.ssh/id_rsa --config=/config.yml

Процесс установки может занять от 5 до 30 минут, в зависимости от качества соединения.

По окончании установки инсталлятор выведет IP-адрес master-узла (он вам потребуется далее). Пример вывода:

1...
2┌ 🎈 ~ Common: Kubernetes Master Node addresses for SSH
3│ cloud-demo-master-0 | ssh ubuntu@1.2.3.4
4└ 🎈 ~ Common: Kubernetes Master Node addresses for SSH (0.00 seconds)

Почти все готово для полноценной работы Deckhouse Kubernetes Platform!

Для установки Deckhouse Kubernetes Platform используется образ контейнера, в который необходимо передать конфигурационные файлы и SSH-ключи доступа на master-узел (далее подразумевается что используется SSH-ключ ~/.ssh/id_rsa пользователя персонального компьютера, с которого выполняется установка).

Запустите установщик на персональном компьютере.

Linux / macOS Windows

Авторизуйтесь на персональном компьютере в container image registry:

1echo <LICENSE_TOKEN> | docker login -u license-token --password-stdin registry.deckhouse.ru

Запустите контейнер с установщиком:

1docker run --pull=always -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" registry.deckhouse.ru/deckhouse/ee/install:stable bash

Авторизуйтесь на персональном компьютере в container image registry, введя лицензионный ключ на запрос пароля:

1docker login -u license-token registry.deckhouse.ru

Запустите контейнер с установщиком:

1docker run --pull=always -it -v "%cd%\config.yml:/config.yml" -v "%userprofile%\.ssh\:/tmp/.ssh/" registry.deckhouse.ru/deckhouse/ee/install:stable bash -c "chmod 400 /tmp/.ssh/id_rsa; bash"

Внутри контейнера выполните команду:

1dhctl bootstrap --ssh-user=ubuntu --ssh-agent-private-keys=/tmp/.ssh/id_rsa --config=/config.yml

В параметре --ssh-user укажите имя пользователя по умолчанию для выбранного образа виртуальной машины. Для предложенного в руководстве образа это ubuntu.

Если установка была прервана...

Если установка была прервана (не хватило квот, ошибки сети и т.п.), вы можете ее перезапустить. Установка корректно продолжится, никакие дублирующие ресурсы в облаке созданы не будут.

Если установка не может быть продолжена и вам нужно удалить созданные в облаке ресурсы, выполните следующую команду:

1dhctl bootstrap-phase abort --ssh-user=ubuntu --ssh-agent-private-keys=/tmp/.ssh/id_rsa --config=/config.yml

Процесс установки может занять от 5 до 30 минут, в зависимости от качества соединения.

По окончании установки инсталлятор выведет IP-адрес master-узла (он вам потребуется далее). Пример вывода:

1...
2┌ 🎈 ~ Common: Kubernetes Master Node addresses for SSH
3│ cloud-demo-master-0 | ssh ubuntu@1.2.3.4
4└ 🎈 ~ Common: Kubernetes Master Node addresses for SSH (0.00 seconds)

Почти все готово для полноценной работы Deckhouse Kubernetes Platform!