Подготовка к установке основного экземпляра системы

В данном разделе описаны подготовительные действия, которые необходимо выполнить перед запуском установщика основного экземпляра системы.

Подготовка состоит из следующих этапов:

  1. Выбор машины для запуска установщика.

  2. Настройка доступа к кластеру Kubernetes с машины, на которой запускается установщик системы.

  3. Настройка доступа к системе по доменному имени.

  4. Настройка SSH-доступа с машины, на которой запускается установщик системы, к worker-узлам кластера.

  5. Применение дополнительных настроек, если узлы кластера работают под управлением ОС Альт Сервер или Альт СП Сервер.

  6. Добавление TLS-сертификатов для шифрования трафика ClickHouse в кластере Kubernetes.

    Данный этап необходимо выполнять, только если:

    • вы планируете устанавливать ClickHouse в кластере Kubernetes, а не в выделенном кластере;

    • необходимо включить шифрование трафика между системой и ClickHouse, используя для этого заранее созданные TLS-сертификаты.

  7. Скачивание архива с файлами для установки и проверка его целостности.

  8. Создание дополнительных объектов StorageClass, если в кластере будет использоваться провайдер хранилища (storage provider) local-path-provisioner.

Выбор машины для запуска установщика

Определите машину, на которой будет запущен установщик основного экземпляра системы. Установщик может запускаться как на одном из master-узлов кластера Kubernetes, так и на машине администратора, имеющей сетевой доступ к кластеру.

Настройка доступа к кластеру Kubernetes

На машине, с которой будет выполняться установка, должны быть соблюдены следующие требования:

  1. Установлена утилита ansible.

  2. В системных переменных окружения указан путь к файлу kubeconfig.

    • Linux

    • Windows

    В ОС Linux путь к файлу kubeconfig по умолчанию — $HOME/.kube/config. Вы можете изменить его с помощью переменной окружения KUBECONFIG:

    export KUBECONFIG=<path_to_confg>

    Здесь:

    • <path_to_config> — путь к файлу kubeconfig.

    В ОС Windows путь к файлу kubeconfig по умолчанию — $%USERPROFILE%\.kube\config. Вы можете изменить его с помощью переменной окружения KUBECONFIG:

    $env:KUBECONFIG = <path_to_confg>

    Здесь:

    • <path_to_config> — путь к файлу kubeconfig.

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

kubectl get nodes

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

NAME                     STATUS   ROLES           AGE    VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE
master01.company.local   Ready    control-plane   140d   v1.26.3   10.10.10.1    <none>        RED OS MUROM (7.3.2)
worker01.company.local   Ready    <none>          140d   v1.26.3   10.10.10.2    <none>        RED OS MUROM (7.3.2)
worker02.company.local   Ready    <none>          140d   v1.26.3   10.10.10.3    <none>        RED OS MUROM (7.3.2)
worker03.company.local   Ready    <none>          140d   v1.26.3   10.10.10.4    <none>        RED OS MUROM (7.3.2)

Настройка доступа к системе по доменному имени

Если система будет установлена в кластер из одного узла, пропустите данный этап. На этапе Web access установки системы укажите полное доменное имя (FQDN) виртуальной машины, на которой функционирует кластер.

Если система будет установлена в кластер из нескольких узлов, в качестве доменного имени нельзя использовать FQDN master-узла кластера. Используйте доменное имя, не занятое ни одним другим сервисом.

Cоздайте A-запись на DNS-сервере вашей организации. Она позволит ассоциировать доменное имя, по которому будет доступна система, с IP-адресом, зарезервированным для использования кластером системы. Запросы, поступающие на этот адрес, будут перенаправляться на сервисы кластера балансировщиком MetalLB и контроллером ingress-nginx, входящими в пакет установки системы.

Доменное имя должно удовлетворять следующим требованиям:

  • Допустимые символы: a—​z, 0—​9, -, ..

  • Имя не должно начинаться и заканчиваться дефисом или точкой.

Пример допустимого доменного имени: evo.company.local.

  • Диапазон IP-адресов, зарезервированных для системы, и ее доменное имя потребуется указать на этапе Web access установки системы.

  • Инструкция по созданию A-записи приведена для DNS-сервера на базе Windows Server. Для выполнения настройки на другом DNS-сервере обратитесь к официальной документации его производителя.

