Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Установка портала Cloudlink

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

1. Подготовка к установке

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

80

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 перед запуском развёртывания (нужно указать доменные имена в явном виде):

  • starvault.{{ internal_domain }}

  • nexus.{{ internal_domain }}

  • docker-repository.nexus.{{ internal_domain }}

1.3.1. Требования для Manager

  • Docker

  • Образ deploy-manager

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

IP (4)

-

Все ноды

Все ноды

Calico IPIP (encapsulation)

TCP

179

Все ноды

Все ноды

Calico BGP (networking)

TCP

80,443

-

LB

haproxy

TCP

9099

Все ноды

Все ноды

Calico health check

Команды выполняются на manager-хосте.
  1. Скачайте дистрибутив в архиве с расширением tar.gz и распакуйте его.

  2. В случае установки с помощью manage-tool пропустите этот шаг, иначе:

    1. Установите образ deploy-manager, который находится в распакованном архиве. Пример установки версии 1.5.0:

      docker load < deploy-manager-1.5.0.tar
    2. (Опционально) Проверьте образ на доступность:

      docker images

      Пример ответа в случае, если образ доступен:

      REPOSITORY                                                         TAG                    IMAGE ID       CREATED         SIZE
      deploy-manager                                                  1.5.0                  35ca14ec55b4   2 weeks ago     1.01GB
  3. Скопируйте пример inventory:

    cp -R inventories/sample inventories/box

    Измените данные подключения к порталу в файле hosts, расположенном в каталоге inventories/box/. Описание настроек находится в комментариях к этому файлу.

  4. Создайте SSH-ключ и скопируйте его на target-хост(ы):

    1. Создайте ключ, если он отсутствует:

      ssh-keygen
    2. Скопируйте SSH-ключ на target-хост:

      ssh-copy-id [id-пользователя]
      # Команда с примером id-пользователя -- ssh-copy-id root@192.168.0.1

      Если авторизация по паролю на сервере запрещена добавьте ключ вручную:

      1. Выведите содержимое публичного ключа:

        cat ~/.ssh/id_rsa.pub
      2. Подключитесь на target хост(ы) с помощью доступных вам вариантов (ssh, vnc, novnc и т.п.).

      3. Добавьте содержимое публичного ключа из первого шага:

        echo 'ssh-rsa AAAAB3NzaC1yc ... ' >> ~/.ssh/authorized_keys
  5. Заполните файл 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-адрес не должен использоваться в сети каким либо другим узлом.

  6. Измените настройки в файле config.yml, расположенном к каталоге inventories/box/group_vars/k3s/config.yml.

2.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 чувствителен к регистру символов, поэтому важно указать названия платформ корректно.

2.1.1. Параметры config.yml для платформы zVirt

Пример 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
Таблица 1. Описание параметров
Параметр Значение Описание

type

zvirt

Тип платформы. Зависит от того, какую платформу вы устанавливаете. Могут быть следующие типы: zvirt, vsphere, openstack, vcloud, hyper_v, yandex_cloud

label

zVirt

Человеко читаемое название платформы. В этом параметре можно указать любое удобное вам название "Zvirt-1", "Zvirt-test" и т.д

scheme

https

Схема для доступа к zVirt API. Протокол https является протоколом по умолчанию. Рекомендуется использовать именно этот протокол.

host

port

Например: host: '10.13.250.2' или host:'zvirt.sample.box'. port:'443' Если иной порт не указан, то используется 443 — стандартный порт протокола https.

IP-адрес zVirt API.

username

password

Например, username:'root' и password:'GYHvf-5569vgds'

Учётные данные для подключения. Задайте логин и пароль для платформы

params

weight

Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке. Например, weight:11, weight:102

cluster_id

Скопируйте ID кластера в интерфейсе Zvirt. Для этого: 1. Перейдите в раздел Compute → Clusters.

2. Нажмите на название кластера. Откроется страница с подробной информацией.

3. Скопируйте Cluster ID из соответствующего поля.

Например, cluster_id: zsjhgsdsjbvght6e327w3dscxdghjkjacsxdcjuu

cluster_name

Введите название кластера.

Например, cluster_name: example-cluster-1

storage_name

Скопируйте название хранилища в интерфейсе zVirt. Для этого перейдите в раздел Storage → Domains.

2.1.2. Параметры config.yml для платформы vSphere

Пример config.yml для vSphere

Для версии 6.7

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

Для версии 7.0

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
Таблица 2. Описание параметров
Параметр Значение Описание

type

vsphere

Тип платформы. Зависит от того, какую платформу вы устанавливаете. Могут быть следующие типы: zvirt, vsphere, openstack, vcloud, hyper_v, yandex_cloud

version

6.7 или 7.0

