В этом разделе находятся инструкции, описывающие особенности установки ресурсов.
1. Установка портала Cloudlink
1.1. Поддерживаемые операционные системы
Manager-хост — хост, с которого производится установка портала Cloudlink.
Поддерживаемые ОС с минимальными версиями:
-
Ubuntu 22.04
-
Alma Linux 9.3
-
Windows (WSL2) 10
-
MacOS 11
Target-хост — хост на котором будет запущен портал Cloudlink.
Поддерживаемые ОС с минимальными версиями:
-
Alma Linux 9.3
-
Astra Linux (Orel) 2.12.45
-
Ubuntu 22.04
1.2. Минимальные системные требования
Требования к Single instance
| Тип хоста | CPU | RAM | Диск SSD (GB) |
|---|---|---|---|
Manager |
4 |
8 |
64 |
Target |
16 |
72 |
600 |
Требования к High Availability (HA)
| Тип хоста | CPU | RAM | Диск SSD (GB) |
|---|---|---|---|
Manager |
4 |
8 |
64 |
Server (x3) |
2 |
4 |
64 |
Agent (x3) |
16 |
72 |
600 |
LB(x2) |
2 |
4 |
32 |
1.3. Настройка DNS-организации
В DNS организации необходимо выделить зону, в рамках которой будут размещаться сервисы портала, например: sample.box
Далее можно либо завести wildcard запись, которая будет указывать на target-хост, куда устанавливается портал (например *.sample.box и *.nexus.sample.box), либо завести каждую запись отдельно.
Для Single instance все записи должны указывать на IP-адрес target-сервера.
Для High Availability все записи должны указывать на IP-адрес VIP (указывается в файле inventories/box/hosts, см. документацию ниже).
Список DNS записей
account-manager.sample.box api.sample.box auditor.sample.box auth.sample.box awx.sample.box budget.sample.box calculator.sample.box capacity-manager-ui.sample.box checker.sample.box checklist-service.sample.box cl-dictionary-manager.sample.box cl-longhorn-basic.sample.box cl-notification-gateway.sample.box cl-notification-service.sample.box cl-oauth-proxy.sample.box cl-partners-admin.sample.box cl-partners-auth.sample.box cl-spectre.sample.box cl-velero.sample.box clickhouse-etl.sample.box cloud-management.sample.box control.sample.box feed-service.sample.box git.sample.box grafana.sample.box iam.sample.box k3s-ui.sample.box keycloak.sample.box kong-admin.sample.box kong.sample.box konga.sample.box longhorn.sample.box lucrum-back.sample.box lucrum-ui.sample.box microservice-catalog.sample.box minio.sample.box mock-api.sample.box netbox.sample.box nexus.sample.box orchestrator.sample.box order-manager.sample.box portal-manager.sample.box portal.sample.box product-catalog.sample.box product-mover.sample.box products-docker-private.nexus.sample.box products-docker.nexus.sample.box rabbitmq.sample.box references.sample.box restriction-service.sample.box selector-allocator.sample.box selector-cp.sample.box selector-inventory.sample.box selector-worker.sample.box spark.sample.box starvault.sample.box state-service-selector.sample.box state-service.sample.box superset.sample.box swagger-ui.sample.box swagger.sample.box tariff-manager.sample.box unit-manager.sample.box virt-exporter.sample.box
|
Проверьте разрешения следующих доменных имён с помощью nslookup перед запуском развёртывания (нужно указать доменные имена в явном виде):
|
1.3.2. Требования для Target
-
Python не ниже 3.9
-
Доступ к репозиториям ОС. Его можно организовать разными способами: прямой доступ в интернет, прокси, установка зависимостей в ручном режиме и прочее.
-
Необходимо включить IPv6 на Target-хосте (без доступа к IPv6 сборка портала может сломаться)
1.3.3. Требования по Firewall, SELinux
Для работы в режиме High Availability на target-хостах рекомендуется отключить Selinux и Firewall. Эта рекомендация распространяется на работу в режиме Single Instance.
1.3.4. Требования к портам
Для работы в режиме High Availability должна быть следующая сетевая доступность:
| Протокол | Порт | Source | Destination | Описание |
|---|---|---|---|---|
TCP |
6443 |
Все ноды |
Все ноды |
k3s |
TCP |
2379-2380 |
Server |
Server |
etcd |
TCP |
10250 |
Все ноды |
Все ноды |
kubelet metrics |
UDP |
8472 |
Все ноды |
Все ноды |
flannel |
TCP |
80,443 |
LB |
haproxy |
1.4. Установка образа cloudlink-manager и настройка config
| Команды выполняются на manager-хосте. |
-
Скачайте дистрибутив в архиве с расширением
tar.gzи распакуйте его. -
В случае установки с помощью manage-tool пропустите этот шаг, иначе:
-
Установите образ
deploy-manager, который находится в распакованном архиве. Пример установки версии 1.5.0:docker load < deploy-manager-1.5.0.tar -
(Опционально) Проверьте образ на доступность:
docker imagesПример ответа в случае, если образ доступен:
REPOSITORY TAG IMAGE ID CREATED SIZE deploy-manager 1.5.0 35ca14ec55b4 2 weeks ago 1.01GB
-
-
Скопируйте пример inventory:
cp -R inventories/sample inventories/boxИзмените данные подключения к порталу в файле hosts, расположенном в каталоге inventories/box/. Описание настроек находится в комментариях к этому файлу.
-
Создайте SSH-ключ и скопируйте его на target-хост(ы):
-
Создайте ключ, если он отсутствует:
ssh-keygen -
Скопируйте SSH-ключ на target-хост:
ssh-copy-id [id пользователя] # Команда с примером id пользователя -- ssh-copy-id root@192.168.0.1Если авторизация по паролю на сервере запрещена добавьте ключ вручную:
-
Выведите содержимое публичного ключа:
cat ~/.ssh/id_rsa.pub -
Подключитесь на target хост(ы) с помощью доступных вам вариантов (ssh, vnc, novnc и т.п.).
-
Добавьте содержимое публичного ключа из первого шага:
echo 'ssh-rsa AAAAB3NzaC1yc ... ' >> ~/.ssh/authorized_keys
-
-
-
Заполните файл hosts.
Файл должен находиться по пути inventories/box/hosts.
Вид файла hosts при установке Single instance
[k3s_server] astra01.sample.box ansible_host=192.168.0.1 [k3s_agent] [k3s_lb] [k3s_lb_vip] [k3s:children] k3s_server k3s_agent k3s_lb [all:vars] ansible_user=astra ansible_ssh_private_key_file=~/.ssh/cloudlink/dev domain_int=astra01.sample.box domain_ext=astra01.sample.box
-
ansible_user— пользователь, под которым вы производите подключение к target хосту — дополнительный ключ. -
ansible_ssh_private_key_file— путь до закрытого ключа на manager хосте — дополнительный ключ. -
domain_int— внутренне доменное имя — обязательный ключ. -
domain_ext— внешнее доменное имя (если не предполагается использование внешнего доменного имени, должно быть указано такое же значение, как и в domain_int) — обязательный ключ.
Вид файла hosts при установке High Availability instance
[k3s_server] astra-server01.sample.box ansible_host=192.168.0.1 astra-server02.sample.box ansible_host=192.168.0.2 astra-server03.sample.box ansible_host=192.168.0.3 ansible_user=almalinux [k3s_agent] astra-client01.sample.box ansible_host=192.168.0.4 astra-client02.sample.box ansible_host=192.168.0.5 astra-client03.sample.box ansible_host=192.168.0.6 [k3s_lb] astra-lb01.sample.box ansible_host=192.168.0.7 astra-lb02.sample.box ansible_host=192.168.0.8 [k3s_lb_vip] astra-lb-vip.sample.box ansible_host=192.168.0.100 [k3s:children] k3s_server k3s_agent k3s_lb [all:vars] ansible_user=astra ansible_ssh_private_key_file=~/.ssh/cloudlink/dev domain_int=astra01.sample.box domain_ext=astra01.sample.box
-
В случае если пользователь отличается от указанного в
ansible_user, можно передать имя пользователя в строке с описанием хоста. -
Для группы хостов k3s_lb_vip указывается IP-адрес на данный момент не существующего хоста. Требования:
-
Данный IP-адрес не должен находиться в пуле выдачи DHCP сервера, либо должен быть зарезервирован
-
Данный IP-адрес должен находиться в одной и той же подсети, что и target хост(ы).
-
Данный IP-адрес не должен использоваться в сети каким либо другим узлом.
-
-
-
Измените настройки в файле config.yml, расположенном к каталоге inventories/box/group_vars/k3s/config.yml.
1.4.1. Настройки файла config.yml
В файле config.yml находится описание полей, которые нужно заполнить для выбранной/выбранных платформ виртуализации. Для этого нужно раскомментировать строки платформы виртуализации и подставить значения. Заполнить файл config.yml можно как вручную, так и через пользовательский интерфейс, запустив команду:
manage-tool --ui
Поддерживаются следующие типы платформ: zVirt, vSphere, Openstack, vCloud, Hyper V, Yandex Сloud.
Название этих платформ нужно указать в параметре type.
Типы платформ должны быть строго выбраны из списка: zvirt, vsphere, openstack, vcloud, hyper_v, yandex_cloud.
Параметр type чувствителен к регистру символов, поэтому важно указать названия платформ корректно.
|
Пример config.yml для zVirt
platforms:
zvirt:
type: zvirt
label: zVirt
scheme: https
host: engine.cloudlink.local
port: 443
username: 'user@internal'
password: '*******'
params:
weight: 100
cluster_id: d90193d6-5c5a-11ee-bd56-00163e10167d
cluster_name: Default
storage_name: Main_VM
| Параметр | Значение | Описание |
|---|---|---|
type |
zvirt |
Тип платформы. Зависит от того, какую платформу вы устанавливаете.
Могут быть следующие типы: |
label |
zVirt |
Человеко читаемое название платформы. В этом параметре можно указать любое удобное вам название "Zvirt-1", "Zvirt-test" и т.д |
scheme |
https |
Схема для доступа к zVirt API. Протокол https является протоколом по умолчанию. Рекомендуется использовать именно этот протокол. |
host port |
Например: |
IP-адрес zVirt API. |
username password |
Например, |
Учётные данные для подключения. Задайте логин и пароль для платформы |
params |
weight |
Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке.
Например, |
cluster_id |
Скопируйте ID кластера в интерфейсе Zvirt. Для этого: 1. Перейдите в раздел Compute → Clusters. 2. Нажмите на название кластера. Откроется страница с подробной информацией. 3. Скопируйте Cluster ID из соответствующего поля. Например, |
|
cluster_name |
Введите название кластера. Например, |
|
storage_name |
Скопируйте название хранилища в интерфейсе zVirt. Для этого перейдите в раздел Storage → Domains. |
Пример config.yml для vSphere
platforms:
vsphere:
type: vsphere
version: 6.7
label: vSphere
scheme: https
host: 'vpshere.cloudlink.local'
port: 443
username: 'admin'
password: '******'
params:
weight: 100
cluster_name: CL01
domain_id: domain-c8
datastore_id: datastore-16
tenant_prefix: vms/cloudlink
template_inventory_path: templates/cloudlink
vsphere:
type: vsphere
version: 7.0
label: vSphere
scheme: https
host: '10.0.0.100'
port: '443'
username: 'administrator@vsphere.local'
password: 'P@ssw0rd'
params:
weight: 100
cluster_name: CL01
domain_id: domain-c8
datastore_id: datastore-16
tenant_prefix: cloud
template_inventory_path: library/templates
| Параметр | Значение | Описание |
|---|---|---|
type |
vsphere |
Тип платформы. Зависит от того, какую платформу вы устанавливаете.
Могут быть следующие типы: |
version |
6.7 или 7.0 |
Данные параметр указывает версию для платформы VMware vSphere. |
label |
vSphere |
Человеко читаемое название платформы. В этом параметре можно указать любое удобное вам название "vSphere-1", "vSphere-test" и т.д |
scheme |
https |
Схема для доступа к vSphere API. Протокол https является протоколом по умолчанию. Рекомендуется использовать именно этот протокол. |
host |
Например: |
IP-адрес или FQDN vSphere API. |
port |
443 |
Номер порта для подключения к интерфейсу API. По умолчанию используется 443 — стандартный порт протокола https. |
username password |
Например, |
Учётные данные для подключения. Задайте логин и пароль для платформы. |
params |
weight |
Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке.
Например, |
cluster_name |
Скопируйте имя кластера в интерфейсе vSphere Client. Для этого: 1. Перейдите в раздел Hosts and Clusters → Clusters. 2. Скопируйте Cluster name из соответствующего поля. |
|
domain_id |
Введите название кластера. Для этого:
1. Перейдите в раздел Hosts and Clusters в интерфейсе vSphere Client.
2. Нажмите по необходимому кластеру и скопируйте из URL значение параметра Например, URL - https://vc.cloudlink.local/ui/app/cluster;nav=h/urn:vmomi:ClusterComputeResource:domain-c7005:111111/summary значение параметра |
|
datastore_id |
Введите идентификатор хранилища (datastore id) в интерфейсе vSphere Client. Для этого:
1. Перейдите в раздел Storage.
2. Нажмите по необходимому хранилищу и скопируйте из URL значение параметра |
|
tenant_prefix |
Укажите имя директории (Folder), в которой будут создаваться директории Проектов. |
|
template_inventory |
Укажите имя директории (Folder), в которой находятся шаблоны для развертывания ВМ. По умолчанию директория для версии VMware vSphere 6.7 templates/cloudlink По умолчанию директория для версии VMware vSphere 7.0 library/templates |
Пример config.yml для Openstack
openstack:
type: openstack
label: OpenStack
scheme: https
host: '10.0.0.100'
port: '5000'
username: 'admin'
password: 'password'
params:
weight: 102
region: regionOne
domain_name: Default
tenant_prefix: box
| Параметр | Значение | Описание |
|---|---|---|
type |
openstack |
Тип платформы. Зависит от того, какую платформу вы устанавливаете. |
label |
OpenStack |
Человеко читаемое название платформы. В этом параметре можно указать любое удобное вам название "OpenStack-1", "OpenStack-test" и т.д |
scheme |
https |
Протокол https является протоколом по умолчанию. Рекомендуется использовать именно этот протокол. |
host |
Например: |
IP-адрес или FQDN хоста. |
port |
5000 |
Номер порта для подключения к интерфейсу API. По умолчанию используется 5000. |
username password |
Например, |
Учётные данные для подключения. Задайте логин и пароль для платформы |
params |
weight |
Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке.
Например, |
region |
Укажите название региона. |
|
domain_name |
Укажите название домена OpenStack. |
|
tenant_prefix |
Человеко читаемый префикс. Подставляется перед именем проекта OpenStack при создании заказа в проекте Cloudlink. |
Дополнительные инструкции:
Поиск ID кластера для zVirt
-
Получение cluster_id:
-
В интерфейсе zVirt перейдите в раздел Compute → Clusters.
-
Нажмите на название кластера. Откроется страница с подробной информацией.
-
Скопируйте Cluster ID из соответствующего поля.
-
-
Получение storage_name:
-
В интерфейсе zVirt перейдите в раздел Storage → Domains.
-
Скопируйте название хранилища.
-
Поиск ID кластера для Vmware
-
Получение cluster_name:
-
Перейдите в раздел Hosts and Clusters → Clusters.
-
Скопируйте Cluster name из соответствующего поля.
-
-
Получение domain_id:
-
Перейдите в раздел Hosts and Clusters в интерфейсе vSphere Client.
-
Нажмите по необходимому кластеру и скопируйте из URL значение параметра
ClusterComputeResource.
-
-
Получение datastore_id:
-
Перейдите в раздел Storage.
-
Нажмите по необходимому хранилищу и скопируйте из URL значение параметра
Datastore.
-
Поиск ID кластера для RedVirt
-
Авторизуйтесь на платформе RedVirt.
-
Перейдите на портал администрирования — Administration Portal.
-
В интерфейсе платформы выберите раздел Compute → Clusters.
-
Нажмите на название кластера. Вы попадете на страницу расширенной информации о выбранном кластере.
-
Скопируйте Cluster ID из соответствующего поля. Это значение нужно вставить в файл config.yml.
-
Получение storage_name:
-
В интерфейсе RedVirt перейдите в раздел Storage → Domains.
-
Скопируйте название подходящего хранилища (хранилище имеет тип "Master Data").
-
Поиск ID кластера для OpenStack
-
Авторизуйтесь на платформе OpenStack.
-
В интерфейсе платформы выберите раздел Compute → Instances.
-
Нажмите на название нужной виртуальной машины. Вы попадете на страницу расширенной информации о ВМ.
-
Скопируйте значение из строки ID. Это значение нужно вставить в файл config.yml.
1.4.2. Запуск развертывания
-
Если используются параметры по умолчанию, выполните команду:
./PATH/manage-tool --install -
Если используются другие пути до инвентаря и ssh-ключа, выполните команду:
./PATH/manage-tool.sh --inventory inventories/myinventory/hosts --ssh-private-key ~/.ssh/mykeys/dev --install
|
Подробно ознакомиться с утилитой manage-tool.sh можно с помощью команды |
1.4.3. Альтернативный вариант запуска развертывания
Команда для запуска docker контейнера (был добавлен в 1 шаге).
Перед запуском docker-контейнера нужно создать папку ~/.kube/cloudlink, так как эта директория монтируется в контейнер.
|
docker run -it --network host --rm \
-v /$HOME/portal-box:/apps \
-v ~/.ssh/id_rsa:/root/.ssh/id_rsa \
-v ~/.kube/cloudlink:/root/.kube/cloudlink \
deploy-manager-1.5.0 \
-i inventories/box/hosts \
-u $USER \
portal_box.yml \
--ask-vault-pass
Параметры команды:
-v /$HOME/portal-box:/apps — маппинг директории в которой находится разархивированный архив. Cлева указан путь до директории на manager хосте, справа указан путь до директория в образе docker - НЕИЗМЕНЯЕМАЯ, разделителем является ':')
-v ~/.ssh/id_rsa:/root/.ssh/id_rsa — маппинг файла с закрытым ключом.
-v ~/.kube/cloudlink:/root/.kube/cloudlink — маппинг файл, в котором после будет находится kubeconfig для подключения к кластеру.
deploy-manager-1.5.0 — название docker-образа.
-i inventories/box/hosts — путь до файла inventory.
-u $USER — пользователь, с помощью которого будет производиться подключение на удаленный хост.
portal_box.yml — файл, находящийся в portal-box директории.
--ask-vault-pass — команда для запроса пароля в интерактивном режиме.
После запуска docker-контейнера, введите пароль для установки:
Vault password:
| Данные для Vault password находятся в repo. |
1.5. Настройка после установки портала
|
Ниже находятся примеры ссылок с доменом sample.box. Замените его на тот, что указан в переменной domain_int при настройке файла inventories/box/hosts. |
-
После выполнения playbook будет выведена информация о подключении к Vault, k3s и порталу Cloudlink. Сохраните учётные данные, так как они понадобятся для дальнейшей настройки
~/.kube/cloudlink. В этой директории будет созданный kubernetes config файл.Также информацию можно вывести повторно, для этого необходимо выполнить playbook с тегом info:
docker run -it --network host --rm \ -v /$HOME/portal-box:/apps \ -v ~/.ssh/id_rsa:/root/.ssh/id_rsa \ -v ~/.kube/cloudlink:/root/.kube/cloudlink \ deploy-manager-1.5.0 \ -i inventories/box/hosts \ -u $USER \ portal_box.yml \ --ask-vault-pass \ --tags info -
Перейдите по адресу, указанному в результатах выполнения задачи Portal admin credentials.
-
Скачайте корневой сертификат сайта и добавьте его в доверенные на вашем ПК. В случае, если сертификат не добавлен в доверенные, могут возникнуть проблемы с открытием портала Cloudlink.
-
Настройте сервис NetBox (IPAM), расположенный по адресу https://netbox.sample.box/.
Нельзя изменять созданные на этапе установки объекты NetBox, такие как site, tenant, vrf. Если необходимо использовать собственные объекты их необходимо создать после установки, не изменяя уже существующие.
Для этого:
-
Получите учётные данные (adminUsername и adminPassword) из Vault по адресу https://vault.sample.box/ui/vault/secrets/deployment/show/netbox
-
В интерфейсе NetBox перейдите на вкладку слева IPAM → VLANs → VLANs.
-
Создайте новый VLAN, нажав Add и заполните параметры:
-
ID — цифровой идентификатор VLAN в диапазоне от 1 до 4094.
-
Name — символьное имя VLAN,содержит только символы: "A-Z","a-z", "0-9", "_", "-", ":", "."
-
Status — рабочее состояние VLAN. Имеет значения:
-
Active — активно,
-
Reserved — зарезервировано,
-
Deprecated — устарело.
-
-
Tenant — представляет собой группу ресурсов, используемую в административных целях.
-
Assignment — описывает группу VLAN или сайт, к которому привязана VLAN.
-
Custom virt subnet uuid — настраиваемый идентификатор виртуальной подсети. Его можно получить запросом API (подробнее в примерах ниже).
Пример создания VLAN для vSphere
ID = 1 # Имя ресурса DistributedVirtualPortgroup Name = DPortGroup Status = Active Tenant = BOX Site = COD-A # Идентификатор ресурса DistributedVirtualPortgroup, например: # urn:urn:vmomi:DistributedVirtualPortgroup:dvportgroup-3027:a6ba13a8-a1a8-4e9f-963a-7418f86ff77c/summary Custom virt subnet uuid = dvportgroup-3027Для получения Custom virt subnet uuid:
-
В интерфейсе vSphere Client перейдите на вкладку Networks.
-
Нажмите на название нужной группы портов (PortGroup).
-
В строке URL скопируйте uuid PortGroup (общий вид uuid —
dvportgroup-1111).
Пример создания VLAN для Zvirt
ID = 1 # Имя ресурса vNIC Profile Name = ovirtmgmt Status = Active Tenant = BOX Site = COD-A # Идентификатор vNIC Profile, который можно получить запросом к api (значение "id" нужной сети) Custom virt subnet uuid = b05e2b08-2ecc-4a90-b620-569d47f8e709Для получения uuid на ОС Linux:
-
Введите в Terminal:
$ curl https://АДРЕС-ZVIRT-ENGINE/ovirt-engine/api/vnicprofiles -u 'ЛОГИН@internal:ПАРОЛЬ' -k -
Из полученного ответа скопируйте значение id, как в примере на изображении
-
Укажите данные в интерфейсе Netbox.
-
-
-
Создайте подсеть, в которой будут находиться виртуальные машины. Для этого в интерфейсе NetBox перейдите на вкладку слева IPAM → Prefixes → Prefixes.
-
Зарезервируйте занятые IP-адреса в подсети:
-
(Не рекомендуется для нескольких IP по порядку) В интерфейсе NetBox перейдите на вкладку слева IPAM → IP Addresses → IP Addresses https://netbox.sample.box/ipam/ip-addresses/ и зарезервируйте IP-адреса.
В примере показана резервация IP-адреса сетевого шлюза:
Address = 10.15.8.1/24 Status = Reserved VRF = DEV_DEV (dev_dev) Description = Gateway Tenant = BOX -
(Рекомендуется для нескольких IP по порядку) В интерфейсе NetBox перейдите на вкладку слева IPAM → IP Addresses → IP Ranges https://netbox.sample.box/ipam/ip-ranges/ и зарезервируйте IP-адреса.
Для примера взят диапазон первых 123 IP-адресов в подсети 10.15.8.0.24
VRF = DEV_DEV (dev_dev) Start address = 10.15.8.1/24 End address = 10.15.8.123/24 Status = Reserved Description = [vSphere] Reserved Tenant = BOX
-
-
-
Зачислите деньги для организации через контрольную панель https://control.sample.box/. Для этого:
-
Авторизуйтесь под пользователем admin-box.
-
Перейдите в раздел Биллинг → Пополнение счета.
-
Выберите организацию, счет отправителя и получателя, сумму, описание.
-
Нажмите Подтвердить.
-
Перейдите в орг.структуру портала https://portal.sample.box/management/org-structure.
-
Нажмите на ⋮ напротив названия организации и выберите Перевести.
-
Выберите счет получателя, сумму, укажите описание.
-
Нажмите Перевести.
-
1.6. Обновление портала
Вы можете обновиться до целевой версии портала с любой версии, начиная с указанной минимальной версии и заканчивая той, что предшествует целевой. Подробнее о минимальной и целевой версиях портала в таблице ниже.
Пример: До версии 1.23 можно обновиться с версий 1.6 - 1.22.
| Версия портала | Минимальная версия |
|---|---|
1.1 - 1.6 |
1.0 |
1.7 - 1.24 |
1.6 |
1.25 - 1.26 |
1.21 |
1.27 и новее |
1.25 |
Чтобы обновить портал, выполните следующие действия:
-
Разархивируйте новую версию дистрибутива в отдельную директорию.
-
Скопируйте inventory/sample в inventories/box (аналогично процессу установки с нуля). Это будет новый inventory для обновленного портала.
-
Перенесите значения из старых файлов config.yml и hosts в соответствующие разделы нового inventory.
Не копируйте старые файлы целиком: структура нового файла конфигурации могла измениться, поэтому совместимость не гарантируется.
-
Продолжите процесс обновления портала после заполнения нового inventory значениями. Процесс аналогичен установке портала с нуля.
-
Выполните действия после обновления, если они есть. При обновлении через несколько версий (например, с 1.10 до 1.12), выполняйте действия для каждой промежуточной версии по порядку (1.10, 1.11, 1.12 и т.д.). Если действий для какой-то версии нет, пропустите её.
1.7. Установка патчей для портала
Для установки патча выполните следующие шаги:
-
Скопируйте архив с патчем.
-
Выполните команду, где
PATH_TO_PATCH_ARCHIEVE— путь до файла архива:manage-tool --update-services PATH_TO_PATCH_ARCHIEVE -
После сообщения об успешном обновлении запустите команду развертывания, чтобы применить обновления.
1.8. Миграция данных между разными инсталляциями
Установщик Cloudlink поддерживает миграцию данных между различными инсталляциями, начиная с версии 1.9.
| Миграцию рекомендуется проводить между одинаковыми версиями портала. |
Для выполнения миграции:
-
Разверните инсталляции source и destination, используя стандартный процесс установки.
-
Укажите путь к
kubeconfigдля обеих инсталляций (source и destination) в файле migration.yml. -
Запустите playbook с помощью команды:
ansible-playbook migration.yml -vvЭто действие деструктивно для destination-кластера — все его объекты будут заменены данными из source-кластера.
-
Разверните destination-кластер повторно, используя стандартный процесс установки.
1.9. Действия после обновления
1.9.1. Описание для подготовки к выполнению команд
Для выполнения обновления после обновления версии, требуется:
-
Подключение к хостам по SSH. Для этого:
ssh root@${IP/DNS} # или команда: ssh ${USERNAME}@${IP/DNS} sudo su -
Root-права
-
Получение списка подов (имен):
kubectl get pods -n portal-box # или команда: # kubectl get pods -n portal-box | grep ${SERVICE_NAME}-
$SERVICE_NAME— название сервиса (к примеру "lucrum-back", "auditor" и т.д.)
-
После получения имени пода выполните команду:
kubectl -n portal-box exec -it ${POD_NAME\} -- ${COMMAND}
1.9.2. Release 1.15
| Сервис | Команда | kubectl | Описание и комментарии |
|---|---|---|---|
order-manager |
Запуск Rails консоли:
Выполнение команды внутри Rails консоли:
|
|
Отключение резервации для всех платформ. Команду необходимо выполнять только после установка с нуля, в иных случаях не требуется. |
1.9.3. Release 1.20
| Сервис | Команда | kubectl | Описание и комментарии |
|---|---|---|---|
order-manager |
|
|
Выполнить задачу по добавлении информации о существующих заказах. Команду нужно выполнять в main поде, если производится обновление портала. В иных случаях не требуется. |
order-manager |
|
|
Выполнить задачу по добавлении информации о существующих заказах. Команду нужно выполнять в main поде, если производится обновление портала. В иных случаях не требуется. |
calculator |
|
|
Выполнить задачу, она пересчитывает поврежденные ручным удалением объекты. # Команду нужно выполнять, если производится обновление портала. В иных случаях не требуется.# |
calculator |
|
|
Выполнить задачу, она пересчитывает пропущенные/не посчитанные заказы. Команду нужно выполнять, если производится обновление портала. В иных случаях не требуется. |
1.9.4. Release 1.22
| Сервис | Команда | kubectl | Описание и комментарии |
|---|---|---|---|
netbox |
Изменились теги для префиксов (Prefixes) сетей в Netbox для zVirt и redvirt.
Новые теги основанные на |
2. Установка Nova Universe для Cloudlink
Перед тем, как заказать Nova Container Platform в Cloudlink, нужно развернуть контейнер на сервере управления Nova Universe.
Сервер управления Nova Universe поставляется в виде образа виртуальной машины в формате qcow2 со следующим набором компонентов:
-
хранилище образов контейнеров;
-
сервис доставки ПО;
-
сервис настройки ПО.
Благодаря готовым компонентам для установки кластеров Nova Container Platform не требуется самостоятельное зеркалирование образов контейнеров и настройка дополнительных артефактов.
2.1. Технические требования к серверу управления Nova Universe
2.1.1. Требования к среде размещения
Для Nova Universe рекомендуются использовать платформы виртуализации zVirt и VMware vSphere.
Формат образа виртуальной машины qcow2 является нативным для zVirt.
Для размещения сервера управления в vSphere, следует провести дополнительные действия. Подробнее о них — в разделе создания виртуальной машины из образа в среде виртуализации VMware vSphere.
2.1.2. Требования к ресурсам
Для запуска сервера управления Nova Universe необходимо следующее количество ресурсов:
| vCPU | RAM (GB) | Диск SSD (GB) | IOPS |
|---|---|---|---|
4 |
16 |
128 |
300+ |
| Компоненты сервера управления Nova Universe чувствительны к производительности диска, поэтому рекомендуется использовать более быстрое хранилище. |
2.1.3. Требования к настройке сети
Сервер управления Nova Universe поддерживает использование IP-адреса, настроенного как с помощью DHCP, так и заданного статически. Рекомендуется размещать сервер управления в отдельной от кластеров Kubernetes сети.
|
2.1.4. Требования к системе разрешения имен DNS
Для работы сервера управления Nova Universe нужно создать следующие DNS-записи:
| Компонент | Пример записи | Описание |
|---|---|---|
Сервер управления Nova Universe |
universe.имя.домена |
DNS-запись типа A разрешает адрес сервера управления |
Службы Nova Universe |
*.universe.имя.домена |
DNS-запись типа A или CNAME разрешает адрес сервера управления при запросе его поддоменов, например, test.universe.имя.домена, hub.universe.имя.домена и т.д. |
Для корректной работы сервера управления вам необходимо также настроить DNS-сервер в его сетевой конфигурации.
2.1.5. Требования к межсетевому экранированию
Если сервер управления Nova Universe размещается в отдельной маршрутизируемой сети, то для организации доступа к ресурсам сервера управления из сетей узлов Kubernetes, нужно настроить следующие разрешающие правила:
| Ресурс | DNS-имя | Порт | IP-адрес |
|---|---|---|---|
Хранилище образов |
hub.DNS-имя Nova Universe |
https/3000 |
IP-адрес Nova Universe |
Сервис настройки ПО |
sun.DNS-имя Nova Universe |
https/443 |
IP-адрес Nova Universe |
Сервис загрузки обновлений |
DNS-имя Nova Universe |
https/443 |
IP-адрес Nova Universe |
Сервис доставки ПО |
hub.DNS-имя Nova Universe |
https/3000 |
IP-адрес Nova Universe |
Репозиторий пакетов |
repo.DNS-имя Nova Universe |
https/443 |
IP-адрес Nova Universe |
2.2. Установка сервера управления
Для установки сервера управления выполните следующие действия.
2.2.1. Создание ВМ из образа
Создайте виртуальную машину из образа в среде виртуализации zVirt или VMware vSphere:
zVirt
-
Подключитесь к web-интерфейсу управления Hosted Engine и перейдите в меню Storage → Disks.
-
Загрузите образ сервера в домен хранения, нажав Upload → Start.
-
Выберите файл образа сервера и целевой домен хранения и запустите процесс загрузки.
-
После окончания загрузки образа создайте новую виртуальную машину, прикрепите образ сервера и укажите его в качестве загрузочного.
VMware vSphere
-
Перед созданием виртуальной машины из образа, конвертируйте образ из формата qcow2 в vmdk:
-
Откройте терминал в своей системе.
-
Выполните следующую команду для конвертации:
qemu-img convert -p -f qcow2 -O vmdk universe.qcow2 universe.vmdk-
universe.qcow2— название исходного образа в формате qcow2. -
universe.vmdk— название, которое нужно присвоить конвертированному образу в формате vmdk.
-
-
-
Загрузите образ на хост ESXi и выполните следующую команду для создания тонкого диска (thin provisioned) из конвертированного образа:
vmkfstools -i universe.vmdk -d thin converted_universe.vmdk-
universe.vmdk— название конвертированного образа в формате vmdk. -
converted_universe.vmdk- название, которое нужно присвоить созданному тонкому диску.
-
-
Создайте новую виртуальную машину в соответствии с требованиями и прикрепите образ сервера
converted_universe.vmdk. -
Измените режим загрузки виртуальной машины на BIOS:
-
В интерфейсе управления VMware ESXi откройте настройки вашей виртуальной машины: VM → Actions → Edit settings → VM Options.
-
Перейдите в раздел Boot Options и в параметрах Firmware выберите BIOS.
-
2.2.2. Запуск сервера и доступ к интерфейсу управления
Запустите ВМ сервера управления из образа и дождитесь окончания загрузки. После успешной загрузки ВМ выполните вход в интерфейс управления с помощью учетной записи по умолчанию.
На главной странице интерфейса управления отображается статус системных сервисов Nova Universe. При первом запуске отображается системный статус "Not Provisioned" и статус сервисов "Not Available", поскольку инициализация сервера управления не выполнена.
2.2.3. Изменение пароля учетной записи по умолчанию
По умолчанию используется учетная запись universe с паролем universe. Его рекомендуется изменить сразу после входа.
Для этого:
-
Перейдите в раздел Configure.
-
Выберите опцию Change user password и установите пароль согласно требованиям:
-
В пароле есть буквы разного регистра, цифры и специальные символы.
-
Длина не менее 8 символов.
-
Не используются простые и повторяющиеся слова.
-
2.2.4. Настройка параметров сетевого интерфейса
Вы можете настроить сетевой интерфейс сервера управления или установить дополнительные параметры сети.
Для этого:
-
Перейдите в раздел Configure.
-
Выберите опцию Network configuration. Откроется текстовая версия утилиты Network Manager (TUI).
-
Сделайте настройки с помощью опций:
-
Set system hostname — для установки названия сервера.
-
Edit a connection — для изменения текущего подключения.
-
Activate a connection — для активации или деактивации существующего подключения.
-
2.2.5. Настройка базового DNS-имени
Для настройки базового DNS-имени сервера:
-
Перейдите в раздел Configure → System configuration.
-
Выберете опцию Set initial configuration.
-
Укажите базовое DNS-имя в соответствии с требованиями к системе разрешения имен DNS.
После установки параметров сетевого интерфейса и базового DNS-имени вам необходимо выполнить первичную инициализацию Nova Universe.
Для этого:
-
Перейдите в раздел Configure → System configuration.
-
Выберете опцию Initialize appliance.
-
Для подтверждения инициализации нажмите Confirm.
Процесс инициализации сервера управления Nova Universe может занять до 30 минут.
После успешного завершения инициализации выполните повторный вход в интерфейс управления Nova Universe и проверьте статус сервисов.
Реквизиты доступа к серверу управления необходимы для формирования файла конфигурации установки платформы.
Для получения реквизитов:
-
Перейдите в раздел Configure → System configuration.
-
Выберете опцию Get current configuration.
-
Сохраните значения полей hubUsername, hubToken, DNS wildcard domain. Эти значения потребуются при последующей установке портала Cloudlink. Их нужно добавить в качестве значений к соответствующим переменным в файле конфигурации config.yml:
# Базовый домен, который был установлен при развертывании Nova Universe, например: universe.nova.internalnova_universe_base_domain: 'DNS wildcard domain'.
# Учетные данные для подключения. Значения полей hubUsername и hubToken из конфигуратора Nova Universe.
nova_universe_hub_username: 'hubUsername'
nova_universe_hub_token: 'hubToken'
2.2.6. Получение корневого сертификата сервера управления
Корневой сертификат Nova Universe по умолчанию не будет являться доверенным на вашей локальной машине. В дальнейшем вы можете столкнуться с ошибками проверки подлинности сертификата хранилища образов. Рекомендуется добавить сертификат сервера управления в доверенные на локальной машине.
Для этого:
-
Перейдите в раздел Configure → System configuration.
-
Выберете опцию Get current configuration.
-
Копируйте значение параметра CA certificates URL (ссылку) и загрузите сертификат с помощью браузера или командных утилит.
Пример загрузки сертификата Nova Universe и установки в хранилище локальной машины:
sudo curl -ko /etc/pki/ca-trust/source/anchors/universe-ca.crt https://repo.universe.nova.internal/ca/ca.crt sudo update-ca-trust
