
Я Руслан Никитенко, инженер отдела сервиса компании Тринити. Наш отдел занимается диагностикой, тестированием и ремонтом серверов и СХД, техподдержкой Linux-систем в аппаратной части оборудования, взаимодействием с вендорами и участием в проектах по внедрению и освоению новых моделей оборудования и ПО.
Недавно я вёл проект по внедрению платформы Cloudlink для одного национального исследовательского центра и хочу поделиться практическими знаниями и рекомендациями, которые помогут другим компаниям и ИТ-специалистам избежать типичных ошибок внедрения облачных технологий в своих проектах и ускорить этот процесс. Я расскажу о тестировании продукта на демо-стенде, после которого было осуществлено реальное внедрение у заказчика.
Про платформу Cloudlink
Cloudlink — комплексное решение для создания частного облака, ориентированное на автоматизацию, аналитику и управление ресурсами. Эта платформа интегрируется с рядом ведущих технологий виртуализации, таких как VMware, zVirt, OpenStack и Hyper-V, что позволяет предоставить широкий спектр возможностей для on-premise инсталляций.
Ключевые особенности Cloudlink:
-
Управление ресурсами. Платформа позволяет управлять виртуализацией различных систем, включая VMware vSphere, zVirt и OpenStack. Встроенный IPAM (управление IP-адресами) и возможность управления внешними хранилищами S3 обеспечивают полный контроль над инфраструктурой.
-
Портал самообслуживания. Cloudlink предлагает удобный пользовательский и административный веб-порталы, что делает заказ ресурсов таким же простым, как в публичных облаках. Платформа включает конструктор PaaS-сервисов, позволяющий пользователям самостоятельно создавать услуги через портал самообслуживания.
-
Биллинг и аналитика. Cloudlink предоставляет гибкие инструменты для биллинга и аналитики, включая создание уникальных тарифных планов для разных организаций, а также продвинутые отчёты и дашборды для анализа загрузки всех кластеров ИТ-инфраструктуры.
-
Управление пользователями и безопасность. Встроенные возможности управления SSH-ключами, интеграция с AD и LDAP, а также гибкая ролевая модель обеспечивают эффективное управление правами доступа и безопасностью данных.
-
Маркетплейс и сервисы. Cloudlink включает в себя маркетплейс сервисов уровня IaaS+ и PaaS, позволяя заказать виртуальные машины с преднастроенным ПО, базы данных и кластеры K8s, что значительно ускоряет развёртывание и преднастройку приложений и услуг.
Преимущества использования Cloudlink:
-
Гибкость и масштабируемость. Cloudlink обеспечивает высокий уровень гибкости в заказе и управлении ресурсами, что позволяет компаниям легко масштабировать свои операции в соответствии с изменяющимися бизнес-потребностями.
-
Управление проектами. Иерархическая структура проектов и мощные инструменты управления делают Cloudlink идеальной платформой для больших организаций с разветвлённой структурой управления.
-
Автоматизация процессов. Конструктор сценариев и система контроля версий созданных сервисов значительно упрощают процесс разработки и внедрения новых услуг, способствуя быстрому и эффективному обновлению систем.
Таким образом, Cloudlink является мощным инструментом для компаний, стремящихся максимально использовать потенциал частного облачного хостинга, обеспечивая при этом высокий уровень автоматизации и удобства управления.
Про тестирование платформы на демо-стенде
Тщательное тестирование осуществлялось на специально подготовленном демо-стенде. Я стремился не только изучить функционал и возможности платформы, но и выявить потенциальные проблемы и сложности, которые могут возникнуть при её использовании. Важно было зафиксировать все «узкие» места и проблемные ситуации, чтобы оценить возможности и устойчивость работы платформы Cloudlink, а также разработать решения до начала реализации проекта на стороне клиента.
Процесс тестирования включал использование трех различных хостов, каждый из которых выполнял свою уникальную роль.
-
Manager host — эта машина является узлом конфигурирования платформы. С неё осуществляется развёртывание платформы, обновление и настройка некоторых ключевых конфигурационных параметров. На менеджер-хосте задаются важные системные настройки, такие как конфигурация под систему виртуализации, DNS-сервер, NTP-сервер и другие критические параметры, необходимые для корректной работы всей платформы.
-
Target host — машина, на которую производится установка платформы с менеджер-хоста. Этот хост становится основной рабочей площадкой, на которой фактически функционирует платформа Cloudlink после её установки и конфигурации. Важно, что именно на этом хосте происходят все ключевые операции и обработка данных, что делает его центром активности Cloudlink в процессе работы.
-
Nova Universe host — если в рамках работы с платформой планируется использование контейнеризированных приложений через Nova Universe, требуется отдельный хост. На нём разворачивается окружение для оркестрации контейнеров, что позволяет интегрировать службы контейнеризации в Cloudlink и использовать возможности платформы для заказа и управления контейнеризированными приложениями.
Для тестирования платформы Cloudlink я использовал виртуализацию zVirt, выбрав её в качестве основной платформы для развёртывания виртуальных машин.
На следующем этапе будет описан подробный процесс настройки и конфигурирования каждого из хостов. Эта информация поможет понять, какие ключевые параметры и настройки необходимо определить и оптимизировать для успешного запуска и функционирования облачной платформы Cloudlink в любой IT-инфраструктуре.
Поддерживаемые ОС
Manager хост
|
ОС |
Минимальная версия |
|
Ubuntu |
22.04 |
|
Alma Linux 9.3 |
9.3 |
|
Windows (WSL2) |
10 |
|
MacOS |
11 |
Target хост
|
ОС |
Минимальная версия |
|
Alma Linux |
9.3 |
|
Astra Linux (Orel) |
2.12.45 |
|
Ubuntu |
22.04 |
Минимальные системные требования
|
Тип хоста |
CPU |
RAM |
Disk (SSD) |
|
Manager |
4 |
8 |
64 |
|
Target |
16 |
64 |
320 |
Для демо-стенда мы будем использовать Ubuntu 22.04 LTS.
На Target-хосте должен присутствовать доступ к репозиториям ОС. Может быть организован разными способами: прямой доступ в интернет, прокси, установка зависимостей в ручном режиме и т.п. Python не ниже 3.6.
Установка
Настройка DNS организации
В DNS организации необходимо выделить зону, в рамках которой будут размещаться сервисы портала, например: clink.tesla-demo.local
Далее можно либо завести wildcard-запись, которая будет указывать на target-хост, куда устанавливается портал (например, *.clink.tesla-demo.local), либо завести каждую запись отдельно:
Список DNS-записей
account-manager.clink.tesla-demo.local
api.clink.tesla-demo.local
auditor.clink.tesla-demo.local
auth.clink.tesla-demo.local
awx.clink.tesla-demo.local
budget.clink.tesla-demo.local
calculator.clink.tesla-demo.local
capacity-manager-ui.clink.tesla-demo.local
checker.clink.tesla-demo.local
cloud-docker.nexus.clink.tesla-demo.local
control.clink.tesla-demo.local
feed-service.clink.tesla-demo.local
git.clink.tesla-demo.local
iam.clink.tesla-demo.local
k3s.clink.tesla-demo.local
kong-admin.clink.tesla-demo.local
kong.clink.tesla-demo.local
konga.clink.tesla-demo.local
lucrum-back.clink.tesla-demo.local
lucrum-ui.clink.tesla-demo.local
mock-api.clink.tesla-demo.local
netbox.clink.tesla-demo.local
nexus.clink.tesla-demo.local
orchestrator.clink.tesla-demo.local
order-service.clink.tesla-demo.local
portal-back.clink.tesla-demo.local
portal.clink.tesla-demo.local
product-catalog.clink.tesla-demo.local
products-docker.nexus.clink.tesla-demo.local
rabbitmq.clink.tesla-demo.local
references.clink.tesla-demo.local
resource-manager.clink.tesla-demo.local
restriction-service.clink.tesla-demo.local
selector-allocator.clink.tesla-demo.local
selector-cp.clink.tesla-demo.local
selector-inventory.clink.tesla-demo.local
spark.clink.tesla-demo.local
state-service.clink.tesla-demo.local
swagger-ui.clink.tesla-demo.local
swagger.clink.tesla-demo.local
tarifficator.clink.tesla-demo.local
vault.clink.tesla-demo.local
Подготовка manager-хоста
-
Установить пакет docker-ce и сопутствующие пакеты.
-
Импортировать docker образ cloudlink-manager на manager-хосте.
# Файл находится в корне дистрибутива, версия может отличаться.
docker load < cloudlink-manager-1.1.0.tar
-
Проверить, что docker-образ стал доступен.