Данные параметр указывает версию для платформы VMware vSphere.

label

vSphere

Человеко читаемое название платформы. В этом параметре можно указать любое удобное вам название "vSphere-1", "vSphere-test" и т.д

scheme

https

Схема для доступа к vSphere API. Протокол https является протоколом по умолчанию. Рекомендуется использовать именно этот протокол.

host

Например: host: '10.13.250.2' или host:'vpshere.cloudlink.local'

IP-адрес или FQDN vSphere API.

port

443

Номер порта для подключения к интерфейсу API. По умолчанию используется 443 — стандартный порт протокола https.

username

password

Например, username:'root' и password:'GYHvf-5569vgds'

Учётные данные для подключения. Задайте логин и пароль для платформы.

params

weight

Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке. Например, weight:11, weight:102

cluster_name

Скопируйте имя кластера в интерфейсе vSphere Client. Для этого: 1. Перейдите в раздел Hosts and Clusters → Clusters. 2. Скопируйте Cluster name из соответствующего поля.

domain_id

Введите название кластера. Для этого: 1. Перейдите в раздел Hosts and Clusters в интерфейсе vSphere Client. 2. Нажмите по необходимому кластеру и скопируйте из URL значение параметра ClusterComputeResource.

Например, URL - https://vc.cloudlink.local/ui/app/cluster;nav=h/urn:vmomi:ClusterComputeResource:domain-c7005:111111/summary значение параметра domain_id в данном случае domain-c7005.

datastore_id

Введите идентификатор хранилища (datastore id) в интерфейсе vSphere Client. Для этого: 1. Перейдите в раздел Storage. 2. Нажмите по необходимому хранилищу и скопируйте из URL значение параметра Datastore. Например, URL - https://vc.cloudlink/ui/app/datastore;nav=s/urn:vmomi:Datastore:datastore-11:123123/summary значение параметра datastore_id в данном случае datastore-11.

tenant_prefix

Укажите имя директории (Folder), в которой будут создаваться директории Проектов.

template_inventory

Укажите имя директории (Folder), в которой находятся шаблоны для развертывания ВМ. По умолчанию директория для версии VMware vSphere 6.7 templates/cloudlink По умолчанию директория для версии VMware vSphere 7.0 library/templates

2.1.3. Параметры config.yml для платформы Openstack

Пример 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
Таблица 3. Описание параметров
Параметр Значение Описание

type

openstack

Тип платформы. Зависит от того, какую платформу вы устанавливаете.

label

OpenStack

Человеко читаемое название платформы. В этом параметре можно указать любое удобное вам название "OpenStack-1", "OpenStack-test" и т.д

scheme

https

Протокол https является протоколом по умолчанию. Рекомендуется использовать именно этот протокол.

host

Например: host: '10.13.250.2' или host:'openstack.cloudlink.local'

IP-адрес или FQDN хоста.

port

5000

Номер порта для подключения к интерфейсу API. По умолчанию используется 5000.

username

password

Например, username:'root' и password:'GYHvf-5569vgds'

Учётные данные для подключения. Задайте логин и пароль для платформы

params

weight

Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке. Например, weight:11, weight:102

region

Укажите название региона.

domain_name

Укажите название домена OpenStack.

tenant_prefix

Человеко читаемый префикс. Подставляется перед именем проекта OpenStack при создании заказа в проекте Cloudlink.

2.1.4. Как найти ID кластера

Поиск ID кластера для zVirt
  1. Получение cluster_id:

    1. В интерфейсе zVirt перейдите в раздел Compute → Clusters.

    2. Нажмите на название кластера. Откроется страница с подробной информацией.

    3. Скопируйте Cluster ID из соответствующего поля.

      zvirt cluster id
  2. Получение storage_name:

    1. В интерфейсе zVirt перейдите в раздел Storage → Domains.

    2. Скопируйте название хранилища.

      storage domains
Поиск ID кластера для Vmware
  1. Получение cluster_name:

    1. Перейдите в раздел Hosts and Clusters → Clusters.

    2. Скопируйте Cluster name из соответствующего поля.

  2. Получение domain_id:

    1. Перейдите в раздел Hosts and Clusters в интерфейсе vSphere Client.

    2. Нажмите по необходимому кластеру и скопируйте из URL значение параметра ClusterComputeResource.

      vmware 1
  3. Получение datastore_id:

    1. Перейдите в раздел Storage.

    2. Нажмите по необходимому хранилищу и скопируйте из URL значение параметра Datastore.

      vmware 2