Чтобы настроить сетевой доступ к кластеру системы:

  1. Запросите у сетевых инженеров IP-адрес, который будет зарезервирован для использования кластером системы. Убедитесь, что этот адрес доступен для обращений из внешних сетей.

  2. Добавьте исключение в диспетчере DHCP, чтобы адрес не мог быть динамически назначен другим хостам в сети:

    1. Откройте диспетчер DHCP. Например, это можно сделать, выполнив команду:

      dhcpmgmt.msc
    2. Выберите область адресов, соответствующих подсети, в которую входит зарезервированный адрес.

    3. Откройте контекстное меню пула адресов области и выберите опцию Диапазон исключения.

    4. В открывшемся окне укажите зарезервированный адрес и нажмите на кнопку Добавить.

  3. Добавьте A-запись в диспетчере DNS:

    1. Откройте диспетчер DNS. Например, это можно сделать, выполнив команду:

      dnsmgmt.msc
    2. Выберите необходимую зону прямого просмотра.

    3. Откройте контекстное меню зоны и выберите опцию Создать узел (А или АААА).

    4. В открывшемся окне укажите доменное имя и IP-адрес, который будет с ним ассоциирован.

    5. Чтобы обеспечить возможность преобразования IP-адреса в доменное имя, установите флажок Создать соответствующую PTR-запись.

    6. Нажмите на кнопку Добавить узел.

  4. Если требуется, добавьте CNAME-запись для обращения к специфическим службам кластера, например:

    grafana.rvision.company.local

    Чтобы добавить CNAME-запись:

    1. Откройте контекстное меню той же зоны, в которой создана A-запись, и выберите опцию Создать псевдоним (CNAME).

    2. В открывшемся окне укажите псевдоним и доменное имя системы.

    3. При необходимости измените время существования (TTL) псевдонима.

  5. Убедитесь, что преобразование доменного имени в IP-адрес и обратно выполняется успешно. Для этого:

    1. Откройте терминал на вашем сервере.

    2. Выполните команды:

      nslookup <system_domain_name>
      nslookup <system_ip>

      Здесь:

      • <system_domain_name> — доменное имя системы, используемое в A-записи.

      • <system_ip> — IP-адрес системы, используемый в A-записи.

      Обе эти команды должны возвращать доменное имя и IP-адрес системы. Если преобразование доменного имени в IP-адрес или обратно не выполняется, проверьте корректность A-записи, повторно выполнив шаги инструкции.

Настройка SSH-доступа к worker-узлам кластера

Для загрузки образов контейнеров на worker-узлы установщик использует Ansible. Необходимо настроить SSH-доступ с машины, на которой запускается установщик системы, до worker-узлов под единой учетной записью. Поддерживается доступ по ключам или паролю.

Если на master-узле кластера установлена ОС Альт Сервер или Альт СП Сервер и планируется доступ по паролю, установите утилиту sshpass на master-узле:

sudo apt-get install sshpass

Для настройки SSH-доступа выполните следующие действия на каждом worker-узле кластера:

  1. Пользователю, от имени которого будет установлен кластер, необходимо выдать права суперпользователя (root). Для этого добавьте следующую строку в файл /etc/sudoers:

    <user> ALL=(ALL:ALL) NOPASSWD: ALL

    Здесь:

    • <user> — пользователь, от имени которого будет установлен кластер.

  2. Настройте SSH-доступ по паролю или по ключу:

    • Если планируется доступ по паролю:

      1. Установите пакет sshpass:

        • РЕД ОС

        • Альт Сервер, Альт СП Сервер, Astra Linux

        sudo dnf install sshpass
        sudo apt-get install sshpass
      2. Проверьте возможность подключения к узлу по SSH:

        ssh <user>@<fqdn>

        Здесь:

        • <user> — пользователь, от имени которого будет установлен кластер.

        • <fqdn> — полное доменное имя (FQDN) текущего узла.

          Чтобы узнать FQDN текущего узла, выполните команду:

          hostname -f
    • Если планируется доступ по ключу:

      1. Проверьте возможность подключения к узлу по SSH:

        ssh <user>@<fqdn>

        Здесь:

        • <user> — пользователь, от имени которого будет установлен кластер.

        • <fqdn> — полное доменное имя (FQDN) текущего узла.

          Чтобы узнать FQDN текущего узла, выполните команду:

          hostname -f
      2. Если подключение по SSH-ключу не настроено, сгенерируйте ключи и добавьте открытый ключ на узел:

        ssh-keygen
        ssh-copy-id <user>@<fqdn>

        Здесь:

        • <user> — пользователь, от имени которого будет установлен кластер.

        • <fqdn> — полное доменное имя (FQDN) текущего узла.

