Подготовка к установке основного экземпляра системы
В данном разделе описаны подготовительные действия, которые необходимо выполнить перед запуском установщика основного экземпляра системы.
Подготовка состоит из следующих этапов:
-
Выбор машины для запуска установщика.
-
Настройка доступа к кластеру Kubernetes с машины, на которой запускается установщик системы.
-
Настройка доступа к системе по доменному имени.
-
Настройка SSH-доступа с машины, на которой запускается установщик системы, к worker-узлам кластера.
-
Применение дополнительных настроек, если узлы кластера работают под управлением ОС Альт Сервер или Альт СП Сервер.
-
Добавление TLS-сертификатов для шифрования трафика ClickHouse в кластере Kubernetes.
Данный этап необходимо выполнять, только если:
-
вы планируете устанавливать ClickHouse в кластере Kubernetes, а не в выделенном кластере;
-
необходимо включить шифрование трафика между системой и ClickHouse, используя для этого заранее созданные TLS-сертификаты.
-
-
Скачивание архива с файлами для установки и проверка его целостности.
-
Создание дополнительных объектов StorageClass, если в кластере будет использоваться провайдер хранилища (storage provider) local-path-provisioner.
Выбор машины для запуска установщика
Определите машину, на которой будет запущен установщик основного экземпляра системы. Установщик может запускаться как на одном из master-узлов кластера Kubernetes, так и на машине администратора, имеющей сетевой доступ к кластеру.
Настройка доступа к кластеру Kubernetes
На машине, с которой будет выполняться установка, должны быть соблюдены следующие требования:
-
Установлена утилита ansible.
-
В системных переменных окружения указан путь к файлу
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, входящими в пакет установки системы.
|
Доменное имя должно удовлетворять следующим требованиям:
Пример допустимого доменного имени: |
|
Чтобы настроить сетевой доступ к кластеру системы:
-
Запросите у сетевых инженеров IP-адрес, который будет зарезервирован для использования кластером системы. Убедитесь, что этот адрес доступен для обращений из внешних сетей.
-
Добавьте исключение в диспетчере DHCP, чтобы адрес не мог быть динамически назначен другим хостам в сети:
-
Откройте диспетчер DHCP. Например, это можно сделать, выполнив команду:
dhcpmgmt.msc -
Выберите область адресов, соответствующих подсети, в которую входит зарезервированный адрес.
-
Откройте контекстное меню пула адресов области и выберите опцию Диапазон исключения.
-
В открывшемся окне укажите зарезервированный адрес и нажмите на кнопку Добавить.
-
-
Добавьте A-запись в диспетчере DNS:
-
Откройте диспетчер DNS. Например, это можно сделать, выполнив команду:
dnsmgmt.msc -
Выберите необходимую зону прямого просмотра.
-
Откройте контекстное меню зоны и выберите опцию Создать узел (А или АААА).
-
В открывшемся окне укажите доменное имя и IP-адрес, который будет с ним ассоциирован.
-
Чтобы обеспечить возможность преобразования IP-адреса в доменное имя, установите флажок Создать соответствующую PTR-запись.
-
Нажмите на кнопку Добавить узел.
-
-
Если требуется, добавьте CNAME-запись для обращения к специфическим службам кластера, например:
grafana.rvision.company.local
Чтобы добавить CNAME-запись:
-
Откройте контекстное меню той же зоны, в которой создана A-запись, и выберите опцию Создать псевдоним (CNAME).
-
В открывшемся окне укажите псевдоним и доменное имя системы.
-
При необходимости измените время существования (TTL) псевдонима.
-
-
Убедитесь, что преобразование доменного имени в IP-адрес и обратно выполняется успешно. Для этого:
-
Откройте терминал на вашем сервере.
-
Выполните команды:
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-узле:
|
Для настройки SSH-доступа выполните следующие действия на каждом worker-узле кластера:
-
Пользователю, от имени которого будет установлен кластер, необходимо выдать права суперпользователя (root). Для этого добавьте следующую строку в файл
/etc/sudoers:<user> ALL=(ALL:ALL) NOPASSWD: ALLЗдесь:
-
<user>— пользователь, от имени которого будет установлен кластер.
-
-
Настройте SSH-доступ по паролю или по ключу:
-
Если планируется доступ по паролю:
-
Установите пакет sshpass:
-
РЕД ОС
-
Альт Сервер, Альт СП Сервер, Astra Linux
sudo dnf install sshpasssudo apt-get install sshpass -
-
Проверьте возможность подключения к узлу по SSH:
ssh <user>@<fqdn>Здесь:
-
<user>— пользователь, от имени которого будет установлен кластер. -
<fqdn>— полное доменное имя (FQDN) текущего узла.Чтобы узнать FQDN текущего узла, выполните команду:
hostname -f
-
-
-
Если планируется доступ по ключу:
-
Проверьте возможность подключения к узлу по SSH:
ssh <user>@<fqdn>Здесь:
-
<user>— пользователь, от имени которого будет установлен кластер. -
<fqdn>— полное доменное имя (FQDN) текущего узла.Чтобы узнать FQDN текущего узла, выполните команду:
hostname -f
-
-
Если подключение по SSH-ключу не настроено, сгенерируйте ключи и добавьте открытый ключ на узел:
ssh-keygen ssh-copy-id <user>@<fqdn>Здесь:
-
<user>— пользователь, от имени которого будет установлен кластер. -
<fqdn>— полное доменное имя (FQDN) текущего узла.
-
-
-
Дополнительные настройки для Альт Сервер и Альт СП Сервер
Если узлы кластера работают под управлением ОС Альт Сервер или Альт СП Сервер, выполните следующие действия на master-узле:
-
Установите коллекцию ansible.posix:
ansible-galaxy collection install ansible.posix -
Скачайте пакеты 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 -
Установите пакеты libnewt52 и newt52:
rpm -i libnewt52-0.52.24-alt1.x86_64.rpm rpm -i newt52-0.52.24-alt1.x86_64.rpm -
Расширьте системную переменную
PATH, чтобы утилиты, расположенные в каталоге<setup_dir>/r-vision/common/bin, были доступны из любой директории без указания полного пути:export PATH="$PATH:<setup_dir>/r-vision/common/bin"Здесь:
-
<setup_dir>— каталог, в который будет установлена система. По умолчанию:/opt.
-
Добавление TLS-сертификатов для шифрования трафика ClickHouse в кластере Kubernetes
|
Данный этап необходимо выполнять, только если:
|
Разместите следующие файлы на машине, на которой будет запущен установщик системы:
| Имя файла | Назначение |
|---|---|
|
Корневой сертификат доверенного центра сертификации. |
|
TLS-сертификат сервера. |
|
Приватный ключ TLS-сертификата сервера. |
|
В поле SAN (Subject Alternative Name) генерируемых TLS-сертификатов необходимо указать следующие имена:
Здесь:
Абсолютные пути к вышеуказанным файлам потребуется ввести на этапе ClickHouse setup установки системы. |
Загрузка пакетов экспертизы
Если у вас имеются пакеты элементов экспертизы с расширением .roc, загрузите их в каталог, где находится установщик. Вы сможете указать их:
-
в переменной
SELECTED_EXPERTISEпри неинтерактивной установке.
Эти пакеты экспертизы будут импортированы в систему по завершении установки.
Получение дистрибутива
Скачайте архив с установочными файлами 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 для ее компонентов. Для этого выполните следующие действия:
-
Создайте логические диски для хранения данных компонентов. На каждом диске необходимо выделять объем дискового пространства не меньше, чем указано в столбце Минимальное свободное пространство, ГБ таблицы.
Вы можете создать логические диски не для всех, а только для некоторых компонентов, однако в таком случае не исключается взаимное влияние на производительность компонентов, данные которых хранятся на одном и том же диске. В таблице приведен минимальный допустимый объем свободного пространства. Для точной оценки необходимого объема для вашей инсталляции обратитесь в службу поддержки по адресу support@rvision.ru. Компонент кластера Минимальное свободное пространство, ГБ ClickHouse
30
PostgreSQL
8
NATS Main
60
NATS Space
30
Prometheus
15
Loki
30
Остальные компоненты
20
-
Запустите установщик в режиме распаковки, выполнив следующую команду:
ACTION_MODE=unpack ./evo.platform_<version>.runВ результате распаковки чарт провайдера local-path-provisioner будет находиться в каталоге
/opt/r-vision/infra/helm/local-path-provisioner. -
Установите чарт с настройками по умолчанию, выполнив следующую команду:
/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. -
Чтобы добавить конфигурации для объектов 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 -
Примените патч, выполнив следующую команду:
kubectl patch configmap local-path-config -n local-path-provisioner --patch-file patch.yaml -
Создайте объекты 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, выполнив следующую команду:
|
Была ли полезна эта страница?