Установка портала
-
Установить пакет docker-ce и сопутствующие пакеты.
-
настроить авторизацию sudo без запроса пароля.
# Можно внести в /etc/sudoers следующую запись: <cloudlink-username ALL=(ALL:ALL) NOPASSWD: ALL)>
3. Скопировать пример inventory:
cp -R inventories/sample inventories/box
4. Изменить данные для подключения и в файле inventories/box/hosts.
[master] # Имя и IP адрес хоста, на который будет выполнена установка. k3s.clink.tesla-demo.local ansible_host=169.254.123.109 [worker] [k3s:children] master worker [k3s:vars] # Имя пользователя для подключения (должны быть права на sudo). ansible_user=ubuntu # DNS домен для внутренних сервисов. domain_int=clink.tesla-demo.local # DNS домен для внешних сервисов (может быть аналогичен domain_int, если используется только одна зона). domain_ext=clink.tesla-demo.local
5. Убедиться, что на указанный target-хост доставлен SSH-ключ для подключения.
Доставка SSH ключа на target-host:
# Создать SSH-ключ, если он не существует.
ssh-keygen
# Доставить SSH-ключ на сервер:
ssh-copy-id <user-target-host>@<IP>
Если авторизация по паролю на сервера запрещена, то можно добавить публичный ключ напрямую в authorized_keys
# На manager-хосте смотрим содержимое публичной части ключа.cat ~/.ssh/id_rsa.pub #
# Добавляем данные в файл authorized_keys на target-хосте.
echo 'ssh-rsa AAAAB3NzaC1yc...' >> ~/.ssh/id_rsa
6. Изменить настройки в файле inventories/box/group_vars/k3s/config.yml (описание настроек приведено в комментариях в файле).
# Платформы виртуализации. # Поддерживаемые типы платформ (поле type): zvirt, vsphere, openstack, vcloud, hyper_v, yandex_cloud. platforms: # # Код платформы. # vsphere: # # Тип платформы. # type: vsphere # # Человеко читаемое название платформы. # label: vSphere # # Схема для доступа к vSphere Client API. # scheme: https # # IP адрес vSphere Client API. # host: '' # прим. 10.13.251.5 или vsphere.sample.box # port: '' # прим. 443. Если не указан, то используется стандартный порт протокола. # # Учётные данные для подключения. # username: '' # password: '' # params: # # Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке. # weight: 100 # # Имя кластера vSphere. # cluster_name: CL01 # # Идентификатор ClusterComputeResource, который можно взять из urn-ресурса, например: # # urn:vmomi:ClusterComputeResource:domain-c8:b857d79d-de9d-4a6c-b34d-9b935ad35619 # domain_id: domain-c8 # # Идентификатор Datastore, который можно взять из urn-ресурса, например: # # urn:vmomi:Datastore:datastore-16:b857d79d-de9d-4a6c-b34d-9b935ad35619 # datastore_id: datastore-16 # # Имя директории, в которой будут создаваться поддиректории и виртуальные машины. # tenant_prefix: cloud # # Путь к директории в Inventory vSphere с шаблонами виртуальных машин, например: 'Content Library/contLib_CL01'. # template_inventory_path: library/templates # # Код платформы. zvirt: # Тип платформы. type: zvirt # Человеко-читаемое название платформы. label: zVirt # Схема для доступа к zVirt API. scheme: https # IP адрес zVirt API. host: 'z-engine-01.tesla-demo.local' # прим. 10.13.250.2 или zvirt.sample.box port: '' # прим. 443. Если не указан, то используется стандартный порт протокола. # Учётные данные для подключения. username: 'admin@internal' password: 'you-zvirt-pwd' params: # Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке. weight: 101 # Значение поля "Cluster ID" в свойствах кластера zVirt. cluster_id: 0cc4b548-f0fa-11ee-b333-56734e258618 # Имя кластера zVirt. cluster_name: Default # Имя домена во вкладке "Storage Domains" zVirt. storage_name: h-zvirt-vol2 # # # Код платформы. # openstack: # # Тип платформы. # type: openstack # # Человеко-читаемое название платформы. # label: OpenStack # # Схема для доступа к OpenStack Identity service (keystone). # scheme: https # # IP адрес и порт OpenStack Identity service (keystone). # host: '' # прим. 10.91.0.10 или openstack.sample.box # port: '' # прим. 5000. Если не указан, то используется стандартный порт протокола. # # Учётные данные для подключения. # username: '' # password: '' # # Параметры платформы виртуализации. # params: # # Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке. # weight: 102 # # Регион OpenStack. # region: portal-dchw # # Domain Name OpenStack. # domain_name: box # tenant_prefix: box # # # Код платформы. # vcloud: # # Тип платформы. # type: vcloud # # Человеко-читаемое название платформы. # label: vCloud # # Параметры подключения к vCloud Director. # scheme: https # host: '' # Пример: vcloud.example.com # port: '' # Пример: 443. Если не указан, то используется стандартный порт протокола. # # Учетные данные для подключения. # username: '' # password: '' # # Параметры платформы виртуализации. # params: # # Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке. # weight: 103 # # Имя и идентификатор "Provider VDCs". # provider_vdc_name: '' # Пример: DC01 # provider_vdc_uuid: '' # Пример: a7dcb618-405e-473f-93a3-722bbd38395b # cpu_in_mhz: 2400 # # # Код платформы. # hyper_v: # # Тип платформы. # type: hyper_v # # Человеко-читаемое название платформы. # label: Hyper-V # # Параметры подключения к Hyper-V. # scheme: http # host: '' # Пример: hyperv.sample.box # port: '' # Пример: 80. Если не указан, то используется стандартный порт протокола. # # Учетные данные для подключения. # username: '' # password: '' # # Параметры платформы виртуализации. # params: # # Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке. # weight: 104 # # # Код платформы. # yandex_cloud: # # Тип платформы. # type: yandex_cloud # # Человеко-читаемое название платформы. # label: Yandex Cloud # # Параметры подключения к Yandex Cloud. # hosts: # compute: # scheme: https # host: compute.api.cloud.yandex.net # port: '' # Если не указан, то используется стандартный порт протокола. # iam: # scheme: https # host: iam.api.cloud.yandex.net # port: '' # Если не указан, то используется стандартный порт протокола. # # Учетные данные для подключения. # service_account_id: '' # Пример: x96q9v9xt4dd88tgh5x8 # private_key: >- # PLEASE DO NOT REMOVE THIS LINE! Yandex.Cloud SA Key ID <x96q9v9xt4dd88tgh5x8> # -----BEGIN PRIVATE KEY----- # MIIEvQIBADANbU4qmjkVFNP6GtyMR1itBKcwggSjAgEAAoIBAQDO8dGH7DEJB56z # <...> # -----END PRIVATE KEY----- # # Параметры платформы виртуализации. # params: # # Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке. # weight: 105 # # Имя облака. # cloud_name: '' # Пример: box # # Идентификатор облака. # cloud_id: '' # Пример: ai6r39835585icm329kc # # Идентификатор папки, в которой будут создаваться VM. # folder_id: '' # Пример: u2312uq8m54z2i942s34 # # Идентификатор платформы. # # Подробнее см. в документации https://cloud.yandex.ru/ru/docs/compute/concepts/vm-platforms # platform_id: standard-v3 # # Зона доступности. # zone_id: ru-central1-d
# IP-адрес и порт NTP сервера (необходимо для корректной работы кластерных продуктов). # Если оставить поле пустым, то будет поднят отдельный NTP-сервер в составе коробки, а все сервисы настроены на работу с ним. ntp_host: '169.254.123.1' # Пример: 10.15.8.13 ntp_port: 123
###################################################################################################### # Для установки внутренних компонентов требуется доступ к репозиториям Docker (DEB/RPM пакеты) и PyPI. # Есть несколько способов организовать этот доступ: # 1) Использование локального репозитория (только для AlmaLinux 9.3): # - Установите "local_repo_enabled: true". # - Остальные переменные оставьте без изменений. # 2) Доступ через прокси-сервер (например, Squid): # - Укажите адрес прокси-сервера в переменной "http_proxy". # - Установите "local_repo_enabled: false". # - Остальные переменные оставьте без изменений. # 3) Использование внутреннего прокси-репозитория (например, Nexus): # - Измените адреса в переменных "docker_install_repository" и "pypi_repository". # - Установите "local_repo_enabled: false". # - Остальные переменные оставьте без изменений. # 4) Прямой доступ в интернет: # - Установите "local_repo_enabled: false". # - Остальные переменные оставьте без изменений. ###################################################################################################### # Включить использование локального репозитория. # В этом случае установка CloudLink не требует доступа в интернет. local_repo_enabled: false # Прокси для доступа в интернет, например: "http://proxy01.example.com:3128". Если не указан, то не используется. http_proxy: '' # Репозиторий для установки DEB/RPM пакетов Docker. Можно изменить на внутренний прокси-репозиторий. docker_install_repository: https://download.docker.com/linux # Репозиторий для установки PIP пакетов. Можно изменить на внутренний прокси-репозиторий. pypi_repository: https://pypi.org/simple
# IP-адрес SMTP relay для отправки почты. smtp_host: 127.0.0.1 # Port SMTP relay для отправки почты. smtp_port: 25 # Использовать TLS или нет. smtp_use_tls: 'False' # Адрес отправителя, используемый в рассылках. smtp_default_from: noreply@clink.tesla-demo.local # Учётные данные для подключения. smtp_username: '' smtp_password: ''
############################################################################################## # Переменные для установки сертификата в CloudLink. # Если хотя бы один из параметров не задан, то будет сгенерирован самоподписанный сертификат. ############################################################################################## # Корневой CA сертификат. tls_ca_cert: '' # Сертификат или цепочка сертификатов. tls_cert: '' # Ключ от сертификата. tls_key: ''
# Базовый домен, который был установлен при развёртывании Nova Universe, например: universe.nova.internal nova_universe_base_domain: 'universe.tesla-demo.local' # Учётные данные для подключения. Значения полей hubUsername и hubToken из конфигуратора Nova Universe. nova_universe_hub_username: 'deploy-user' nova_universe_hub_token: 'ce0d49c40f1e87238cca6df8a59b1a6b73ba0ffa'
dns_servers: - /etc/resolv.conf
7. Запустить playbook, после чего ввести пароль для установки, который необходимо получить у менеджера Cloudlink.
|
docker run -it —network host —rm </span> portal-box:/apps \ |
/home/» class=»formula inline»>USER/portal-box – путь до директории portal-box |
Настройка после установки
Ниже будут приведены примеры ссылок с доменом clink.tesla-demo.local, который был указан в переменной domain_int при настройке файла inventories/box/hosts.
По окончанию выполнения playbook будет выведена информация о подключении к Vault, K3s и самому порталу.
TASK [Vault connection information] ****************************************************************************************************************************************************************************************** ok: [k3s.clink.tesla-demo.local] => { "msg": "VAULT_ADDR='https://vault.clink.tesla-demo.local' VAULT_TOKEN='hvs.qVWTqgOQXzTL3LxabI9hB1NN'" } TASK [Kubeconfig information] ************************************************************************************************************************************************************************************************ ok: [k3s.clink.tesla-demo.local] => { "msg": "Kubeconfig for connecting to the cluster is available at '~/.kube/cloudlink/box'" } TASK [Portal admin credentials] ********************************************************************************************************************************************************************************************** ok: [k3s.clink.tesla-demo.local] => { "msg": "url='https://portal.clink.tesla-demo.local' username='admin-box' password='WhAsh7#.hnu=h)hB<dLK'" } PLAY RECAP ******************************************************************************************************************************************************************************************************************* k3s.clink.tesla-demo.local : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Необходимо сохранить учётные данные, так как они понадобятся для дальнейшей настройки.
~/.kube/cloudlink – в этой директории будет созданный kubernetes config-файл, который тоже сохраняем.
Также данную информацию можно вывести повторно, для этого необходимо выполнить playbook с тегом info
docker run -it --network host --rm -v /home/$USER/portal-box:/apps -v ~/.ssh/id_rsa:/root/.ssh/id_rsa -v ~/.kube/cloudlink:/root/.kube/cloudlink cloudlink-manager:1.1.0 -i inventories/box/hosts portal_box.yml --ask-vault-pass --tags info
Перейти по адресу, указанному в результатах выполнения задачи Portal admin credentials (https://portal.clink.tesla-demo.local), после чего скачать корневой сертификат сайта и добавить его в доверенные на вашем ПК.
Настроим менеджер сети Netbox под задачи Cloudlink.
-
Настроить сервис NetBox (IPAM), расположенный по адресу https://netbox.clink.tesla-demo.local/
-
Получить учётные данные (adminUsername и adminPassword) из Vault по адресу https://vault.clink.tesla-demo.local/ui/vault/secrets/deployment/show/netbox. Vault token берём из предыдущего вывода credentials на manager-хосте.


3. Перейти по адресу https://netbox.tesla-demo.local/ipam/vlans/ и создать новый VLAN.

Пример для zVirt:
ID = 72 # Имя ресурса vNIC Profile Name = VLAN72 Status = Active Tenant = BOX Site = COD-A # Идентификатор vNIC Profile, который можно получить запросом к api (значение "id" нужной сети): # https://АДРЕС-ZVIRT-ENGINE/ovirt-engine/api/vnicprofiles # Пример команды: curl https://АДРЕС-ZVIRT-ENGINE/ovirt-engine/api/vnicprofiles -u 'ЛОГИН@internal:ПАРОЛЬ' -k Custom virt subnet uuid = 02baf04b-d3e9-40c3-80d7-32f61b78e36d

Пример в нашем случае:

4. При желании можно настроить свой VRFs по адресу https://netbox.clink.tesla-demo.local/ipam/vrfs вместо преднастроенного DEV_DEV:

5. Перейти во вкладку Prefixes https://netbox.clink.tesla-demo.local/ipam/prefixes и создать подсеть, в которой будут создаваться виртуальные машины.
Пример для zVirt:
Prefix = 10.138.72.0/24 Status = Active VRF = DEV_DEV (dev_dev) или как в нашем случае VLAN72 # Тег CLUSTER_NAME в данном примере – это имя кластера в zVirt, и в вашем примере он может отличаться. Tags = cloud, Default, zvirt Site = COD-A # Ранее созданный VLAN. VLAN = VLAN72 (72) Tenant = BOX # Адрес шлюза подсети. Default gw = 10.138.72.1 # DNS адреса, которые будут устанавливаться при развёртывании ВМ. Nameservers = ["10.138.123.2"]

6. Настройка резервирования IP-адресов
-
Нерекомендуемый вариант для нескольких IP по порядку. Перейти во вкладку IP-Addresses https://netbox.clink.tesla-demo.local/ipam/ip-addresses/ и зарезервировать уже занятые IP-адреса в подсети, например, адрес шлюза.
Address = 10.138.72.1/24
Status = Reserved
VRF = VLAN72 (72)
Description = Gateway
Tenant = BOX -
Рекомендуемый вариант для нескольких IP по порядку. Перейти во вкладку IP-Ranges https://netbox.clink.tesla-demo.local/ipam/ip-ranges/ и зарезервировать уже занятые диапазоны IP, например, в подсети 10.138.72.0/24 зарезервировать первые 100 адресов.
VRF = VLAN72 (72)
Start address = 10.138.72.1/24
End address = 10.138.72.100/24
Status = Reserved
Description = [zVirt] Reserved
Tenant = BOX

7. Так как мы создавали VRF VLAN72 (vlan72) вместо штатно предустановленного VRF DEV_DEV (dev_dev), то необходимо также добавить сегмент сети в Сервисе заказа https://order-service.clink.tesla-demo.local/admin/net_segments

В разделе Платформы https://order-service.clink.tesla-demo.local/admin/platforms добавляем наш VLAN

8. Зачислить виртуальные деньги для организации через контрольную панель https://control.clink.tesla-demo.local
-
Авторизоваться под пользователем admin-box и перейти во вкладку Биллинг -> Пополнение счета.
-
Выбрать организацию, счета отправителя и получателя, сумму, описание и нажать Подтвердить.


-
Перейти в орг. структуру основного портала https://portal.clink.tesla-demo.local/management/org-structure
-
Нажать на три точки возле имени организации и нажать Перевести.
-
Выбрать счёт получателя, например Проект Cloud take away, сумму, описание и нажать Перевести


Обновление портала
Чтобы обновить портал, нужно выполнить следующие шаги:
-
Разархивировать новую версию дистрибутива в отдельную директорию.
-
Скопировать inventory/sample в inventories/box (аналогично процессу установки с 0).
-
Это будет новый inventory для обновлённого портала.
-
Перенести значения из старых файлов yml и hosts в соответствующие разделы нового inventory.
-
Не копируйте старые файлы целиком, так как структура нового файла конфигурации может измениться, и совместимость не гарантируется.
-
После заполнения нового inventory необходимыми значениями, процесс обновления портала будет аналогичен его установке с нуля.
Поиск и исправление проблем
В случае возникновения проблем в первую очередь стоит перепроверить, что окружение настроено корректно.
Чеклист:
-
Manager и Target хостам выделено корректное количество ядер и памяти.
-
Проверить наличие свободного пространства в файловой системе хостов.
Manager-хост – минимум 50 ГБ.
Target-хост – минимум 150 ГБ. -
Все необходимые имена разрешаются с Manager- и Target-хостов, а также клиентской машины, например:
nslookup portal.clink.tesla-demo.local
nslookup control.clink.tesla-demo.local -
Убедиться, что у пользователя, с помощью которого производится установка на target-хост, есть sudo-права без пароля на target-хосте:
sudo -v -
Target-хост должен иметь доступ к репозиториям ОС для загрузки необходимых пакетов в процессе установки.
-
Проверить корректность введённых данных в файлах конфигурации (hosts и config.yml) в директории inventories. Пункты, для обращения внимания:
-
DNS домен для внутренних сервисов введён в соответствии с wildcard-записью в DNS.
-
Логин для подключения в zVirt должен быть с доменом, к которому относится пользователь, например, admin@internal
-
В случае ошибки в процессе деплоя портала, можно проверить логи пода, который находится в статусе ERROR.
Получение списка подов и их статусов на target-хосте: sudo kubectl get pods -A
Просмотр логов выбранного пода: sudo kubectl logs -n portal-box имя-пода
Также деплой можно запускать с повышенной детализацией с помощью ключа -vvv
В случае ошибок после деплоя следует открывать логи соответствующего пода в зависимости от проблемы:
-
При проблеме с настройкой сети, при выполнении заказа – rpc-reserver-ipam
-
При ошибке с подключением облаков в административном интерфейсе – selector-worker-box
Настройка Nova Universe
Для заказа кластера Nova Container Platform в Cloudlink необходимо предварительно развернуть сервер управления Nova Universe. Он поставляется в виде образа виртуальной машины в формате qcow2 и включает следующий набор компонентов:
-
Хранилище образов контейнеров
-
Сервис доставки ПО
-
Сервис настройки ПО
Таким образом, для установки кластеров Nova Container Platform не требуется выполнять операции по самостоятельному зеркалированию образов контейнеров и дополнительных артефактов.
Требования к серверу управления Nova Universe
Требования к среде размещения
Для размещения Nova Universe подходят среды виртуализации zVirt и VMware vSphere. Формат образа виртуальной машины qcow2 является нативным для zVirt. В случае, когда необходимо разместить сервер управления в vSphere, следует провести дополнительные манипуляции, которые описаны в разделе создания виртуальной машины из образа в среде виртуализации VMware vSphere.
Требования к ресурсам
Для запуска сервера управления Nova Universe необходимо следующее количество ресурсов:
|
vCPU |
RAM |
Диск |
IOPS |
|---|---|---|---|
|
4 |
8 GB |
40 GB SSD |
300+ |
Внимание! Компоненты сервера управления Nova Universe чувствительны к производительности диска, поэтому всегда рекомендуется использовать более быстрое хранилище.
Требования к настройке сети
Сервер управления Nova Universe поддерживает использование IP-адреса, настроенного как с помощью DHCP, так и заданного статически. Рекомендуется размещать сервер управления в отдельной от кластеров Kubernetes сети.
Важно:
-
В случае использования DHCP-сервера для настройки сетевого интерфейса сервера, необходимо настроить DHCP-сервер на предоставление постоянного IP-адреса и сведений о DNS-серверах.
-
Сервер управления Nova Universe на текущий момент не поддерживает IPv6.
Требования к системе разрешения имён DNS
Для работы сервера управления Nova Universe необходимо создать следующие DNS-записи.
|
Компонент |
Пример записи |
Описание |
|---|---|---|
|
Сервер управления Nova Universe |
universe.имя.домена |
DNS-запись типа A разрешает адрес сервера управления. |
|
Службы Nova Universe |
.universe.имя.домена |
DNS-запись типа A или CNAME разрешает адрес сервера управления при запросе его поддоменов, например, sun.universe.tesla-demo.local, hub.universe.tesla-demo.local и т. д. |
Внимание! Для корректной работы сервера управления вам необходимо также настроить DNS-сервер в его сетевой конфигурации.
Требования к межсетевому экранированию
Если сервер управления Nova Universe размещается в отдельной маршрутизируемой сети, то для организации доступа к ресурсам сервера управления из сетей узлов Kubernetes, необходимо настроить следующие разрешающие правила:
|
Ресурс |
DNS-имя |
Порт |
IP-адрес |
|---|---|---|---|
|
Хранилище образов |
hub.DNS-имя Nova Universe |
https/3000 |
IP-адрес Nova Universe |
|
Сервис доставки ПО |
hub.DNS-имя Nova Universe |
https/3000 |
IP-адрес Nova Universe |
|
Сервис настройки ПО |
sun.DNS-имя Nova Universe |
https/443 |
IP-адрес Nova Universe |
|
Репозиторий пакетов |
repo.DNS-имя Nova Universe |
https/443 |
IP-адрес Nova Universe |
|
Сервис загрузки обновлений |
DNS-имя Nova Universe |
https/443 |
IP-адрес Nova Universe |
Установка сервера управления
Создание виртуальной машины из образа в среде виртуализации zVirt
Подключитесь к WEB-интерфейсу управления Hosted Engine и перейдите в меню Storage – Disks. В данном меню необходимо загрузить образ сервера в домен хранения, нажав Upload – Start.
2
В открывшемся окне необходимо выбрать файл образа сервера и целевой домен хранения, после чего запустить процесс загрузки. После окончания загрузки образа, необходимо создать новую виртуальную машину в соответствии с требованиями и прикрепить образ сервера, указав его как загрузочный.
Запуск сервера и доступ к интерфейсу управления
Запустите ВМ сервера управления из образа и дождитесь окончания загрузки. После успешной загрузки ВМ выполните вход с интерфейс управления с помощью учётной записи по умолчанию.
Доступ к серверу управления. По умолчанию используйте учётную запись universe с паролем universe. Вы сможете изменить пароль учётной записи позже в ходе настройки сервера управления.
На главной странице интерфейса управления отображается статус системных сервисов Nova Universe. При первом запуске общий системный статус «Not Provisioned» и статус сервисов «Not Available» являются нормой, поскольку инициализация сервера управления не выполнена.
Изменение пароля учётной записи по умолчанию
Рекомендуется изменить пароль учётной записи universe. Для этого перейдите в раздел Configure и выберите опцию Change user password. Установите новый пароль в соответствии с политикой ниже:
-
используйте сочетание букв разного регистра, цифр и специальных символов;
-
не используйте простые и повторяющиеся слова;
-
длина пароля должна быть не менее 8 символов.
Настройка параметров сетевого интерфейса
Вы можете настроить сетевой интерфейс сервера управления или установить дополнительные параметры сети. Для этого перейдите в раздел Configure и выберете опцию Network configuration.
Для настройки сети используется текстовая версия утилиты Network Manager (TUI). С помощью Network Manager вы можете:
-
установить имя сервера, используя опцию Set system hostname;
-
отредактировать существующее подключение, используя опцию Edit a connection;
-
Активировать и деактивировать существующее подключение, используя опцию Activate a connection.
Настройка базового 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 (или, как в нашем случае, добавляем эти значения в inventories/box/group_vars/k3s/config.yml на manager хост) – их необходимо добавить в качестве значений к соответствующим переменным в файле конфигурации config.yml:
# Базовый домен, который был установлен при развёртывании Nova Universe, например: universe.nova.internal nova_universe_base_domain: ‘DNS wildcard domain‘ # Учётные данные для подключения. Значения полей hubUsername и hubToken из конфигуратора Nova Universe. nova_universe_hub_username: ‘hubUsername‘ nova_universe_hub_token: ‘hubToken‘
Для удобства копирования информации вы можете подключиться к интерфейсу управления Nova Universe по протоколу SSH.
Получение корневого сертификата сервера управления
Корневой сертификат 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.tesla-demo.local/ca/ca.crt
sudo update-ca-trust
Подготовка шаблонов VM
Платформа Cloudlink предлагает нам несколько встроенных продуктов для заказа услуг. Но для их работы нам необходимо подготовить базовые шаблоны операционных систем. Ниже будет описан принцип настройки и подготовки наиболее популярных ОС, таких как AstraLinux, RedOS, Ubuntu, AlmaLinux, Debian, CentOS.
AstraLinux
zVirt
-
Получить образ в формате iso Astra linux 1.7.3.
-
Выгрузить iso в “хранилище → Диски → Загрузить”.
-
Создать виртуальную машину. (выделить гарантированную ОЗУ 2048 МБ, 2 CPU, 20 Гб Диск), использовать диск lvm и базовую защиту, также установить ssh.
-
Установить (опционально) Network-Manager из локального репозитория, если не установился автоматически. При необходимости дополнительно установить resolv.conf, так как могут быть проблемы с DNS.
-
Подключить виртуальную машину к сети интернет (необходим доступ до репозиториев Астры, при необходимости поправить список source репозиториев /etc/apt/sources.list, по стандарту интернет репозитории под комментариями).
-
В виртуальной машине установить и настроить qemu-guest-agent и cloud-init, а после создания шаблона из ВМ удалить сетевые интерфейсы шаблона.
Устанавливаем resolvconf
apt install resolvconf
Устанавливаем qemu-guest-agent
apt install qemu-guest-agent
Устанавливаем cloud-init
apt install cloud-init
Вносим изменения в cloud-init (вендор обещал исправить ошибку в 1.7.5)
nano /usr/lib/python3/dist-packages/cloudinit/distros/astra_util.py
в функции mic_is_active() добавить в блок except в первую строчку: status = ‘ERROR’
Запускаем сервисы
service cloud-init start
service qemu-guest-agent start
Перезапускаем
reboot
RedOS
zVirt
-
Скачать образ в формате iso RedOS 7.3.
-
Создать виртуальную машину (выделить гарантированную ОЗУ 2048 МБ, 2 CPU, 20 Гб Диск).
-
Запустить → Однократный запуск → Параметры загрузки → Прикрепить CD (выбрать необходимый ISO)
-
В виртуальной машине установить и настроить qemu-guest-agent и cloud-init
Монтируем ISO
mount /dev/sr0 /media
Зачищаем все репы
rm -rf /etc/yum.repos.d/Red
Создаем локальную репу br cat > /etc/yum.repos.d/redos.repo << EOF
[redos_main]
name=RedOS 7.3
baseurl=file:///media #путь до iso
gpgkey=»»
enabled=1
gpgcheck=0
EOF
Инициализируем репы
yum clean all && yum makecache
Устанавливаем qemu-guest-agent
yum install qemu-guest-agent
Устанавливаем cloud-init
yum install cloud-init
Очистить все записи в resolv.conf
vi /etc/resolv.conf
Запускаем сервисы
systemctl enable cloud-init
service qemu-guest-agent start
Перезапускаем
reboot
Ubuntu
zVirt
-
Получить образ в формате iso ubuntu (либо использовать облачный образ cloud image).
-
Выгрузить .iso в домен хранения (либо выгрузить .ova образ на хост zVirt в папку и изменить права на папку и файл chown 36:36 <директория и файл>, использовать thick диск)
-
Создать виртуальную машину (выделить гарантированную ОЗУ 2048 МБ, 2 CPU, 20 Гб Диск).
-
Подключить виртуальную машину к сети интернет (необходим доступ до репозиториев ubuntu). При установке использовать диск LVM.
В виртуальной машине установить и настроить qemu-guest-agent и cloud-init:
Устанавливаем qemu-guest-agent
apt install qemu-guest-agent
Устанавливаем cloud-init
apt install cloud-init
Устанавливаем поддержку файловой системы XFS
sudo apt install -y xfsprogs
Запускаем сервисы
service cloud-init start
service qemu-guest-agent start
Выключаем ВМ
poweroff
Создать из ВМ шаблон и назвать его ubuntu-tempate
Удалить сетевой интерфейс из шаблона
В случае проблем в разрешении имён DNS (с чем столкнулся я при тестировании) можно сделать так:
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
sudo rm /etc/resolv.conf
создать новый resolv.conf и вписать свои DNS
sudo nano /etc/resolv.conf
AlmaLinux
zVirt
-
Получить образ в формате iso AlmaLinux 8.10.
-
Выгрузить iso в “хранилище →Диски → Загрузить”
-
Создать виртуальную машину (выделить гарантированную ОЗУ 2048 МБ, 2 CPU, 20 ГБ), использовать диск lvm.
-
В виртуальной машине установить и настроить qemu-guest-agent и cloud-init:
После создания шаблона из ВМ удалить сетевые интерфейсы шаблона
Установить tar
yum install -y tar
Устанавливаем qemu-guest-agent
yum install qemu-guest-agent
Устанавливаем cloud-init
yum install cloud-init
Запускаем сервисы
service cloud-init start
service qemu-guest-agent start
Выключить ВМ
poweroff
Создать из ВМ шаблон и назвать его alma-tempate.
Удалить сетевой интерфейс из шаблона.
Debian
zVirt
-
Получить образ debian-11.7
-
Создать виртуальную машину (выделить гарантированную ОЗУ 2048 МБ, 2 CPU, 20 Гб Диск). Использовать диск lvm.
Запустить → Однократный запуск → Параметры загрузки → Прикрепить CD (выбрать необходимый ISO).
Устанавливаем resolvconf
apt install resolvconf
Устанавливаем qemu-guest-agent
apt install qemu-guest-agent
Устанавливаем cloud-init
apt install cloud-init
Устанавливаем поддержку файловой системы XFS
sudo apt install -y xfsprogs
Устанавливаем дополнительные компоненты:
apt install gnupg gnupg1 gnupg2 apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null apt update apt-cache policy docker-ce apt install docker-ce
Запускаем сервисы:
service cloud-init start
service qemu-guest-agent start
очистить /etc/network/interfaces (оставить source /etc/network/interfaces.d/)
Очистить сетевые интерфейсы
ip addr flush dev enp1s0
ip route flush table main
Выключить ВМ
poweroff
Создать из ВМ шаблон и назвать его debian-template
Удалить сетевой интерфейс из шаблона
CentOS 7
zVirt
-
Получить образ Centos 7.
-
Создать виртуальную машину (выделить гарантированную ОЗУ 2048 МБ, 2 CPU, 20 Гб Диск).
-
Примонтировать образ к виртуальной машине, выполнить установку ОС, режим minimal install.
-
Проверить, что установлен Network-Manager (nmcli). Если его нет, выполнить установку (yum install Network-Manager).
Установить и настроить пакеты:
yum install -y qemu-guest-agent
systemctl start qemu-guest-agent
systemctl enable qemu-guest-agent
yum install -y cloud-init
systemctl enable cloud-init
Выполнить настройку cloud-init:
/etc/cloud/cloud.cfg
…..
выставить ssh_pwauth: 1
…..
Включить возможность авторизации по паролю через SSH
sed -i ‘s/PasswordAuthentication no/PasswordAuthentication yes/’ /etc/ssh/sshd_config
очистить кэш cloud-init и выключить ВМ
cloud-init clean
poweroff
Удалить сетевой интерфейс и создать шаблон из ВМ centos-7-template.
ссылка на оригинал статьи https://habr.com/ru/articles/834784/
Добавить комментарий