Deckhouse Kubernetes Platform в Selectel (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# Настройки модуля для работы с 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 # Storage Class по умолчанию.
89 storageClass:
90 default: fast.ru-3a
91---
92# Настройки облачного провайдера.
93# https://deckhouse.io/products/kubernetes-platform/documentation/v1/modules/cloud-provider-openstack/cluster_configuration.html
94apiVersion: deckhouse.io/v1
95kind: OpenStackClusterConfiguration
96layout: Standard
97standard:
98 # Кластера в Selectel VPC должны устанавливаться с bastion-хостом в целях безопасности, из-за отсутствия поддержки Security Groups.
99 # В противном случае в WAN будут открыты порты на master-узлах.
100 bastion:
101 zone: ru-3a
102 volumeType: fast.ru-3a
103 instanceClass:
104 flavorName: c2m2-d0
105 imageName: ubuntu-22-04
106 rootDiskSize: 20
107 # Имя сети для внешнего взаимодействия. Значение по умолчанию: external-network
108 externalNetworkName: external-network
109 # Адресация для внутренней сети узлов кластера.
110 internalNetworkCIDR: 192.168.198.0/24
111 # Список адресов рекурсивных DNS внутренней сети.
112 # Возможно, захотите изменить.
113 internalNetworkDNSServers:
114 - 8.8.8.8
115 - 8.8.4.4
116 # SecurityGroups не поддерживаются в Selectel VPC.
117 internalNetworkSecurity: false
118# параметры доступа к OpenStack API
119provider:
120 authURL: 'https://api.selvpc.ru/identity/v3'
121 # Переменная OS_USER_DOMAIN_NAME из openrc-файла.
122 domainName: *!CHANGE_DOMAINNAME*
123 password: *!CHANGE_PASSWORD*
124 # Возможно, захотите изменить.
125 region: ru-3
126 # Возможно вам нужно указать tenantName вместо tenantID.
127 # https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/cloud-provider-openstack/cluster_configuration.html#openstackclusterconfiguration-provider-tenantname
128 # tenantName: PROJECT_NAME
129 tenantID: *!CHANGE_PROJECT_ID*
130 # Переменная OS_USERNAME из openrc-файла.
131 username: *!CHANGE_USERNAME*
132masterNodeGroup:
133 replicas: 1
134 # Массив используемых типов дисков.
135 volumeTypeMap:
136 # <availability zone>: <volume type>
137 # Возможно, захотите изменить.
138 ru-3a: "fast.ru-3a"
139 instanceClass:
140 # Используемый flavor.
141 # Возможно, захотите изменить.
142 flavorName: m1.large
143 # Используемый образ виртуальной машины.
144 # Возможно, захотите изменить.
145 # Не используйте образы, предоставленные Selectel. Загружайте и используйте образы для облачных сред, предоставленные разработчиками дистрибутива.
146 imageName: ubuntu-22.04
147 # Размер диска для корневой ФС.
148 rootDiskSize: 40
149# Публичная часть SSH-ключа для доступа к узлам облака.
150# Этот ключ будет добавлен пользователю на созданных узлах (имя пользователя зависит от используемого образа).
151sshPublicKey: *!CHANGE_SSH_KEY*
152---
153# Секция, описывающая параметры инстанс-класса для узлов c компонентами, обеспечивающими рабочую нагрузку.
154# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/cloud-provider-openstack/cr.html
155apiVersion: deckhouse.io/v1
156kind: OpenStackInstanceClass
157metadata:
158 name: worker
159spec:
160 # Используемый flavor для данного инстанс-класса.
161 # Возможно, захотите изменить.
162 flavorName: m1.large
163 rootDiskSize: 30
164 # Используемый образ виртуальной машины.
165 # Возможно, захотите изменить.
166 imageName: ubuntu-22.04
167---
168# Секция, описывающая параметры группы узлов c компонентами, обеспечивающими рабочую нагрузку.
169# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/node-manager/cr.html#nodegroup
170apiVersion: deckhouse.io/v1
171kind: NodeGroup
172metadata:
173 name: worker
174spec:
175 cloudInstances:
176 classReference:
177 kind: OpenStackInstanceClass
178 name: worker
179 # Максимальное количество инстансов в каждой зоне (используется при масштабировании).
180 # Возможно, захотите изменить.
181 maxPerZone: 1
182 # Минимальное количество инстансов в каждой зоне. Чтобы запустить больше узлов, увеличьте maxPerZone или добавьте зоны.
183 minPerZone: 1
184 # Список зон, в которых создаются инстансы.
185 # Возможно, захотите изменить.
186 zones:
187 - ru-3a
188 disruptions:
189 approvalMode: Automatic
190 nodeType: CloudEphemeral
191---
192# Секция, описывающая параметры NGINX Ingress controller.
193# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/ingress-nginx/cr.html
194apiVersion: deckhouse.io/v1
195kind: IngressNginxController
196metadata:
197 name: nginx
198spec:
199 ingressClass: nginx
200 inlet: LoadBalancer
201 # Описывает, на каких узлах будет находиться Ingress-контроллер. Лейбл node.deckhouse.io/group: <NODE_GROUP_NAME> устанавливается автоматически.
202 nodeSelector:
203 node.deckhouse.io/group: worker
204---
205# Настройки RBAC и авторизации.
206# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/user-authz/cr.html#clusterauthorizationrule
207apiVersion: deckhouse.io/v1
208kind: ClusterAuthorizationRule
209metadata:
210 name: admin
211spec:
212 subjects:
213 - kind: User
214 name: admin@deckhouse.io
215 accessLevel: SuperAdmin
216 portForwarding: true
217---
218# Данные статического пользователя.
219# https://deckhouse.ru/products/kubernetes-platform/documentation/v1/modules/user-authn/cr.html#user
220apiVersion: deckhouse.io/v1
221kind: User
222metadata:
223 name: admin
224spec:
225 # E-mail пользователя.
226 email: admin@deckhouse.io
227 # Это хэш пароля k8orqjt2ic, сгенерированного при загрузке страницы "Быстрого Старта".
228 # Сгенерируйте свой или используйте этот, но только для тестирования
229 # echo "k8orqjt2ic" | htpasswd -BinC 10 "" | cut -d: -f2 | base64 -w0
230 # Возможно, захотите изменить.
231 password: 'JDJhJDEwJGp6SkNoemROOENYaG5lSUxucXdTLi5wYmlOYTVKc0JXRnZRUHRUUDBFZFlOdm5zQnQ2cHgy'
Для установки Deckhouse Kubernetes Platform используется образ контейнера, в который необходимо передать конфигурационные файлы и SSH-ключи доступа на master-узел (далее подразумевается что используется SSH-ключ ~/.ssh/id_rsa
пользователя персонального компьютера, с которого выполняется установка).
Запустите установщик на персональном компьютере.
Авторизуйтесь на персональном компьютере в 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
.
Процесс установки может занять от 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
пользователя персонального компьютера, с которого выполняется установка).
Запустите установщик на персональном компьютере.
Авторизуйтесь на персональном компьютере в 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
.
Процесс установки может занять от 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!