Спеціальні кроки для оновлення Платформи та реєстрів до версії 1.9.3
1. Мета сторінки
Метою цієї сторінки є опис процесу оновлення кластера з версії 1.9.2.7
до 1.9.3.15
та необхідних для цього спеціальних кроків, а також подальшого оновлення реєстрів.
- Послідовність оновлення наступна:
-
-
Оновлення платформи з
1.9.2.7
до1.9.3.15
. -
Ручні кроки конфігурації після оновлення.
-
Оновлення реєстрів до версії
1.9.3.28
.
-
2. Оновлення платформи
2.1. Ручне оновлення платформи
Якщо ви розгортали платформу самостійно, за інструкцією Розгортання платформи з нуля в AWS-середовищі, то перейдіть до відповідного розділу 6.2. Оновлення та виконайте необхідні кроки з оновлення Платформи.
2.2. Оновлення платформи за допомогою пайплайну platform-deploy
Якщо ви розгортали платформу за допомогою Jenkins-пайплайну з CICD2-кластера, то виконайте наступні дії:
Запустіть Jenkins-пайплайн platform-deploy
з опціями оновлення та необхідною версією збірки — 1.9.3.15
.

Для середовища Envone режим розгортання має бути
|
2.3. Оновлення cluster-mgmt до версії 1.9.3.28
Оновіть компонент cluster-mgmt
до версії 1.9.3.28
.

Детальніше — див. на сторінці Оновлення інфраструктурних компонентів Платформи. |
3. Кроки після оновлення платформи
3.1. Додавання оператора external-secrets до ресурсів CRDs
Додайте оператор external-secrets
до ресурсів CRDs. Для цього виконайте наступні кроки:
-
Виконайте вхід до цільового Openshift-кластера як адміністратор Платформи.
-
Отримайте API-токен для доступу до кластера через
oc login
:-
Натисніть
Copy Login Command
. -
Увійдіть через Keycloak.
-
Натисніть
Display Token
(показати токен). -
Скопіюйте
oc login
API-токен.
-
-
Відкрийте термінал/консоль, вставте отриманий токен та виконайте вхід.
$ oc login --token=sha256~**** --server=https://api.master-for-update-31.mdtu-ddm.projects.epam.com:6443
-
Клонуйте репозиторій
control-plane-installer
та виконайтеcheckout
до гілки з останньою версією тегу —1.9.3.15
. Для цього по черзі виконайте команди:$ git clone "ssh://name_surname@epam.com@gerrit-mdtu-ddm-edp-cicd.apps.cicd2.mdtu-ddm.projects.epam.com:32114/mdtu-ddm/infrastructure/control-plane-installer" && scp -p -P 32114 name_surname@epam.com@gerrit-mdtu-ddm-edp-cicd.apps.cicd2.mdtu-ddm.projects.epam.com:hooks/commit-msg "control-plane-installer/.git/hooks/" $ cd control-plane-installer $ git checkout build/1.9.3.15
-
Застосуйте external-secrets CRDs:
$ kubectl apply -f deploy-templates/customresourcedefinitions/crds/external-secrets/


