На шаге 4 необходимо выбрать вариант платформы Deckhouse — Community Edition (CE) или Enterprise Edition (EE). Для нашего примера мы выберем CE.
Ниже на той же странице дано сгенерированное содержимое конфигурационного файла config.yml
.
# Секция с общими параметрами кластера.
# https://deckhouse.ru/documentation/v1/installing/configuration.html#clusterconfiguration
apiVersion: deckhouse.io/v1
kind: ClusterConfiguration
clusterType: Static
# Адресное пространство подов кластера.
podSubnetCIDR: 10.111.0.0/16
# Адресное пространство сети сервисов кластера.
serviceSubnetCIDR: 10.222.0.0/16
kubernetesVersion: "Automatic"
# Домен кластера.
clusterDomain: "cluster.local"
---
# Секция первичной инициализации кластера Deckhouse.
# https://deckhouse.ru/documentation/v1/installing/configuration.html#initconfiguration
apiVersion: deckhouse.io/v1
kind: InitConfiguration
deckhouse:
releaseChannel: Stable
configOverrides:
global:
modules:
# Шаблон, который будет использоваться для составления адресов системных приложений в кластере.
# Например, Grafana для %s.example.com будет доступна на домене 'grafana.example.com'.
# Можете изменить на свой сразу либо следовать шагам руководства и сменить его после установки.
publicDomainTemplate: "%s.example.com"
userAuthn:
controlPlaneConfigurator:
dexCAMode: DoNotNeed
# Включение доступа к API-серверу Kubernetes через Ingress.
# https://deckhouse.ru/documentation/v1/modules/150-user-authn/configuration.html#parameters-publishapi
publishAPI:
enable: true
https:
mode: Global
global:
kubeconfigGeneratorMasterCA: ""
# Включить модуль cni-cilium.
cniCiliumEnabled: true
# Настройки модуля cni-cilium.
# https://deckhouse.ru/documentation/v1/modules/021-cni-cilium/configuration.html
cniCilium:
tunnelMode: VXLAN
---
# Секция с параметрами статического кластера.
# https://deckhouse.ru/documentation/v1/installing/configuration.html#staticclusterconfiguration
apiVersion: deckhouse.io/v1
kind: StaticClusterConfiguration
# Список внутренних сетей узлов кластера (например, '10.0.4.0/24'), который
# используется для связи компонентов Kubernetes (kube-apiserver, kubelet...) между собой.
# Если каждый узел в кластере имеет только один сетевой интерфейс,
# ресурс StaticClusterConfiguration можно не создавать.
internalNetworkCIDRs:
- *!CHANGE_internalNetworkCIDRs*
Если есть совпадения по подсетям подов и подсетям сервисов, необходимо отрегулировать параметры podSubnetCIDR и serviceSubnetCIDR — это позволит избавиться от пересечений в сети.
Параметры, на которые стоит обратить внимание:
kubernetesVersion
:"Automatic"
. Это означает, что при обновлении версии Deckhouse автоматически обновится и версия Kubernetes в кластере.releaseChannel: Stable
. Это стабильный канал, по которому приходят только проверенные обновления. Частота обновлений средняя.publicDomainTemplate
. Сюда подставляется шаблон доменных имён, созданный на предыдущем шаге.
Модуль, реализующий CNI, заменён с cni-flannel на cni-cilium. Это необходимо для ВМ — их сетевое взаимодействие организовано на базе Cilium. Также у него указан параметр работы туннелей tunnelMode: VXLAN
.
Некоторые облачные провайдеры препятствуют прохождению VXLAN-пакетов. В этом случае следует использовать значение tunnelMode: Disabled
. Это обеспечивает прямую маршрутизацию всех подсетей узла с другими узлами кластера.
Если на узлах есть несколько сетевых интерфейсов, в параметре internalNetworkCIDRs
необходимо указать тот, который будет использоваться для внутренней сети. Если на каждом узле кластера всего один интерфейс, можно удалить параметр internalNetworkCIDRs
.
Поскольку в нашем примере есть белые IP-адреса, мы укажем значение параметра internalNetworkCIDRs
.
---
# Секция с параметрами статического кластера.
# https://deckhouse.ru/documentation/v1/installing/configuration.html#staticclusterconfiguration
apiVersion: deckhouse.io/v1
kind: StaticClusterConfiguration
# Список внутренних сетей узлов кластера (например, '10.0.4.0/24'), который
# используется для связи компонентов Kubernetes (kube-apiserver, kubelet...) между собой.
# Если каждый узел в кластере имеет только один сетевой интерфейс,
# ресурс StaticClusterConfiguration можно не создавать.
internalNetworkCIDRs:
- 10.128.0.1/24
Далее необходимо запустить установщик Deckhouse изнутри каталога с файлом config.yml
:
docker run --pull=always -it -v "$PWD/config.yml:/config.yml" -v "$HOME/.ssh/:/tmp/.ssh/" registry.deckhouse.io/deckhouse/ce/install:stable bash
Рассмотрим эту команду подробнее.
- Команда
docker run
монтирует конфигурационный файл.
Обратите внимание, что конфигурационный файл имеет расширение .yml. Если вы привыкли создавать конфигурационные файлы с расширением .yaml, необходимо исправить расширение либо в установщике, либо в своём файле.
- Далее пробрасывается домашний каталог с подкаталогом
.ssh
, в котором лежат ключи для подключения к master-узлу.
Подключение по SSH производится только с помощью ключей — парольная аутентификация не поддерживается.
- В конце указывается образ Deckhouse для инсталляции.
В результате выполнения команды образ Deckhouse скачивается из хранилища и мы оказываемся внутри контейнера.
Далее в контейнере необходимо выполнить следующую команду, указав в ней SSH пользователя и SSH-хост:
dhctl bootstrap --ssh-user=<username> --ssh-host=<master_ip> --ssh-agent-private-keys=/tmp/.ssh/id_rsa \
--config=/config.yml \
--ask-become-pass
В нашем случае SSH-ключ защищён паролем, поэтому мы ввели пароль. В вашем случае пароль может не требоваться.
Также необходимо ввести пароль sudo, если он используется на конечном узле. Если sudo не используется, необходимо ввести пустой пароль или убрать опцию --ask-become-pass
в команде bootstrap.
В зависимости от мощности «железа» установка Deckhouse занимает от 5 до 30 минут. В процессе будет отображаться подробный лог. По завершении вы снова увидите приглашение командной строки контейнера.
На последних этапах установки происходят перезагрузка master-узла, создание пода Deckhouse, его переход в узел и в статус «Готово».