Обновление#
Изменения в параметрах настройки#
Настройки не изменились.
Подготовка#
После получения архива с образами и бинарными файлами необходимо распаковать его и переложить образы в свой локальный репозиторий образов.
Для загрузки образов в локальный репозиторий требуется утилита skopeo. Skopeo позволяет сохранить sha256 оригинальных образов.
Установите
skopeo:sudo dnf install -y skopeoРаспакуйте полученный архив, в нем содержится две директории
binaries(она содержитocиdropappplus-install) иimages, а также инструкцию по обновлению с актуальнымsha256релизного образа и инструкцию по установке:drwxr-xr-x 2 binaries -rw-r--r-- 1 cluster_upgrade_instructions.pdf drwxr-xr-x 2 imagesС помощью
skopeoсинхронизируйте каталог с локальным репозиторием (в примере здесь и ниже это registry.example.aa.ааа без аутентификации):skopeo sync --preserve-digests --src dir --dest docker ./4.8.57-dropappplus-2.0.3-x86_64/images registry.example.aa.bbb # для версии dplus-release
Примечание
Репозиторий должен быть доверенным. Если нет, то сгенерируйте сертификат и добавьте его на nodes кластера
Обновление кластера#
Примечание
На node администратора кластера установлена и настроена утилита oc, подробнее см. «Руководство по системному администрированию» раздел «Сценарии эксплуатации кластера DropApp Plus с помощью oc»
Шаги обновления#
Mirroring с помощью ImageContentSourcePolicy#
Создайте манифест
ImageContentSourcePolicy, в котором декларируется mirror registry, прописанный вimage-referenceфайле вcluster-version-operatorобразе, создайте файл:dplus-icsp-mvp.yaml apiVersion: operator.openshift.io/v1alpha1 kind: ImageContentSourcePolicy metadata: name: dropapp-plus-repo-mvp spec: repositoryDigestMirrors: - mirrors: - registry.example.aa.bbb/dplus-v-1 # <---- релизный артефакт в локальном registry, куда выгрузили образы с помощью skopeo source: <path>/dplus/2.0.3/dplus-v-1 # <----- релизный артефакт в registry, прописанный в поставляемом cluster-version-operator образе - mirrors: - registry.example.aa.bbb/dplus-v-2 # <---- релизный артефакт в локальном registry, куда выгрузили образы с помощью skopeo source: <path>/dplus/2.0.3/dplus-v-2 # <----- релизный артефакт в registry, прописанный в поставляемом cluster-version-operator образеПримените манифест:
oc apply -f dplus-icsp-icsp.yamlПосле применения манифеста все
machine-config-poolдолжны применить новый mirror на все nodes, в выводеoc get mcpубедиться, что nodes начали обновляться, не выполняя перезагрузку:NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-<хеш> False True False 3 3 3 0 26d worker rendered-worker-<хеш> False True False 2 2 2 0 26dПосле того, как nodes обновились (
UpdatingсталоFalse, аUpdatedсталоTrue), зайдите на любую node и убедитесь, что mirror создался:[core@master1 ~]$ cat /etc/containers/registries.conf unqualified-search-registries = ["registry.access.redhat.com", "docker.io"] [[registry]] prefix = "" location = "<path>/2.0.3/dplus-v-1" mirror-by-digest-only = true [[registry.mirror]] location = "registry.example.aa.bbb/dplus-v-1" [[registry]] prefix = "" location = "<path>/2.0.3/dplus-v-2" mirror-by-digest-only = true [[registry.mirror]] location = "registry.example.aa.bbb/dplus-v-2"Если mirror не создался, то необходимо создать его через
MachineConfig:Создайте файл
dzomirror.conf(здесь пример дляdplus-v-1):[[registry]] prefix = "" location = "<path>/dplus/2.0.3/dplus-v-1" mirror-by-digest-only = true [[registry.mirror]] location = "registry.example.aa.bbb/dplus-v-1" [[registry]] prefix = "" location = "<path>/dplus/2.0.3/dplus-v-2" mirror-by-digest-only = true [[registry.mirror]] location = "registry.example.aa.bbb/dplus-v-2"Сделайте base64 encode этого файла:
cat dzomirror.conf | base64 -w 0Создайте манифест
mirror-dplus-registries.conf(в полеsourceпосле текстаdata:text/plain;charset=utf-8;base64идет base64 строка полученная выше):mirror-dplus-registries.conf
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: master name: 99-master-registry-config spec: config: ignition: version: 3.2.0 storage: files: - contents: source: data:text/plain;charset=utf-8;base64,W1tyZWdpc3RyeV1dCiAgcHJlZml4ID0gIiIKICBsb2NhdGlvbiA9ICJkem8uc3cuc2JjLnNwYWNlL3NidF9kZXYvY2k5MDAwMDU2MF9kYXBwX2Rldi9kcGx1cy8xLjAuMC9kcGx1cy1tdnAiCiAgbWlycm9yLWJ5LWRpZ2VzdC1vbmx5ID0gdHJ1ZQoKICBbW3JlZ2lzdHJ5Lm1pcnJvcl1dCiAgICBsb2NhdGlvbiA9ICJyZWdpc3RyeS5kcGx1cy51bi5zYnQvZHBsdXMtbXZwIgoKW1tyZWdpc3RyeV1dCiAgcHJlZml4ID0gIiIKICBsb2NhdGlvbiA9ICJkem8uc3cuc2JjLnNwYWNlL3NidF9kZXYvY2k5MDAwMDU2MF9kYXBwX2Rldi9kcGx1cy8xLjAuMC9kcGx1cy1tdnAtMiIKICBtaXJyb3ItYnktZGlnZXN0LW9ubHkgPSB0cnVlCgogIFtbcmVnaXN0cnkubWlycm9yXV0KICAgIGxvY2F0aW9uID0gInJlZ2lzdHJ5LmRwbHVzLnVuLnNidC9kcGx1cy1tdnAtMiIK filesystem: root mode: 0644 path: /etc/containers/registries.conf.d/99-dplus-registries.conf --- apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: worker name: 99-worker-registry-config spec: config: ignition: version: 3.2.0 storage: files: - contents: source: data:text/plain;charset=utf-8;base64,W1tyZWdpc3RyeV1dCiAgcHJlZml4ID0gIiIKICBsb2NhdGlvbiA9ICJkem8uc3cuc2JjLnNwYWNlL3NidF9kZXYvY2k5MDAwMDU2MF9kYXBwX2Rldi9kcGx1cy8xLjAuMC9kcGx1cy1tdnAiCiAgbWlycm9yLWJ5LWRpZ2VzdC1vbmx5ID0gdHJ1ZQoKICBbW3JlZ2lzdHJ5Lm1pcnJvcl1dCiAgICBsb2NhdGlvbiA9ICJyZWdpc3RyeS5kcGx1cy51bi5zYnQvZHBsdXMtbXZwIgoKW1tyZWdpc3RyeV1dCiAgcHJlZml4ID0gIiIKICBsb2NhdGlvbiA9ICJkem8uc3cuc2JjLnNwYWNlL3NidF9kZXYvY2k5MDAwMDU2MF9kYXBwX2Rldi9kcGx1cy8xLjAuMC9kcGx1cy1tdnAtMiIKICBtaXJyb3ItYnktZGlnZXN0LW9ubHkgPSB0cnVlCgogIFtbcmVnaXN0cnkubWlycm9yXV0KICAgIGxvY2F0aW9uID0gInJlZ2lzdHJ5LmRwbHVzLnVuLnNidC9kcGx1cy1tdnAtMiIK filesystem: root mode: 0644 path: /etc/containers/registries.conf.d/99-dplus-registries.confПримените манифест:
oc apply -f mirror-dplus-registries.conf
Важно
MachineConfig объекты нужно сделать для всех ролей (master, worker и т.п.).
После применения MachineConfig nodes перезапускаются.
Запуск обновления кластера#
Важно
Перед обновлением кластера, убедитесь что все кластерные операторы доступны, выполните oc get co
Если какой-то из операторов выключен (столбец Available содержит статус False), то Cluster Version Operator заблокирует обновление, когда дойдет до выключенного оператора.
Например: если отключен оператор operator-lifecycle-manager, то это приведет к тому, что во время обновления кластера возникнет ошибка несовместимости установленных из каталога операторов (например, Jaeger или Red Hat Service Mesh) с обновляемой версией и обновление заблокируется.
Обновите кластер, передав релизный образ, например:
oc adm upgrade --force --allow-explicit-upgrade --allow-upgrade-with-warnings --to-image=registry.example.aa.bbb/<Релизный образ>
В конце процедуры кластер обновит все операторы и компоненты, которыми они управляют.
Также на nodes кластера применится ostree слой Platform V OS Core до новой версии.
Проверка обновления#
Результаты выполнения сценария обновления DropApp Plus:
Обновлен программный компонент K8SP;
Настроены хосты;
Развернут кластер DropApp Plus.
Обновление кластера OpenShift до DropApp Plus#
Шаги обновления#
Предварительно исправьте clusterversion, добавив релиз DropApp Plus в канал обновлений
stable-4.8. Для этого создайте граф обновления и скопируйте его в каталогdappвеб-сервера, доступного с nodes обновляемого кластера:dplus-upgrade.json
{ "edges": [ [ 0, 1 ] ], "nodes": [ { "version": "4.8.57", "payload": "quay.io/openshift-release-dev/ocp-release@sha256:<хеш образа>", "metadata": { "io.openshift.upgrades.graph.release.channels": "eus-4.10,candidate-4.8,eus-4.8,fast-4.8,stable-4.8,candidate-4.9,fast-4.9,stable-4.9", "io.openshift.upgrades.graph.release.manifestref": "sha256:<хеш образа>", "url": "https://access.redhat.com/errata/RHSA-2023:0237" } }, { "payload": "<parth>/dapp/2.0.0/dapp-release@sha256:<хеш образа>", "version": "4.8.57-dropappplus-2.0.0", "metadata": { "io.openshift.upgrades.graph.release.channels": "fast-4.8,stable-4.8" } } ] }Где структура файла:
"nodes"– массив узлов графа, содержит версии Openshift Container Platform/DropApp Plus;"edges"– массив граней, включает вложенные массивы, которые содержат информацию о допустимости смены версий. Версия OSP 4.8.57 в примере графа это корневой nod (индекс 0 в массиве nodes), может обновиться до версий dplus-mvp (индекс 1), dplus-mvp-2 (индекс 2) и dplus-release (индекс 3).
Примените патч:
oc patch clusterversion/version --patch '{"spec":{"upstream":"http://<path>/dappp/dplus-graph.json"}}' --type=mergeВ этом примере
http://<path>/dapppэто веб-сервер, доступный с nodes кластера.Убедитесь, что web console в канале
stable-4.8отражает версии DropApp Plus:
Примечание
Обновление через web console недоступно, поскольку образы не подписаны Red Hat. Добавление версий в канал
stable-4.8нужно для того, чтобы избежать потенциальных сопутствующих эффектов при обновлении на версию, которой изначально в канале нет.После выполнения шагов 1-3, настройте Mirroring на локальный registry и обновите кластер в соответствии с разделом «Обновление кластера» настоящего документа.
Проверка обновления#
Результаты выполнения сценария обновления OpenShift:
Обновлен кластер OpenShift до DropApp Plus;
Настроены хосты;
Развернут кластер DropApp Plus.