За відсутності доступу до CICD2-кластера, ці конфігурації CRD можна взяти з екземпляра, на якому розпаковувався installer, за наступним шляхом: $ cd repositories/components/control-plane/control-plane-installer.git/ |
3.2. Версіонування control-plane-console
У зв’язку зі створенням зворотно несумісних змін у control-plane-console
, вирішено переходити до процесу версіонування цього компонента.
Як проміжний крок для впровадження підходу версіонування та плавного переходу на нову версію control-plane-console
із можливістю відкотитися назад, запропоновано виконати наступні кроки для оновлення реєстрів із версії 1.9.2
до 1.9.3
:
-
Відкотити
control-plane-console
до старої версії1.9.2
. -
Розгорнути додатково
control-plane-console
версії1.9.2
+Route
. -
Розгорнути додатково
control-plane-console
версії1.9.3
+Route
.
Таким чином, після оновлення Платформи до версії 1.9.3
кінцевим користувачам буде доступна лише 1.9.2 версія Адмін панелі.
Порядок оновлення реєстрів описано у розділі Консоль, з якої необхідно оновлювати реєстри. |
Перед оновленням необхідно виконати наступні кроки:
-
Відкотіть
control-plane-console
до старої версії 1.9.2 шляхом зміни тегу образа (image) уcontrol-plane-console
DeploymentConfig
.-
1.1. Відкрийте OKD > Workloads > DeploymentConfigs > control-plane-console > YAML.
-
1.2. Знайдіть і замініть docker image на версію
control-plane-console-master:1.9.0.26
.control-plane-consoleimage: >- docker-registry.control-plane-nexus.svc:5004/control-plane/control-plane-console-master:1.9.0.26
Зауважте, що Route
за замовчуванням буде приводити до старої версіїcontrol-plane-console
—1.9.2
. Наприклад, https://control-plane-console-control-plane-platform-main.apps.master-for-update-30.mdtu-ddm.
-
-
Розгорніть додатково
control-plane-console
версії1.9.2
— Build1.9.0.26
.-
2.1. Відкрийте OKD > Workloads > DeploymentConfigs > Create DeploymentConfig > YAML.
Необхідно скрізь замінити DNS wildcard відповідно до середовища. DeploymentConfig control-plane-console-1-9-2
kind: DeploymentConfig apiVersion: apps.openshift.io/v1 metadata: annotations: meta.helm.sh/release-name: control-plane-console meta.helm.sh/release-namespace: control-plane name: control-plane-console-1-9-2 namespace: control-plane labels: app: control-plane-console-1-9-2 app.kubernetes.io/managed-by: Helm spec: strategy: type: Recreate recreateParams: timeoutSeconds: 600 rollingParams: updatePeriodSeconds: 1 intervalSeconds: 1 timeoutSeconds: 600 maxUnavailable: 25% maxSurge: 25% resources: {} activeDeadlineSeconds: 21600 triggers: - type: ConfigChange replicas: 1 revisionHistoryLimit: 10 test: false selector: app: control-plane-console-1-9-2 template: metadata: creationTimestamp: null labels: app: control-plane-console-1-9-2 spec: containers: - resources: requests: memory: 500Mi readinessProbe: tcpSocket: port: 8080 initialDelaySeconds: 60 timeoutSeconds: 1 periodSeconds: 20 successThreshold: 1 failureThreshold: 5 terminationMessagePath: /dev/termination-log name: control-plane-console livenessProbe: tcpSocket: port: 8080 initialDelaySeconds: 180 timeoutSeconds: 1 periodSeconds: 20 successThreshold: 1 failureThreshold: 5 env: - name: NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: HOST value: >- https://control-plane-console-1-9-2-control-plane.apps.master-for-update-30.mdtu-ddm.projects.epam.com - name: BASE_PATH - name: EDP_ADMIN_CONSOLE_VERSION - name: GERRIT_GLOBAL_LINK value: >- https://gerrit-control-plane-platform-main.apps.master-for-update-30.mdtu-ddm.projects.epam.com - name: CLUSTER_REPO value: cluster-mgmt - name: GROUP_GIT_REPO value: registry-group - name: REGISTRY_REPO_HOST value: >- https://gerrit-control-plane-platform-main.apps.master-for-update-30.mdtu-ddm.projects.epam.com - name: REGISTRY_REPO_PREFIX value: registry-tenant-template- - name: JENKINS_GLOBAL_LINK value: >- https://jenkins-control-plane-platform-main.apps.master-for-update-30.mdtu-ddm.projects.epam.com - name: AUTH_ENABLED value: 'true' - name: INTEGRATION_STRATEGIES value: 'Create,Import' - name: BUILD_TOOLS value: maven - name: DEPLOYMENT_SCRIPT value: 'helm-chart,openshift-template' - name: PLATFORM_TYPE value: openshift - name: VERSIONING_TYPES value: 'default,edp' - name: CI_TOOLS value: 'Jenkins,GitLab CI' - name: PERF_DATA_SOURCES value: 'Sonar,Jenkins,GitLab' - name: EDP_NAME value: control-plane - name: OC_CLIENT_SECRET valueFrom: secretKeyRef: name: oauth-admin-console-client key: secret - name: OC_CLIENT_ID valueFrom: secretKeyRef: name: oauth-admin-console-client key: clientId - name: PROJECT_MASK_URL value: '/console/project/{namespace}/overview' - name: IMAGE_STREAM_MASK_URL value: '/console/project/{namespace}/browse/images/{stream}' - name: ENABLE_BRANCH_PROVISIONERS value: '1' ports: - containerPort: 8080 protocol: TCP imagePullPolicy: IfNotPresent terminationMessagePolicy: File image: >- docker-registry.control-plane-nexus.svc:5004/control-plane/control-plane-console-master:1.9.0.26 restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst serviceAccountName: control-plane-console serviceAccount: control-plane-console securityContext: {} schedulerName: default-scheduler
-
2.2. Відкрийте OKD > Networking > Services > Create Service.
Service control-plane-console-1-9-2
kind: Service apiVersion: v1 metadata: name: control-plane-console-1-9-2 namespace: control-plane labels: app: control-plane-console-1-9-2 app.kubernetes.io/managed-by: Helm annotations: meta.helm.sh/release-name: control-plane-console meta.helm.sh/release-namespace: control-plane spec: ipFamilies: - IPv4 ports: - protocol: TCP port: 8080 targetPort: 8080 internalTrafficPolicy: Cluster type: ClusterIP ipFamilyPolicy: SingleStack sessionAffinity: None selector: app: control-plane-console-1-9-2
-
2.3. Відкрийте OKD > Networking > Routes > Create Route.
Необхідно замінити DNS wildcard у полі host на таке, що відповідатиме середовищу. Route control-plane-console-1-9-2
kind: Route apiVersion: route.openshift.io/v1 metadata: name: control-plane-console-1-9-2 namespace: control-plane labels: app: control-plane-console app.kubernetes.io/managed-by: Helm annotations: openshift.io/host.generated: 'true' spec: host: >- control-plane-console-1-9-2-control-plane.apps.master-for-update-30.mdtu-ddm.projects.epam.com to: kind: Service name: control-plane-console-1-9-2 weight: 100 port: targetPort: 8080 tls: termination: edge insecureEdgeTerminationPolicy: Redirect wildcardPolicy: None
-
-
Розгорніть додатково
control-plane-console
версії 1.9.3 — Build1.9.0.41
.-
3.1. Відкрийте OKD > Workloads > DeploymentConfigs > Create DeploymentConfig > YAML.
Необхідно скрізь замінити DNS wildcard відповідно до середовища. DeploymentConfig control-plane-console-1-9-3
kind: DeploymentConfig apiVersion: apps.openshift.io/v1 metadata: annotations: meta.helm.sh/release-name: control-plane-console meta.helm.sh/release-namespace: control-plane name: control-plane-console-1-9-3 namespace: control-plane labels: app: control-plane-console-1-9-3 app.kubernetes.io/managed-by: Helm spec: strategy: type: Recreate recreateParams: timeoutSeconds: 600 rollingParams: updatePeriodSeconds: 1 intervalSeconds: 1 timeoutSeconds: 600 maxUnavailable: 25% maxSurge: 25% resources: {} activeDeadlineSeconds: 21600 triggers: - type: ConfigChange replicas: 1 revisionHistoryLimit: 10 test: false selector: app: control-plane-console-1-9-3 template: metadata: creationTimestamp: null labels: app: control-plane-console-1-9-3 spec: containers: - resources: requests: memory: 500Mi readinessProbe: tcpSocket: port: 8080 initialDelaySeconds: 60 timeoutSeconds: 1 periodSeconds: 20 successThreshold: 1 failureThreshold: 5 terminationMessagePath: /dev/termination-log name: control-plane-console livenessProbe: tcpSocket: port: 8080 initialDelaySeconds: 180 timeoutSeconds: 1 periodSeconds: 20 successThreshold: 1 failureThreshold: 5 env: - name: NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: HOST value: >- https://control-plane-console-1-9-3-control-plane.apps.master-for-update-30.mdtu-ddm.projects.epam.com - name: BASE_PATH - name: EDP_ADMIN_CONSOLE_VERSION - name: GERRIT_GLOBAL_LINK value: >- https://gerrit-control-plane-platform-main.apps.master-for-update-30.mdtu-ddm.projects.epam.com - name: CLUSTER_REPO value: cluster-mgmt - name: GROUP_GIT_REPO value: registry-group - name: REGISTRY_REPO_HOST value: >- https://gerrit-control-plane-platform-main.apps.master-for-update-30.mdtu-ddm.projects.epam.com - name: REGISTRY_REPO_PREFIX value: registry-tenant-template- - name: JENKINS_GLOBAL_LINK value: >- https://jenkins-control-plane-platform-main.apps.master-for-update-30.mdtu-ddm.projects.epam.com - name: AUTH_ENABLED value: 'true' - name: INTEGRATION_STRATEGIES value: 'Create,Import' - name: BUILD_TOOLS value: maven - name: DEPLOYMENT_SCRIPT value: 'helm-chart,openshift-template' - name: PLATFORM_TYPE value: openshift - name: VERSIONING_TYPES value: 'default,edp' - name: CI_TOOLS value: 'Jenkins,GitLab CI' - name: PERF_DATA_SOURCES value: 'Sonar,Jenkins,GitLab' - name: EDP_NAME value: control-plane - name: OC_CLIENT_SECRET valueFrom: secretKeyRef: name: oauth-admin-console-client key: secret - name: OC_CLIENT_ID valueFrom: secretKeyRef: name: oauth-admin-console-client key: clientId - name: PROJECT_MASK_URL value: '/console/project/{namespace}/overview' - name: IMAGE_STREAM_MASK_URL value: '/console/project/{namespace}/browse/images/{stream}' - name: ENABLE_BRANCH_PROVISIONERS value: '1' ports: - containerPort: 8080 protocol: TCP imagePullPolicy: IfNotPresent terminationMessagePolicy: File image: >- docker-registry.control-plane-nexus.svc:5004/control-plane/control-plane-console-master:1.9.0.41 restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst serviceAccountName: control-plane-console serviceAccount: control-plane-console securityContext: {} schedulerName: default-scheduler
-
3.2. Відкрийте OKD > Networking > Services > Create Service.
Service control-plane-console-1-9-3
kind: Service apiVersion: v1 metadata: name: control-plane-console-1-9-3 namespace: control-plane labels: app: control-plane-console-1-9-3 app.kubernetes.io/managed-by: Helm annotations: meta.helm.sh/release-name: control-plane-console meta.helm.sh/release-namespace: control-plane spec: ipFamilies: - IPv4 ports: - protocol: TCP port: 8080 targetPort: 8080 internalTrafficPolicy: Cluster type: ClusterIP ipFamilyPolicy: SingleStack sessionAffinity: None selector: app: control-plane-console-1-9-3
-
3.3. Відкрийте OKD > Networking > Routes > Create Route.
Необхідно замінити DNS wildcard в полі host на відповідне середовищу. Route control-plane-console-1-9-3
kind: Route apiVersion: route.openshift.io/v1 metadata: name: control-plane-console-1-9-3 namespace: control-plane labels: app: control-plane-console app.kubernetes.io/managed-by: Helm annotations: openshift.io/host.generated: 'true' spec: host: >- control-plane-console-1-9-3-control-plane.apps.master-for-update-30.mdtu-ddm.projects.epam.com to: kind: Service name: control-plane-console-1-9-3 weight: 100 port: targetPort: 8080 tls: termination: edge insecureEdgeTerminationPolicy: Redirect wildcardPolicy: None
-
-
Оновіть
admin-console-client
OAuthClient CustomResource
-
4.1. Відкрийте OKD > Home > Search > Resources > OAuthClient > admin-console-client.
-
4.2. Додайте до
redirectURIs
нові маршрути (routes).OAuthClient admin-console-client
kind: OAuthClient apiVersion: oauth.openshift.io/v1 metadata: name: admin-console-client uid: b44af87a-0971-4d67-9d9c-8b715a256047 resourceVersion: '30903501' creationTimestamp: '2023-01-10T15:30:33Z' labels: app.kubernetes.io/managed-by: Helm annotations: meta.helm.sh/release-name: control-plane-console meta.helm.sh/release-namespace: control-plane secret: abc123*** redirectURIs: - >- https://control-plane-console-control-plane-platform-main.apps.master-for-update-30.mdtu-ddm.projects.epam.com/auth/callback - >- https://control-plane-console-1-9-2-control-plane.apps.master-for-update-30.mdtu-ddm.projects.epam.com/auth/callback - >- https://control-plane-console-1-9-3-control-plane.apps.master-for-update-30.mdtu-ddm.projects.epam.com/auth/callback - 'http://localhost:8080/auth/callback' grantMethod: auto
-

