Руководство по обновлению SonarQube с версии 9.9.5.1 до 2025.1.0 (Alauda Build of SonarQube Operator версии 2025.1.z)
Содержание
OverviewПредварительные требованияШаги обновления1. Остановить развертывание экземпляра старой версии2. Настроить экземпляр новой версии2.1 Конфигурация базы данных2.2 Конфигурация хранилища2.3 Конфигурация сети2.4 Другие настройки3. Выполнить миграцию схемы данных вручную4. Проверка результатов обновления5. ОчисткаСправочные документыOverview
В этом документе описывается процесс обновления SonarQube с версии 9.9.5.1(9.9.6) до 2025.1.0. Поскольку это обновление связано с изменениями в операторе версии 4.0, существующие экземпляры SonarQube необходимо мигрировать на новый оператор.
- Чем больше база данных, тем дольше занимает миграция.
- Производительность хранилища также влияет на скорость миграции — рекомендуется использовать TopoLVM для лучшей производительности.
Пример:
- Экземпляр SonarQube: 574 проекта; использование PVC PostgreSQL 87 Gi; время миграции ~1 час
Предварительные требования
- Новый оператор (sonarqube-ce-operator) установлен в кластере
- Убедитесь, что для обновления доступно достаточно системных ресурсов
- Используйте функционал продукта для обновления SonarQube до версии 9.9.5.1
- Выполните полное резервное копирование данных согласно документации по резервному копированию
Шаги обновления
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. Очистка
- После подтверждения стабильной работы нового экземпляра можно удалить старый
- Приведите сетевую конфигурацию в соответствие с исходной