Руководство по обновлению SonarQube с версии 9.9.5.1 до 2025.1.0 (Alauda Build of SonarQube Operator версии 2025.1.z)
Содержание
OverviewPrerequisitesUpgrade Steps1. Остановите развертывание экземпляра старой версии2. Настройте экземпляр новой версии2.1 Конфигурация базы данных2.2 Конфигурация хранилища2.3 Конфигурация сети2.4 Другие настройки3. Выполните миграцию схемы данных вручную4. Проверьте результаты обновления5. ОчисткаReference DocumentsOverview
В этом документе описывается процесс обновления SonarQube с версии 9.9.5.1(9.9.6) до 2025.1.0. Поскольку данное обновление связано с изменениями в операторе версии 4.0, существующие экземпляры SonarQube необходимо мигрировать на новый оператор.
- Для больших баз данных миграция занимает больше времени.
- Производительность хранилища также влияет на скорость миграции — рекомендуется использовать TopoLVM для лучшей производительности.
Пример:
- Экземпляр SonarQube: 574 проекта; использование PVC PostgreSQL 87 Gi; время миграции ~1 час
Prerequisites
- В кластере установлен оператор новой версии (sonarqube-ce-operator)
- Убедитесь, что для обновления достаточно системных ресурсов
- Используйте функционал продукта для обновления SonarQube до версии 9.9.5.1
- Выполните полное резервное копирование данных согласно документации по резервному копированию
Upgrade Steps
1. Остановите развертывание экземпляра старой версии
2. Настройте экземпляр новой версии
2.1 Конфигурация базы данных
Примечание: SonarQube 9.9.5 поддерживает версии PG 11-15, а SonarQube 2025.1.0 — версии PG 13-17. Для миграции данных на новую версию PG обратитесь к официальной документации PG
Информация о PG, используемая старой версией SonarQube, хранится в spec.database.secretName экземпляра SonarQube.
kubectl get sonarqube.operator.devops.alauda.io <old-sonarqube-name> -n <old-instance-namespace> -o jsonpath='{.spec.database.secretName}'
Используйте эту команду для получения secretName, затем выполните
kubectl get secret <secretName> -n <old-instance-namespace> -o yaml для получения информации о секрете
Содержимое секрета:
-
Выполните полное резервное копирование данных согласно документации по резервному копированию
-
Создайте новую базу данных PG для нового экземпляра SonarQube.
Рекомендуется создавать новую базу данных для развертывания новой версии SonarQube, чтобы избежать загрязнения старой базы и обеспечить нормальную работу старой версии SonarQube
-
Выполните миграцию данных согласно документации по резервному копированию
-
Создайте новый секрет базы данных. В секрете новой версии необходимо хранить только пароль:
-
Создайте конфигурацию нового экземпляра SonarQube с информацией о подключении к базе данных, подключающуюся к предыдущему экземпляру PG
2.2 Конфигурация хранилища
Выберите соответствующую конфигурацию в зависимости от типа хранилища, используемого в старом экземпляре SonarQube:
Использование StorageClass:
Разверните новый экземпляр, используя существующий PVC
Использование существующего PVC:
Используйте команду ниже для получения имени PVC, используемого старой версией SonarQube
kubectl get sonarqube.operator.devops.alauda.io <old-sonarqube-name> -n <old-instance-namespace> -o jsonpath='{.spec.persistence.pvc.webServiceExistingClaim}'
Использование HostPath:
Примечание: Узел для HostPath новой и старой версии должен совпадать. В path необходимо добавить каталог portal на основе пути старой версии. Например, если путь старой версии /sonarqube/, то путь новой версии должен быть /sonarqube/portal/
2.3 Конфигурация сети
Поскольку экземпляр старой версии не был удалён, конфигурация сети новой версии не может совпадать со старой (то есть ingress не может использовать тот же домен, nodePort — тот же порт), иначе возникнут конфликты. Временно используйте другие адреса, после завершения обновления удалите старый экземпляр и измените адрес доступа.
Используйте команду ниже для получения типа сети, используемого старой версией SonarQube
kubectl get sonarqube.operator.devops.alauda.io <old-sonarqube-name> -n <old-instance-namespace> -o jsonpath='{.spec.service.type}'
Конфигурация Ingress:
Конфигурация NodePort:
Настройка spec.externalURL:
2.4 Другие настройки
- Сохранение плагинов: в новой версии необходимо сохранить плагины старой версии. Добавьте конфигурацию spec.helmValues.plugins.deleteDefaultPlugins со значением false
- Миграция конфигурации SSO: перенастройте согласно Документации по развертыванию: Конфигурация SSO
- Миграция конфигурации ресурсов: настройте spec.helmValues.resources нового экземпляра на основе spec.resourceAssign старого экземпляра
- Миграция конфигурации helmValues: большинство данных из helmValues старого экземпляра можно напрямую перенести в helmValues нового экземпляра. Например, spec.helmValues.jvmOpts можно напрямую перенести в spec.helmValues.jvmOpts нового экземпляра.
Пример полного YAML для новой версии:
3. Выполните миграцию схемы данных вручную
- Заранее сделайте резервную копию данных старой версии.
- Экземпляр будет готов только после завершения настройки.
Перейдите по адресу new-sonar-url/setup и следуйте подсказкам
4. Проверьте результаты обновления
Проверьте следующее, чтобы убедиться в успешности обновления:
- Все данные проектов сохранены полностью
- Пользовательские аккаунты и права корректны
- Состояние плагинов в норме (некоторые плагины могут потребовать переустановки)
- Доступны исторические данные анализа
5. Очистка
- После подтверждения стабильной работы нового экземпляра старый экземпляр можно удалить
- Приведите конфигурацию сети в соответствие с исходной