Поиск ID кластера для RedVirt
  1. Авторизуйтесь на платформе RedVirt.

  2. Перейдите на портал администрирования — Administration Portal.

    red virt admin enter
  3. В интерфейсе платформы выберите раздел Compute → Clusters.

  4. Нажмите на название кластера. Вы попадете на страницу расширенной информации о выбранном кластере.

  5. Скопируйте Cluster ID из соответствующего поля. Это значение нужно вставить в файл config.yml.

    redvirt id cluster
  6. Получение storage_name:

    1. В интерфейсе RedVirt перейдите в раздел Storage → Domains.

    2. Скопируйте название подходящего хранилища (хранилище имеет тип "Master Data").

redvirt storage domains
Поиск ID кластера для OpenStack
  1. Авторизуйтесь на платформе OpenStack.

  2. В интерфейсе платформы выберите раздел Compute → Instances.

  3. Нажмите на название нужной виртуальной машины. Вы попадете на страницу расширенной информации о ВМ.

  4. Скопируйте значение из строки ID. Это значение нужно вставить в файл config.yml.

openstack id

3. Запуск развертывания

  1. Если используются параметры по умолчанию, выполните команду:

    ./PATH/manage-tool --install
  2. Если используются другие пути до инвентаря и ssh-ключа, выполните команду:

    ./PATH/manage-tool.sh --inventory inventories/myinventory/hosts --ssh-private-key ~/.ssh/mykeys/dev --install

Подробно ознакомиться с утилитой manage-tool.sh можно с помощью команды manage-tool --help.

3.1. Альтернативный вариант запуска развертывания

Команда для запуска 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.

4. Настройка после установки портала

Ниже находятся примеры ссылок с доменом sample.box. Замените его на тот, что указан в переменной domain_int при настройке файла inventories/box/hosts.

  1. После выполнения 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
  2. Перейдите по адресу, указанному в результатах выполнения задачи Portal admin credentials.

  3. Скачайте корневой сертификат сайта и добавьте его в доверенные на вашем ПК. В случае, если сертификат не добавлен в доверенные, могут возникнуть проблемы с открытием портала Cloudlink.

  4. Настройте сервис NetBox (IPAM), расположенный по адресу https://netbox.sample.box/.

    Нельзя изменять созданные на этапе установки объекты NetBox, такие как site, tenant, vrf. Если необходимо использовать собственные объекты их необходимо создать после установки, не изменяя уже существующие.

    Для этого:

    1. Получите учётные данные (adminUsername и adminPassword) из Vault по адресу https://vault.sample.box/ui/vault/secrets/deployment/show/netbox

    2. В интерфейсе NetBox перейдите на вкладку слева IPAM → VLANs → VLANs.

      netbox  vlans
    3. Создайте новый 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:

        1. В интерфейсе vSphere Client перейдите на вкладку Networks.

        2. Нажмите на название нужной группы портов (PortGroup).

        3. В строке URL скопируйте uuid PortGroup (общий вид uuid — dvportgroup-1111).

        netbox  id vsphere
        Пример создания 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:

        1. Введите в Terminal:

          $ curl https://АДРЕС-ZVIRT-ENGINE/ovirt-engine/api/vnicprofiles -u 'ЛОГИН@internal:ПАРОЛЬ' -k
        2. Из полученного ответа скопируйте значение id, как в примере на изображении

          take uuid
        3. Укажите данные в интерфейсе Netbox.

        netbox  add new vlan
    4. Создайте подсеть, в которой будут находиться виртуальные машины. Для этого в интерфейсе NetBox перейдите на вкладку слева IPAM → Prefixes → Prefixes.

    5. Зарезервируйте занятые 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
  5. Зачислите деньги для организации через контрольную панель https://control.sample.box/. Для этого:

    1. Авторизуйтесь под пользователем admin-box.

    2. Перейдите в раздел Биллинг → Пополнение счета.

    3. Выберите организацию, счет отправителя и получателя, сумму, описание.

    4. Нажмите Подтвердить.

    5. Перейдите в орг.структуру портала https://portal.sample.box/management/org-structure.

    6. Нажмите на напротив названия организации и выберите Перевести.

    7. Выберите счет получателя, сумму, укажите описание.

    8. Нажмите Перевести.

5. Обновление портала

Вы можете обновиться до целевой версии портала с любой версии, начиная с указанной минимальной версии и заканчивая той, что предшествует целевой. Подробнее о минимальной и целевой версиях портала в таблице ниже.

Пример: До версии 1.26 можно обновиться с версий 1.21 - 1.25.

Версия портала Минимальная версия

1.1 - 1.6

1.0

1.7 - 1.24

1.6

1.25 - 1.26

1.21

1.27 - 1.30

1.25

1.31 и новее

1.30

