Обновление региона KeyStack до версии 2025.1.1 вместе с ОС узлов
В этом разделе описаны шаги по обновлению операционных систем узлов с последующим развёртыванием на них целевой версии KeyStack. Обновление операционных систем происходит путём полного удаления старой версии ОС и установки новой версии ОС.
Перед тем как приступать к обновлению, необходимо проверить состояние облачной инфраструктуры. Эта проверка необходима для минимизации рисков и поддержания стабильности системы. Проверка работоспособности региона позволяет убедиться, что виртуальные машины создаются и доступны по сети, что подтверждает работоспособность цепочки сервисов (MariaDB, HAProxy, Cinder, Nova, Neutron, Glance).
Подключитесь к интерфейсу OpenStack CLI.
Проверьте сетевую доступность всех узлов облака с помощью команды ping.
Выполните команду openstackcomputeservicelist для проверки состояния вычислительных сервисов. Убедитесь, что все сервисы находятся в состоянии up.
Выполните команду openstackvolumeservicelist для проверки состояния службы томов. Убедитесь, что все сервисы находятся в состоянии up.
Выполните команду openstackserverlist для проверки состояния виртуальных машин.
Используя OpenStack CLI, портал самообслуживания Horizon или Портал администратора, создайте несколько ВМ с различными флейворами и выполните их live-миграцию.
Note
Убедитесь в наличии настройки LACP Fallback на загрузочном порте каждого обновляемого сервера перед запуском пайплайна развёртывания ОС.
Перейдите в веб-интерфейс GitLab по адресу https://ks-lcm.cloud.itkey.com.
Перейдите в репозиторий project_k / services / baremetal.
Перейдите в раздел Settings > CI/CD > Variables.
Проверьте наличие переменных NEXUS_FQDN и NEXUS_USER в списке.
При отсутствии, добавьте их:
Нажмите Add variable.
Снимите флаг Protect variable. Переменные не должны быть protected.
Укажите Key и Value:
NEXUS_FQDN со значением полного доменного имени сервиса Nexus;
NEXUS_USER со значением admin.
Установка Bifrost выполняется через запуск пайплайна GitLab:
Перейдите в веб-интерфейс GitLab.
Перейдите в репозиторий project_k / deployments / bifrost.
Откройте файл inventory и замените в нем значение LCM_IP на IP-адрес LCM-узла.
Откройте файл globals.d/REGION.yml и замените значение параметра network_interface на имя интерфейса LCM-узла, на котором будет работать PXE, например, bond0. Убедитесь, что выбран именно тот интерфейс, который соответствует PXE-сети.
Откройте файл config/bifrost/bifrost.yml и внесите в него изменения:
Измените следующие строки, заменив LCM_IP на IP-адрес LCM-узла:
При провиженинге узлам будут назначены адреса и прочие параметры IP, указанные на этом шаге. Для этого используется сервис dnsmasq. Настройте эти параметры:
Зайдите на LCM-узел по SSH и выполните команду:
# docker exec -ti bifrost_deploy bash(bifrost-deploy)# vi /etc/dnsmasq.conf
В открывшемся файле поменяйте значения:
listen-address=LCM_IP: замените LCM_IP на IP-адрес LCM-узла;
dhcp-boot=tag:ipxe,http://LCM_IP:8080/boot.ipxe: замените LCM_IP на IP-адрес LCM-узла;
dhcp-range=10.0.0.10,10.0.0.100,255.255.255.0,24h: укажите диапазон IP-адресов для выдачи серверам через DHCP;
dhcp-option=3,10.0.0.254: укажите адрес шлюза по умолчанию для IP-адресов, выдаваемых по DHCP.
Сохраните изменения и закройте файл.
Перезапустите сервис dnsmasq, выполнив команды:
(bifrost-deploy)# systemctl enable dnsmasq(bifrost-deploy)# systemctl restart dnsmasq(bifrost-deploy)# systemctl status dnsmasq
Убедитесь, что статус сервиса отображается как active(running).
Обновление узлов Control выполняется поочерёдно. Рекомендуется делать обновление серверов по порядку по одному, начиная с первого Control-узла. Для каждого узла вначале выполняется переустановка операционной системы, а затем обновление версии KeyStack.
Выполните шаги двух следующих разделов последовательно для каждого Control-узла.
Запустите пайплайн для развёртывания системы на Control-узлах.
Откройте веб-интерфейс GitLab.
Перейдите в репозиторий project_k / services / baremetal.
Создайте новый пайплайн: Build > Pipelines > Run Pipeline.
В открывшемся окне укажите значения переменных:
TARGET_ROLE — controller;
TARGET_CLOUD — имя тега региона в NetBox;
TARGET_NODE — имя конкретного узла для развёртывания, если необходимо ограничить развёртывание одним узлом;
IRONIC_IMAGE_URL — путь до образа системы, который будет установлен на узел, в формате http://<IP-адресLCM>:8080/sberlinux-9.4.3-x86_64.qcow2. Требования к образу:
только поддерживаемый тип операционной системы,
формат QCOW2,
hash-файл образа в формате <имяобраза>.md5 располагается в одной папке с самим образом.
IRONIC_IMAGE_ROOTFS_UUID — UUID корневого раздела в образе, если используется программный RAID;
IPA_KERNEL_NAME — путь до образа агента Ironic Python Agent (IPA) kernel image;
IPA_RAMDISK_NAME — путь до образа агента Ironic Python Agent (IPA) initramfs image;
KOLLA_ANSIBLE_IMG_TAG — тег контейнера с kolla-ansible, используемый для пайплайна;
EXPERIMENTAL_NETBOX_INTROSPECTION: true — использовать автозаполнение интерфейсов устройств в NetBox.
KEYSTACK_RELEASE — тег релиза Keystack;
CI_DEBUG_TRACE:
true — выводить отладочную информацию в пайплайне,
false — не выводить отладочную информацию.
Запустите пайплайн, нажав кнопку Run pipeline.
Дождитесь завершения выполнения операции. По результату выполнения пайплайна на сервере будет установлена операционная система.
Далее выполните инструкции из следующего раздела для обновления версии KeyStack на этом узле.
Перейдите в репозиторий вашего региона project_k / deployments / <ваш регион>.
Откройте файл globals.d/REGION.yml.
Проверьте, что в файле отсутствуют или закомментированы следующие параметры:
docker_yum_gpgkey
docker_yum_url
docker_yum_baseurl
Создайте новый пайплайн: Build > Pipelines > Run Pipeline.
Сначала необходимо выполнить пайплайн без развёртывания компонента Keystone. Установите значение переменной KOLLA_ARGS равное --skip-tagskeystone--limitcontrol[<номерControl-узла>] для обновления одного узла. Нумерация узлов начинается с нуля. Для первого Control-узла укажите 0, для второго 1 и так далее.
Запустите пайплайн, нажав кнопку Run pipeline.
Дождитесь завершения задач на этапе setup.
Запустите задачу deploy на этапе deploy и дождитесь её завершения.
Последовательно запустите задачи bootstrap-servers и deploy, дождавшись выполнения каждой.
Повторно создайте новый пайплайн: Build > Pipelines > Run Pipeline.
Установите значение переменной KOLLA_ARGS равное -tkeystone для выполнения пайплайна только для компонента KeyStone.
Запустите пайплайн, нажав кнопку Run pipeline.
Дождитесь завершения задач на этапе setup.
После обновления Control-узла на нём запускается сервис Consul, обеспечивающий функцию HA. Наличие этого сервиса во включённом состоянии нежелательно, если в дальнейшем планируется обновление Compute-узлов. Выключите сервис Consul:
Зайдите на Control-узел по SSH.
Выполните команду:
# systemctl stop kolla-consul-container.service
Повторите шаги по переустановке ОС и установке KeyStack для всех остальных Control-узлов региона поочерёдно, указав значения --limitcontrol[1] для второго Control-узла, --limitcontrol[2] для третьего Control-узла соответственно.
Перейдите в репозиторий вашего региона project_k / deployments / <ваш регион>.
Откройте файл inventory и закомментируйте в нём все недоступные узлы.
Tip
После возврата недоступных узлов в регион необходимо их раскомментировать и запустить шаг пайплайна deploy без тегов, но с указанием переменной KOLLA_ARGS равной --limithostname1.
Перед выполнением обновления Compute-узла, его необходимо освободить от виртуальных машин. Освободите один или несколько гипервизоров от виртуальных машин одним из перечисленных способов:
живая миграция;
холодная миграция;
перевод в режим обслуживания maintenance mode.
Переведите серверы, на которых будет производиться обновление ОС, в статус ready:
Зайдите в веб-интерфейс NetBox.
Перейдите в раздел Devices > Devices.
Отметьте все необходимые узлы.
Нажмите Edit Selected.
В открывшейся форме для параметра state в разделе Custom Fields установите значение ready.
Дополнительно проверьте корректность значений полей ROLE и TAGS.
Запустите пайплайн для развёртывания системы на Compute-узлах:
Откройте веб-интерфейс GitLab.
Перейдите в репозиторий project_k / services / baremetal.
Создайте новый пайплайн: Build > Pipelines > Run Pipeline.
В открывшемся окне укажите значения переменных:
TARGET_ROLE — compute;
TARGET_CLOUD — имя тега региона в NetBox;
TARGET_NODE — имя конкретного узла для развёртывания, если необходимо ограничить развёртывание одним узлом;
IRONIC_IMAGE_URL — путь до образа системы, который будет установлен на узел, в формате http://<IP-адресLCM>:8080/sberlinux-9.4.3-x86_64.qcow2. Требования к образу:
только поддерживаемый тип операционной системы,
формат QCOW2,
hash-файл образа в формате <имяобраза>.md5 располагается в одной папке с самим образом.
IRONIC_IMAGE_ROOTFS_UUID — UUID корневого раздела в образе, если используется программный RAID;
IPA_KERNEL_NAME — путь до образа агента Ironic Python Agent (IPA) kernel image;
IPA_RAMDISK_NAME — путь до образа агента Ironic Python Agent (IPA) initramfs image;
KOLLA_ANSIBLE_IMG_TAG — тег контейнера с kolla-ansible, используемый для пайплайна;
EXPERIMENTAL_NETBOX_INTROSPECTION: true — использовать автозаполнение интерфейсов устройств в NetBox.
KEYSTACK_RELEASE — тег релиза Keystack;
CI_DEBUG_TRACE:
true — выводить отладочную информацию в пайплайне,
false — не выводить отладочную информацию.
Запустите пайплайн, нажав кнопку Run pipeline.
Дождитесь завершения выполнения операции. По результату выполнения пайплайна на сервере будет установлена операционная система.
Выведите гипервизор из работы в облаке:
Зайдите на узел LCM по SSH.
Выполните команды для установки пакета OpenStack Placement osc-placement:
$ pip3 install osc-placement
Выполните команды, указав имя гипервизора в переменной HOST_FOR_REMOVAL:
$ HOST_FOR_REMOVAL=compute01
$ openstack --os-compute-api-version 2.87 compute service list \
--host $HOST_FOR_REMOVAL --service nova-compute -f value -c ID | \
xargs openstack --os-compute-api-version 2.87 compute service delete
$ openstack network agent list --host $HOST_FOR_REMOVAL -f value -c ID | \
while read agent_id; do \
openstack network agent delete $agent_id; \
done
$ openstack resource provider list --name $HOST_FOR_REMOVAL -f value -c uuid | \
xargs openstack resource provider show --allocations -f json | \
jq .allocations | jq 'keys[]' | \
xargs -n1 openstack resource provider allocation delete
$ openstack resource provider list --name $HOST_FOR_REMOVAL -f value -c uuid | \
xargs openstack resource provider delete
Далее выполните инструкции из следующего раздела для обновления версии KeyStack на этих узлах.