Дополнительные настройки для Альт Сервер и Альт СП Сервер

Если узлы кластера работают под управлением ОС Альт Сервер или Альт СП Сервер, выполните следующие действия на master-узле:

  1. Установите коллекцию ansible.posix:

    ansible-galaxy collection install ansible.posix
  2. Скачайте пакеты libnewt52 и newt52 из репозитория Альт:

    wget http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/x86_64/RPMS.classic/libnewt52-0.52.24-alt1.x86_64.rpm
    wget http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/x86_64/RPMS.classic/newt52-0.52.24-alt1.x86_64.rpm
  3. Установите пакеты libnewt52 и newt52:

    rpm -i libnewt52-0.52.24-alt1.x86_64.rpm
    rpm -i newt52-0.52.24-alt1.x86_64.rpm
  4. Расширьте системную переменную PATH, чтобы утилиты, расположенные в каталоге <setup_dir>/r-vision/common/bin, были доступны из любой директории без указания полного пути:

    export PATH="$PATH:<setup_dir>/r-vision/common/bin"

    Здесь:

    • <setup_dir> — каталог, в который будет установлена система. По умолчанию: /opt.

Добавление TLS-сертификатов для шифрования трафика ClickHouse в кластере Kubernetes

Данный этап необходимо выполнять, только если:

  • вы планируете устанавливать ClickHouse в кластере Kubernetes, а не в выделенном кластере;

  • необходимо включить шифрование трафика между системой и ClickHouse, используя для этого заранее созданные TLS-сертификаты.

Разместите следующие файлы на машине, на которой будет запущен установщик системы:

Имя файла Назначение

ca.crt

Корневой сертификат доверенного центра сертификации.

tls.crt

TLS-сертификат сервера.

tls.key

Приватный ключ TLS-сертификата сервера.

В поле SAN (Subject Alternative Name) генерируемых TLS-сертификатов необходимо указать следующие имена:

  • DNS: *.clickhouse.<namespace>.svc.cluster.local;

  • DNS: clickhouse.<namespace>.svc.cluster.local;

  • DNS: *.clickhouse-headless.<namespace>.svc.cluster.local;

  • DNS: clickhouse-headless.<namespace>.svc.cluster.local;

  • DNS: clickhouse.

Здесь:

  • <namespace> — название пространства имен, которое будет указано на этапе Kubernetes cluster namespace to install установки системы.

Абсолютные пути к вышеуказанным файлам потребуется ввести на этапе ClickHouse setup установки системы.

Загрузка пакетов экспертизы

Если у вас имеются пакеты элементов экспертизы с расширением .roc, загрузите их в каталог, где находится установщик. Вы сможете указать их:

Эти пакеты экспертизы будут импортированы в систему по завершении установки.

Получение дистрибутива

Скачайте архив с установочными файлами evo.platform_<version>.run и проверьте его контрольную сумму. Ссылка на дистрибутив предоставляется по запросу в службу поддержки по адресу support@rvision.ru.

# Получение дистрибутива.
curl -O https://files.rvision.ru/platform/<random_part>/evo.platform_<version>.run

# Получение контрольной суммы.
curl -O https://files.rvision.ru/platform/<random_part>/evo.platform_<version>.run.sha256

# Проверка контрольной суммы.
sha256sum -c evo.platform_<version>.run.sha256

# При успешной проверке контрольной суммы будет выведено следующее сообщение.
evo.platform_<version>.run: OK

# При нарушении контрольной суммы будет выведено следующее сообщение.
evo.platform_<version>.run: FAILED

При выявлении нарушения контрольной суммы выполнять установку недопустимо.

Необходимо убедиться, что скачивание run-файла дистрибутива было полностью завершено, и повторно проверить контрольную сумму.