3.3. Оновлення empty-template-registry-regulation для створення нових реєстрів, починаючи з версії 1.9.3
Існує проблема, коли розробник не може вносити зміни до "чистого" регламенту до того, як завантажить робочу версію цього регламенту. Щоб розв’язати цю проблему, потрібно:
-
Після оновлення увійти до Openshift-консолі, відкрити проєкт
control-plane > Networking > Routes > gerrit > empty-template-registry-regulation_
та створити зміну у гілціbuild/1.5.0-SNAPSHOT.65
з редагуванням файлу data-model/main-liquibase.xml. -
Замінити посилання з nexus cicd2 на шлях до nexus на цільовому кластері, який знаходиться у проєкті
control-plane-nexus
.
4. Оновлення реєстру
4.1. Видалення пайплайн gerrit-configure-all-projects-repo-patched
Наступним кроком видаліть пайплайн gerrit-configure-all-projects-repo-patched
в Openshift для всіх реєстрів, які будуть оновлюватися. Для цього:
Увійдіть до OKD > Workloads > Jobs та видаліть job gerrit-configure-all-projects-repo-patched
для того, щоб вона створилася повторно в процесі оновлення.
4.2. Консоль, з якої необхідно оновлювати реєстри
-
Реєстри версій
1.9.2
і нижче оновлювати лише із консолі1.9.2
. -
Редагування та створення реєстрів версії
1.9.2
та нижче відбувається лише з відповідної версії консолі1.9.2
. -
Редагування та створення реєстрів версії
1.9.3
відбувається з відповідної версії консолі1.9.3
.
4.3. Оновлення реєстрів до нової версії 1.9.3.28
Перед оновленням уважно продивитися нижчезазначені кроки. |
Детальніше про оновлення реєстру — див. на сторінці Оновлення компонентів реєстру. |
Під час оновлення реєстру через control-plane-console
створиться зміна у Gerrit.
Перед тим, як злити (git merge
) цю зміну, у ній необхідно додати зміни до файлу values.yaml, а саме у полі global.crunchyPostgres
додати нове значення — backups
.
Вміст змін залежить від змінної deploymentMode
(значення змінної можна побачити у тому ж файлі values.yaml при редагуванні)
- Налаштування values.yaml мають виглядати так:
-
Приклад 1. Налаштування values.yaml із
deploymentMode: development
global: crunchyPostgres: backups: pgbackrest: repos: schedules: full: "0 15 * * *"
Приклад 2. Налаштування values.yaml ізdeploymentMode: production
global: crunchyPostgres: backups: pgbackrest: repos: schedules: full: "0 1 * * *"
Змінене поле crunchyPostgres
після редагування для реєстру зі значенням deploymentMode: development
має виглядати так:
При отриманні помилки 403 при спробі редагування зміни, необхідно додати наступний код до ресурсу
|
4.4. Дії після успішного оновлення всіх реєстрів на кластері до версії 1.9.3
Після успішного оновлення всіх реєстрів на кластері до версії 1.9.3, або під час прийняття рішення перемикнути користувачів на нову версію control-plane-console
, необхідно:
-
Змінити версію
control-plane-console
на нову1.9.3
(Build1.9.0.41
) уcontrol-plane-console
DeploymentConfig
. -
Видалити
DeploymentConfig
,Service
таRoute
для версії1.9.2
з відповідними назвамиcontrol-plane-console-1-9-3
. -
Видалити
DeploymentConfig
,Service
таRoute
для версії1.9.3
з відповідними назвамиcontrol-plane-console-1-9-3
.
5. Відомі проблеми
Помилка на UI адмін-панелі Control Plane при створенні запита на оновлення у секції Керування Платформою.
Розв’язання проблеми: оновіть сторінку.
6. Специфічні та нечасті помилки
-
У разі зависання Jenkins Build Pipeline на чартах
kong
, абоkong-admin-tools
під час оновлення реєстру, перейдіть до OKD > User Management > Roles та видаліть наступні кластерні ролі:kong-cluster-role kong-admin-tools-cluster-role
Pipeline створить нові ролі та перейде до етапу розгортання.
-
У разі неуспішного завершення Jenkins Build Pipeline через оновлення чартів
kong
, абоkong-admin-tools
, виконайте кроки, описані у пункті 1, та перезапустіть Build Pipeline для успішного оновлення реєстру.