Чтобы обновить портал, выполните следующие действия:

  1. Разархивируйте новую версию дистрибутива в отдельную директорию.

  2. Скопируйте inventory/sample в inventories/box (аналогично процессу установки с нуля). Это будет новый inventory для обновленного портала.

  3. Перенесите значения из старых файлов config.yml и hosts в соответствующие разделы нового inventory.

    Не копируйте старые файлы целиком: структура нового файла конфигурации могла измениться, поэтому совместимость не гарантируется.

  4. Продолжите процесс обновления портала после заполнения нового inventory значениями. Процесс аналогичен установке портала с нуля.

  5. Выполните действия после обновления, если они есть. При обновлении через несколько версий (например, с 1.10 до 1.12), выполняйте действия для каждой промежуточной версии по порядку (1.10, 1.11, 1.12 и т.д.). Если действий для какой-то версии нет, пропустите её.

5.1. Установка патчей для портала

Для установки патча выполните следующие шаги:

  1. Скопируйте архив с патчем.

  2. Выполните команду, где PATH_TO_PATCH_ARCHIEVE — путь до файла архива:

    manage-tool --update-services PATH_TO_PATCH_ARCHIEVE
  3. После сообщения об успешном обновлении запустите команду развертывания, чтобы применить обновления.

6. Миграция данных между разными инсталляциями

Установщик Cloudlink поддерживает миграцию данных между различными инсталляциями, начиная с версии 1.9.

Миграцию рекомендуется проводить между одинаковыми версиями портала.

Для выполнения миграции:

  1. Разверните инсталляции source и destination, используя стандартный процесс установки.

  2. Укажите путь к kubeconfig для обеих инсталляций (source и destination) в файле migration.yml.

  3. Запустите playbook с помощью команды:

    ansible-playbook migration.yml -vv

    Это действие деструктивно для destination-кластера — все его объекты будут заменены данными из source-кластера.

  4. Разверните destination-кластер повторно, используя стандартный процесс установки.

7. Действия после обновления

7.1. Описание для подготовки к выполнению команд

Для выполнения обновления после обновления версии, требуется:

  1. Подключение к хостам по SSH. Для этого:

    ssh root@${IP/DNS}
    # или команда:
    ssh ${USERNAME}@${IP/DNS}
    sudo su
  2. Root-права

  3. Получение списка подов (имен):

    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}

7.1.1. Release 1.15

Сервис Команда kubectl Описание и комментарии

order-manager

Запуск Rails консоли: rails c

Выполнение команды внутри Rails консоли:

Platform.without_deleted.update_all(disable_reservation: true, disable_reservation_for_action: true)

kubectl -n portal-box exec -it ${POD_NAME} — rails runner 'Platform.without_deleted.update_all(disable_reservation: true, disable_reservation_for_action: true)'

Отключение резервации для всех платформ.

Команду необходимо выполнять только после установка с нуля, в иных случаях не требуется.

7.1.2. Release 1.20

Сервис Команда kubectl Описание и комментарии

order-manager

bundle exec rake init_data:add_orders_to_iam

kubectl -n portal-box exec -it ${POD_NAME} — bundle exec rake init_data:add_orders_to_iam

Выполнить задачу по добавлении информации о существующих заказах.

Команду нужно выполнять в main поде, если производится обновление портала. В иных случаях не требуется.

order-manager

bundle exec rake update_data:orders:rename_simple_mode

kubectl -n portal-box exec -it ${POD_NAME} — bundle exec rake update_data:orders:rename_simple_mode

Выполнить задачу по добавлении информации о существующих заказах.

Команду нужно выполнять в main поде, если производится обновление портала. В иных случаях не требуется.

calculator

python manage.py fix_manual_deleted

kubectl -n portal-box exec -it ${POD_NAME} — python manage.py fix_manual_deleted

Выполнить задачу, она пересчитывает поврежденные ручным удалением объекты.

# Команду нужно выполнять, если производится обновление портала. В иных случаях не требуется.#

calculator

python manage.py calc_not_calculated_prices

kubectl -n portal-box exec -it ${POD_NAME} — python manage.py calc_not_calculated_prices

Выполнить задачу, она пересчитывает пропущенные/не посчитанные заказы.

Команду нужно выполнять, если производится обновление портала. В иных случаях не требуется.

7.1.3. Release 1.22

Сервис Команда kubectl Описание и комментарии

netbox

Изменились теги для префиксов (Prefixes) сетей в Netbox для zVirt и redvirt. Новые теги основанные на cluster_id создаются автоматически, но необходимо заменить cluster_name на cluster_id вручную во вкладке Prefixes по ссылке https://netbox.{hostname}/ipam/prefixes.

7.2. Контрольные суммы

Версия MD5

1.21

9f61fc0cd11706d7eec28cd71541a599

1.22

f68e04cc580390d09c62fbb55e3743ca