При подтверждении нарушения контрольной суммы следует сообщить в техническую поддержку по адресу support@rvision.ru.

Создание дополнительных объектов StorageClass для local-path-provisioner

Если до начала установки системы в кластере не будет установлен провайдер хранилища (storage provider), то вместе с системой устанавливается провайдер local-path-provisioner. Он не поддерживает ограничение размера постоянных томов (Persistent Volumes), что может привести к неработоспособности узлов кластера в случае их переполнения.

Если вы будете использовать провайдер local-path-provisioner, то перед установкой системы рекомендуется создать дополнительные объекты StorageClass для ее компонентов. Для этого выполните следующие действия:

  1. Создайте логические диски для хранения данных компонентов. На каждом диске необходимо выделять объем дискового пространства не меньше, чем указано в столбце Минимальное свободное пространство, ГБ таблицы.

    Вы можете создать логические диски не для всех, а только для некоторых компонентов, однако в таком случае не исключается взаимное влияние на производительность компонентов, данные которых хранятся на одном и том же диске.
    В таблице приведен минимальный допустимый объем свободного пространства. Для точной оценки необходимого объема для вашей инсталляции обратитесь в службу поддержки по адресу support@rvision.ru.
    Компонент кластера Минимальное свободное пространство, ГБ

    ClickHouse

    30

    PostgreSQL

    8

    NATS Main

    60

    NATS Space

    30

    Prometheus

    15

    Loki

    30

    Остальные компоненты

    20

  2. Запустите установщик в режиме распаковки, выполнив следующую команду:

    ACTION_MODE=unpack ./evo.platform_<version>.run

    В результате распаковки чарт провайдера local-path-provisioner будет находиться в каталоге /opt/r-vision/infra/helm/local-path-provisioner.

  3. Установите чарт с настройками по умолчанию, выполнив следующую команду:

    /opt/r-vision/common/bin/helm upgrade -i local-path-provisioner /opt/r-vision/infra/helm/local-path-provisioner \
      --namespace local-path-provisioner \
      --create-namespace

    После установки в кластере будет доступен только один объект StorageClass типа cluster.local/local-path-provisioner.

  4. Чтобы добавить конфигурации для объектов StorageClass всех компонентов кластера, создайте файл патча. Для этого выполните команду ниже, отредактировав файл под параметры вашей инсталляции.

    В примере ниже приведен файл патча только для ClickHouse (local-path-clickhouse) и условного быстрого StorageClass (local-path-fast). Для остальных компонентов кластера, данные которых требуется хранить в томах отдельных объектов StorageClass, вам необходимо дополнить файл самостоятельно в соответствии с параметрами вашей инсталляции.
    cat << EOF > patch.yaml
    data:
      config.json: |
       {
          "storageClassConfigs": {
            "local-path": {
              "nodePathMap": [
                {
                  "node": "DEFAULT_PATH_FOR_NON_LISTED_NODES",
                  "paths": ["/opt/local-path-provisioner"]
                }
              ]
            },
            "local-path-clickhouse": {
              "nodePathMap": [
                {
                  "node": "DEFAULT_PATH_FOR_NON_LISTED_NODES",
                  "paths": ["/data/clickhouse"]
                }
              ]
            },
            "local-path-fast": {
              "nodePathMap": [
                {
                  "node": "test-worker01.k8s.dev.rvision.local",
                  "paths": ["/data/fast"]
                },
                {
                  "node": "test-worker02.k8s.dev.rvision.local",
                  "paths": ["/data/fast"]
                }
              ]
            }
          }
        }
    EOF
  5. Примените патч, выполнив следующую команду:

    kubectl patch configmap local-path-config -n local-path-provisioner --patch-file patch.yaml
  6. Создайте объекты StorageClass, выполнив следующую команду для каждого из них:

    cat << EOF | kubectl apply -f -
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <storage_class_name>
    provisioner: cluster.local/local-path-provisioner
    volumeBindingMode: WaitForFirstConsumer
    reclaimPolicy: Delete
    EOF

    Здесь:

    • <storage_class_name> — имя объекта StorageClass, например, local-path-clickhouse.

Вы можете вывести список созданных объектов StorageClass, выполнив следующую команду:

kubectl get sc

Была ли полезна эта страница?

Обратная связь