logo

Урок 2 из 7

Установка Deckhouse

На шаге 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*
icon

Если есть совпадения по подсетям подов и подсетям сервисов, необходимо отрегулировать параметры podSubnetCIDR и serviceSubnetCIDR — это позволит избавиться от пересечений в сети.

Параметры, на которые стоит обратить внимание:

  • kubernetesVersion: "Automatic". Это означает, что при обновлении версии Deckhouse автоматически обновится и версия Kubernetes в кластере.
  • releaseChannel: Stable. Это стабильный канал, по которому приходят только проверенные обновления. Частота обновлений средняя.
  • publicDomainTemplate. Сюда подставляется шаблон доменных имён, созданный на предыдущем шаге.
icon

Модуль, реализующий CNI, заменён с cni-flannel на cni-cilium. Это необходимо для ВМ — их сетевое взаимодействие организовано на базе Cilium. Также у него указан параметр работы туннелей tunnelMode: VXLAN.
Некоторые облачные провайдеры препятствуют прохождению VXLAN-пакетов. В этом случае следует использовать значение tunnelMode: Disabled. Это обеспечивает прямую маршрутизацию всех подсетей узла с другими узлами кластера.

icon

Если на узлах есть несколько сетевых интерфейсов, в параметре 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 монтирует конфигурационный файл.
icon

Обратите внимание, что конфигурационный файл имеет расширение .yml. Если вы привыкли создавать конфигурационные файлы с расширением .yaml, необходимо исправить расширение либо в установщике, либо в своём файле.

  • Далее пробрасывается домашний каталог с подкаталогом .ssh, в котором лежат ключи для подключения к master-узлу.
icon

Подключение по 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
icon

В нашем случае SSH-ключ защищён паролем, поэтому мы ввели пароль. В вашем случае пароль может не требоваться.
Также необходимо ввести пароль sudo, если он используется на конечном узле. Если sudo не используется, необходимо ввести пустой пароль или убрать опцию --ask-become-pass в команде bootstrap.

В зависимости от мощности «железа» установка Deckhouse занимает от 5 до 30 минут. В процессе будет отображаться подробный лог. По завершении вы снова увидите приглашение командной строки контейнера.

На последних этапах установки происходят перезагрузка master-узла, создание пода Deckhouse, его переход в узел и в статус «Готово».