Ручное обновление компонентов системы
В данном разделе приведены инструкции по ручному обновлению инфраструктурных компонентов системы: СУБД ClickHouse и PostgreSQL и брокера сообщений NATS.
|
Если версии компонентов значительно устарели, при запуске обновления системы отобразится сообщение с ключевыми словами Please perform a manual update postgresql to required version >= 15.0.0. |
Содержание раздела:
Обновление ClickHouse
Порядок ручного обновления ClickHouse различается в зависимости от расположения инсталляции ClickHouse.
-
Вынесенная инсталляция ClickHouse
-
ClickHouse в кластере Kubernetes
| Действия выполняются на каждом узле кластера ClickHouse. |
Чтобы обновить ClickHouse в выделенном кластере:
-
Скачайте RPM-пакеты clickhouse-client, clickhouse-common-static и clickhouse-server нужной версии из официального репозитория ClickHouse.
-
Запустите обновление:
dnf install clickhouse-client-<package_version>.rpm clickhouse-common-static-<package_version>.rpm clickhouse-server-<package_version>.rpmЗдесь:
-
<package_version>— версия скачанных пакетов, например,25.8.1.5101.
-
-
Перезапустите сервис ClickHouse:
systemctl restart clickhouse-server
|
После обновления кластера ClickHouse системным пользователям owner, writer и reader необходимо заново выдать требуемые права с помощью скрипта, приведенного ниже. Выполните скрипт на любом узле кластера ClickHouse:
|
Чтобы обновить ClickHouse в кластере Kubernetes:
-
Скачайте архив установщика новой версии системы, если еще не сделали этого.
-
Загрузите образ новой версии ClickHouse на узлы кластера, выполнив следующую команду на узле, где находится установщик:
evoctl instance upload -m evo.infra -g Clickhouse -
Перейдите в каталог с helm-чартом ClickHouse, выполнив следующую команду:
cd /opt/r-vision/infra/helm/clickhouse -
Получите параметры текущей установленной версии ClickHouse, выполнив следующие команды:
NS=<namespace> ADMIN_PASSWORD=$(kubectl get secret -n "$NS" clickhouse -o jsonpath="{.data.admin-password}" | base64 -d) SYNC_PASSWORD=$(helm get values -n "$NS" clickhouse -o json | jq -r '.clusterSettings.password // ""') PVC_SIZE=$(helm get values -n "$NS" clickhouse -o json | jq -r '.persistence.size // ""') REPLICAS=$(helm get values -n "$NS" clickhouse -o json | jq -r '.replicaCount // ""') SHARDS=$(helm get values -n "$NS" clickhouse -o json | jq -r '.shards // ""')Здесь:
-
<namespace>— название пространства имен, в котором установлена система.Вы можете получить название пространства имен, в котором установлена система, с помощью утилиты evoctl.
-
-
Проверьте возможность запуска обновления с помощью опции
--dry-run.Команда ниже только проверяет возможность запуска обновления, но не выполняет само обновление. helm upgrade -n "$NS" clickhouse ./ -f ./custom_values.yaml \ --set auth.password="${ADMIN_PASSWORD:?}" \ --set shards="${SHARDS:?}" \ --set replicaCount="${REPLICAS:?}" \ --set persistence.size="${PVC_SIZE:?}" \ --set clusterSettings.password="${SYNC_PASSWORD:?}" \ --set resources.requests.cpu=<resources_requests_cpu> \ --set resources.requests.memory=<resources_requests_memory> \ --set resources.limits.cpu=<resources_limits_cpu> \ --set resources.limits.memory=<resources_limits_memory> \ --dry-runЗдесь и далее:
-
<resources_requests_cpu>— минимальные требуемые ресурсы процессора. По умолчанию300m(30% времени одного ядра). -
<resources_requests_memory>— минимальный требуемый объем ОЗУ. По умолчанию1200Mi(1200 МиБ). -
<resources_limits_cpu>— максимальное допустимое потребление ресурсов процессора. По умолчанию300m(30% времени одного ядра). -
<resources_limits_memory>— максимальное допустимое потребление ОЗУ. По умолчанию1200Mi(1200 МиБ).
На следующий шаг можно переходить, только если при выполнении команды выше не возникло ошибок.
Могут возникнуть ошибки следующего вида:
bash: <env_name>: parameter null or not set
Здесь:
-
<env_name>— имя переменной окружения, значение которой получить не удалось: например,ADMIN_PASSWORD.
Если ошибка возникла, выполните следующие действия для каждой из переменных с ошибкой. Ниже приведен пример действий для переменной
ADMIN_PASSWORD:-
Выполните команду для получения значения переменной вручную:
kubectl get secret -n "$NS" clickhouse -o jsonpath="{.data.admin-password}" | base64 -d -
Присвойте переменной результат выполнения предыдущей команды:
ADMIN_PASSWORD=<admin_password>Здесь:
-
<admin_password>— пароль администратора ClickHouse, полученный на предыдущем шаге.
-
-
Получив значения всех переменных, повторите команду проверки возможности обновления:
helm upgrade -n "$NS" clickhouse ./ -f ./custom_values.yaml \ --set auth.password="${ADMIN_PASSWORD:?}" \ --set shards="${SHARDS:?}" \ --set replicaCount="${REPLICAS:?}" \ --set persistence.size="${PVC_SIZE:?}" \ --set clusterSettings.password="${SYNC_PASSWORD:?}" \ --set resources.requests.cpu=<resources_requests_cpu> \ --set resources.requests.memory=<resources_requests_memory> \ --set resources.limits.cpu=<resources_limits_cpu> \ --set resources.limits.memory=<resources_limits_memory> \ --dry-run -
Если повторная проверка возможности обновления не выявила ошибок, переходите к следующему шагу. В противном случае обратитесь в службу поддержки по адресу support@rvision.ru.
-
-
Запустите обновление ClickHouse:
helm upgrade -n "$NS" clickhouse ./ -f ./custom_values.yaml \ --set auth.password="${ADMIN_PASSWORD:?}" \ --set shards="${SHARDS:?}" \ --set replicaCount="${REPLICAS:?}" \ --set persistence.size="${PVC_SIZE:?}" \ --set clusterSettings.password="${SYNC_PASSWORD:?}" \ --set resources.requests.cpu=<resources_requests_cpu> \ --set resources.requests.memory=<resources_requests_memory> \ --set resources.limits.cpu=<resources_limits_cpu> \ --set resources.limits.memory=<resources_limits_memory> -
Убедитесь, что обновление выполнилось успешно. Для этого запустите мониторинг подов ClickHouse, выполнив следующую команду:
kubectl get pod -n "$NS" -l app.kubernetes.io/instance=clickhouse --watchПосле выполнения команды состояние каждого пода начнет выводиться в консоль в реальном времени. При успешном обновлении все поды будут иметь статус
Running.Чтобы прекратить наблюдение за состоянием подов, нажмите на сочетание клавиш CTRL+C.
Обновление PostgreSQL
Порядок ручного обновления PostgreSQL различается в зависимости от расположения инсталляции PostgreSQL.
-
PostgreSQL в кластере Kubernetes
-
Вынесенная инсталляция PostgreSQL
|
При обновлении PostgreSQL до новой мажорной версии (например, с 14 до 15) требуется перенос данных между версиями: создание полного дампа всех баз данных в предыдущей версии PostgreSQL и восстановление из него в новой версии. Следуйте приведенным ниже инструкциям очень внимательно, поскольку ошибочные действия могут привести к потере данных. |
-
Выведите подробный список всех баз данных, выполнив следующие команды:
NS=<namespace> kubectl exec -n "$NS" sts/postgresql -- psql -U postgres -c '\l+'Здесь:
-
<namespace>— название пространства имен, в котором установлена система.Вы можете получить название пространства имен, в котором установлена система, с помощью утилиты evoctl.
-
-
Сохраните отобразившийся список. Он потребуется вам для контроля восстановления из дампа в конце процедуры обновления.
-
Оцените суммарный объем дискового пространства, занимаемый всеми базами данных PostgreSQL, выполнив следующую команду:
kubectl exec -n "$NS" sts/postgresql -- psql -U postgres -c 'SELECT pg_size_pretty(SUM(pg_database_size(pg_database.datname))) AS "TotalSize" FROM pg_database;' -
Создайте каталог для дампа на диске, на котором свободного пространства не меньше, чем размер баз данных, оцененный на предыдущем шаге:
DUMP_DIR=<path_to_dump_dir> mkdir -pv "$DUMP_DIR"Здесь:
-
<path_to_dump_dir>— путь к каталогу для дампа.
-
-
Создайте дамп, выполнив следующую команду:
kubectl exec -n "$NS" sts/postgresql -- pg_dumpall -U postgres --clean --if-exists --load-via-partition-root --quote-all-identifiers --no-password > "$DUMP_DIR"/fulldump.pgdump -
Выполните базовую проверку корректности дампа.
Если хотя бы одна из нижеследующих проверок не будет пройдена, это значит, что дамп некорректен. Убедитесь, что в каталоге для дампа достаточно свободного места, и создайте дамп заново.
Критерием полной корректности дампа является только успешное восстановление из него.
-
Убедитесь, что размер резервной копии составляет не менее 200 КБ, выполнив следующую команду:
du -hs "$DUMP_DIR"/fulldump.pgdump -
Проверьте заголовок файла дампа, выполнив следующую команду:
head "$DUMP_DIR"/fulldump.pgdumpЗаголовок файла дампа должен содержать следующую строку:
PostgreSQL database cluster dump
-
Проверьте конец файла дампа, выполнив следующую команду:
tail "$DUMP_DIR"/fulldump.pgdumpКонец файла дампа должен содержать следующие строки:
PostgreSQL database dump complete PostgreSQL database cluster dump complete
-
-
Скачайте архив установщика новой версии системы, если еще не сделали этого.
-
Загрузите образ новой версии PostgreSQL на узлы кластера, выполнив следующую команду на узле, где находится установщик:
evoctl instance upload -m evo.infra -g PostgreSQL -
Перейдите в каталог с helm-чартом PostgreSQL, выполнив следующую команду:
cd /opt/r-vision/infra/helm/postgresql -
Получите параметры текущей установленной версии PostgreSQL, выполнив следующие команды:
POSTGRES_USER=$(helm get values -n "$NS" postgresql -o json | jq -r '.global.postgresql.auth.username // ""') POSTGRES_PASSWORD=$(helm get values -n "$NS" postgresql -o json | jq -r '.global.postgresql.auth.password // ""') # Имя базы данных может быть определено либо в Helm Values, либо в секрете Kubernetes. # Если оно не определено ни в одном из этих элементов конфигурации, используется имя базы данных по умолчанию "evo". POSTGRES_DBNAME=$(helm get values -n "$NS" postgresql -o json | jq -r '.global.postgresql.auth.database // ""') [ "$POSTGRES_DBNAME" ] || POSTGRES_DBNAME=$(kubectl get secret -n "$NS" evo.infra.global -o jsonpath="{.data.POSTGRES_DBNAME}" | base64 -d) [ "$POSTGRES_DBNAME" ] || POSTGRES_DBNAME=evo # Проверяется минимальный размер PVC для PostgreSQL. Если он составлял менее 8 ГиБ, при обновлении он устанавливается в 8 ГиБ. PVC_SIZE=$(kubectl get pvc -n "$NS" -l app.kubernetes.io/instance=postgresql -o jsonpath='{.items[0].spec.resources.requests.storage}') [ "${PVC_SIZE%Gi}" -ge 8 ] || PVC_SIZE="8Gi" -
Проверьте возможность запуска обновления с помощью опции
--dry-run.Команда ниже только проверяет возможность запуска обновления, но не выполняет само обновление. helm upgrade -i -n "$NS" postgresql ./ -f ./custom_values.yaml \ --set primary.persistence.size="${PVC_SIZE:?}" \ --set global.postgresql.auth.username="${POSTGRES_USER:?}" \ --set global.postgresql.auth.database="${POSTGRES_DBNAME:?}" \ --set-literal global.postgresql.auth.password="${POSTGRES_PASSWORD:?}" \ --set-literal global.postgresql.auth.postgresPassword="${POSTGRES_PASSWORD:?}" \ --set primary.resources.requests.cpu=<primary_resources_requests_cpu> \ --set primary.resources.requests.memory=<primary_resources_requests_memory> \ --set primary.resources.limits.cpu=<primary_resources_limits_cpu> \ --set primary.resources.limits.memory=<primary_resources_limits_memory> \ --dry-runЗдесь и далее:
-
<primary_resources_requests_cpu>— минимальные требуемые ресурсы процессора. По умолчанию100m(10% времени одного ядра). -
<primary_resources_requests_memory>— минимальный требуемый объем ОЗУ. По умолчанию128Mi(128 МиБ). -
<primary_resources_limits_cpu>— максимальное допустимое потребление ресурсов процессора. По умолчанию1(100% времени одного ядра). -
<primary_resources_limits_memory>— максимальное допустимое потребление ОЗУ. По умолчанию1024Mi(1024 МиБ).
На следующий шаг можно переходить, только если при выполнении команды выше не возникло ошибок.
Могут возникнуть ошибки следующего вида:
bash: <env_name>: parameter null or not set
Здесь:
-
<env_name>— имя переменной окружения, значение которой получить не удалось: например,POSTGRES_USER.
Если ошибка возникла, выполните следующие действия для каждой из переменных с ошибкой. Ниже приведен пример действий для переменной
POSTGRES_USER:-
Выполните команду для получения значения переменной вручную:
helm get values -n "$NS" postgresql -o json | jq -r '.global.postgresql.auth.username // ""' -
Присвойте переменной результат выполнения предыдущей команды:
POSTGRES_USER=<postgres_user>Здесь:
-
<postgres_user>— имя системного пользователя PostgreSQL, полученное на предыдущем шаге.
-
-
Получив значения всех переменных, повторите команду проверки возможности обновления:
helm upgrade -i -n "$NS" postgresql ./ -f ./custom_values.yaml \ --set primary.persistence.size="${PVC_SIZE:?}" \ --set global.postgresql.auth.username="${POSTGRES_USER:?}" \ --set global.postgresql.auth.database="${POSTGRES_DBNAME:?}" \ --set-literal global.postgresql.auth.password="${POSTGRES_PASSWORD:?}" \ --set-literal global.postgresql.auth.postgresPassword="${POSTGRES_PASSWORD:?}" \ --set primary.resources.requests.cpu=<primary_resources_requests_cpu> \ --set primary.resources.requests.memory=<primary_resources_requests_memory> \ --set primary.resources.limits.cpu=<primary_resources_limits_cpu> \ --set primary.resources.limits.memory=<primary_resources_limits_memory> \ --dry-run -
Если повторная проверка возможности обновления не выявила ошибок, переходите к следующему шагу. В противном случае обратитесь в службу поддержки по адресу support@rvision.ru.
-
-
Удалите предыдущий установленный релиз PostgreSQL и его ресурсы PVC:
helm uninstall -n "$NS" postgresql --wait --debug kubectl delete pvc -n "$NS" -l app.kubernetes.io/instance=postgresql --wait -
Установите новую версию PostgreSQL:
helm upgrade -i -n "$NS" postgresql ./ -f ./custom_values.yaml \ --set primary.persistence.size="${PVC_SIZE:?}" \ --set global.postgresql.auth.username="${POSTGRES_USER:?}" \ --set global.postgresql.auth.database="${POSTGRES_DBNAME:?}" \ --set-literal global.postgresql.auth.password="${POSTGRES_PASSWORD:?}" \ --set-literal global.postgresql.auth.postgresPassword="${POSTGRES_PASSWORD:?}" \ --set primary.resources.requests.cpu=<primary_resources_requests_cpu> \ --set primary.resources.requests.memory=<primary_resources_requests_memory> \ --set primary.resources.limits.cpu=<primary_resources_limits_cpu> \ --set primary.resources.limits.memory=<primary_resources_limits_memory> -
Убедитесь, что обновление выполнилось успешно. Для этого запустите мониторинг подов PostgreSQL, выполнив следующую команду:
kubectl get pod -n "$NS" -l app.kubernetes.io/instance=postgresql --watchПосле выполнения команды состояние каждого пода начнет выводиться в консоль в реальном времени. При успешном обновлении все поды будут иметь статус
Running.Чтобы прекратить наблюдение за состоянием подов, нажмите на сочетание клавиш CTRL+C.
-
Восстановите данные из дампа, выполнив следующую команду:
kubectl exec -n "$NS" -i sts/postgresql -- psql -U postgres -f - < "$DUMP_DIR"/fulldump.pgdump -
Выведите подробный список всех баз данных, выполнив следующую команду:
kubectl exec -n "$NS" sts/postgresql -- psql -U postgres -c '\l+'Убедитесь, что список соответствует списку баз данных до обновления, полученному на шагах 1—2.
Для обновления вынесенной инсталляции PostgreSQL воспользуйтесь руководством в официальной документации PostgreSQL.
Обновление NATS
|
В системе установлены несколько экземпляров NATS, с каждым из которых связан отдельный helm-чарт:
Каждый из этих чартов необходимо обновить отдельно. |
Чтобы обновить брокер сообщений NATS, выполните следующие действия:
-
Скачайте архив установщика новой версии системы, если еще не сделали этого.
-
Загрузите образ новой версии NATS на узлы кластера, выполнив следующую команду на узле, где находится установщик:
evoctl instance upload -m evo.infra -g Nats -
Создайте переменную для названия пространства имен, в котором установлена система, если ранее не сделали этого:
NS=<namespace>Здесь:
-
<namespace>— название пространства имен, в котором установлена система.
-
-
Обновите чарты экземпляров NATS, для которых это требуется:
Обновление чарта nats-bridge
Чтобы обновить чарт nats-bridge, выполните следующие действия:
-
Перейдите в каталог с чартом
nats-bridge, выполнив следующую команду:cd /opt/r-vision/infra/helm/nats-bridge -
Проверьте возможность запуска обновления с помощью опции
--dry-run.Команда ниже только проверяет возможность запуска обновления, но не выполняет само обновление. helm upgrade -i -n "$NS" nats-bridge ./ -f ./custom_values.yaml \ --set container.merge.resources.requests.cpu=<bridge_resources_requests_cpu> \ --set container.merge.resources.requests.memory=<bridge_resources_requests_memory> \ --set container.merge.resources.limits.cpu=<bridge_resources_limits_cpu> \ --set container.merge.resources.limits.memory=<bridge_resources_limits_memory> \ --set container.env.GOMEMLIMIT=<bridge_gomemlimit> \ --dry-runЗдесь и далее:
-
<bridge_resources_requests_cpu>— минимальные требуемые ресурсы процессора дляnats-bridge. По умолчанию250m(25% времени одного ядра). -
<bridge_resources_requests_memory>— минимальный требуемый объем ОЗУ дляnats-bridge. По умолчанию128Mi(128 МиБ). -
<bridge_resources_limits_cpu>— максимальное допустимое потребление ресурсов процессора дляnats-bridge. По умолчанию4(100% времени 4 ядер). -
<bridge_resources_limits_memory>— максимальное допустимое потребление ОЗУ дляnats-bridge. По умолчанию8192Mi(8192 МиБ). -
<bridge_gomemlimit>— переменная окружения Go, задающая лимит памяти дляnats-bridge. По умолчанию6144MiB(6144 МиБ).
На следующий шаг можно переходить, только если при выполнении команды выше не возникло ошибок. В противном случае обратитесь в службу поддержки по адресу support@rvision.ru. -
-
Установите новую версию NATS для
nats-bridge:helm upgrade -i -n "$NS" nats-bridge ./ -f ./custom_values.yaml \ --set container.merge.resources.requests.cpu=<bridge_resources_requests_cpu> \ --set container.merge.resources.requests.memory=<bridge_resources_requests_memory> \ --set container.merge.resources.limits.cpu=<bridge_resources_limits_cpu> \ --set container.merge.resources.limits.memory=<bridge_resources_limits_memory> \ --set container.env.GOMEMLIMIT=<bridge_gomemlimit>Если при обновлении произойдет ошибка, связанная с изменением структуры чарта, удалите предыдущий релиз чарта:
helm uninstall <namespace> nats-bridgeЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
Затем запустите установку новой версии NATS повторно.
-
-
Убедитесь, что обновление выполнилось успешно. Для этого запустите мониторинг подов
nats-bridge, выполнив следующую команду:kubectl get pod -n "$NS" -l app.kubernetes.io/instance=nats-bridge --watchПосле выполнения команды состояние каждого пода начнет выводиться в консоль в реальном времени. При успешном обновлении все поды будут иметь статус
Running.Чтобы прекратить наблюдение за состоянием подов, нажмите на сочетание клавиш CTRL+C.
Обновление чарта nats-main
Чтобы обновить чарт nats-main, выполните следующие действия:
-
Перейдите в каталог с чартом
nats-main, выполнив следующую команду:cd /opt/r-vision/infra/helm/nats-main -
Проверьте, что размер PVC для
nats-mainсоставляет не менее 60 ГиБ, выполнив следующие команды:PVC_SIZE_OLD=$(helm get values -n "$NS" nats-main -o json | jq -r '.config.jetstream.fileStore.pvc.size // ""') PVC_SIZE=$(kubectl get pvc -n "$NS" -l app.kubernetes.io/instance=nats-main -o jsonpath='{.items[0].spec.resources.requests.storage}') [ "${PVC_SIZE%Gi}" -ge 60 ] || PVC_SIZE="60Gi" echo "PVC_SIZE_OLD $PVC_SIZE_OLD" echo "PVC_SIZE $PVC_SIZE" -
Если значения переменных
PVC_SIZE_OLDиPVC_SIZEразличаются, это означает, что размер PVC дляnats-main— менее 60 ГиБ и его необходимо увеличить для корректной работы системы. Для этого выполните следующие команды:[ "${PVC_SIZE_OLD:?}" = "${PVC_SIZE:?}" ] || { for _pvc in $(kubectl get pvc -n "$NS" -l app.kubernetes.io/instance=nats-main -o name); do kubectl patch -n "$NS" "$_pvc" -p "{\"spec\":{\"resources\":{\"requests\":{\"storage\":\"$PVC_SIZE\"}}}}" done kubectl patch secret -n "$NS" evo.infra.global -p="{\"stringData\":{\"NATS_STORAGE_SIZE\":\"$PVC_SIZE\"}}" helm uninstall -n "$NS" nats-main } -
Проверьте возможность запуска обновления с помощью опции
--dry-run.Команда ниже только проверяет возможность запуска обновления, но не выполняет само обновление. helm upgrade -i -n "$NS" nats-main ./ -f ./custom_values.yaml \ --set container.merge.resources.requests.cpu=<main_resources_requests_cpu> \ --set container.merge.resources.requests.memory=<main_resources_requests_memory> \ --set container.merge.resources.limits.cpu=<main_resources_limits_cpu> \ --set container.merge.resources.limits.memory=<main_resources_limits_memory> \ --set container.env.GOMEMLIMIT=<main_gomemlimit> \ --dry-runЗдесь и далее:
-
<main_resources_requests_cpu>— минимально требуемые ресурсы процессора дляnats-main. По умолчанию500m(50% времени одного ядра). -
<main_resources_requests_memory>— минимально требуемый объем ОЗУ дляnats-main. По умолчанию1024Mi(1024 МиБ). -
<main_resources_limits_cpu>— максимально допустимое потребление ресурсов процессора дляnats-main. По умолчанию4(100% времени 4 ядер). -
<main_resources_limits_memory>— максимально допустимое потребление ОЗУ дляnats-main. По умолчанию8192Mi(8192 МиБ). -
<main_gomemlimit>— переменная окружения Go, задающая лимит памяти дляnats-main. По умолчанию6144MiB(6144 МиБ).
На следующий шаг можно переходить, только если при выполнении команды выше не возникло ошибок. В противном случае обратитесь в службу поддержки по адресу support@rvision.ru. -
-
Установите новую версию NATS для
nats-main:helm upgrade -i -n "$NS" nats-main ./ -f ./custom_values.yaml \ --set container.merge.resources.requests.cpu=<main_resources_requests_cpu> \ --set container.merge.resources.requests.memory=<main_resources_requests_memory> \ --set container.merge.resources.limits.cpu=<main_resources_limits_cpu> \ --set container.merge.resources.limits.memory=<main_resources_limits_memory> \ --set container.env.GOMEMLIMIT=<main_gomemlimit>Если при обновлении произойдет ошибка, связанная с изменением структуры чарта, удалите предыдущий релиз чарта:
helm uninstall <namespace> nats-mainЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
Затем запустите установку новой версии NATS повторно.
-
-
Убедитесь, что обновление выполнилось успешно. Для этого запустите мониторинг подов
nats-main, выполнив следующую команду:kubectl get pod -n "$NS" -l app.kubernetes.io/instance=nats-main --watchПосле выполнения команды состояние каждого пода начнет выводиться в консоль в реальном времени. При успешном обновлении все поды будут иметь статус
Running.Чтобы прекратить наблюдение за состоянием подов, нажмите на сочетание клавиш CTRL+C.
Обновление чарта nats-space
Чтобы обновить чарт nats-space, выполните следующие действия:
-
Перейдите в каталог с чартом
nats-space, выполнив следующую команду:cd /opt/r-vision/infra/helm/nats-space -
Создайте переменную, хранящую размер PVC для
nats-space:PVC_SIZE=$(helm get values -n "$NS" nats-space -o json | jq -r '.config.jetstream.fileStore.pvc.size // ""') -
Создайте переменную, хранящую идентификатор пространства NATS:
SPACE_ID=$(kubectl get cm -n "$NS" space-controller-extravars -o jsonpath='{.data.SPACE_ID}') -
Проверьте возможность запуска обновления с помощью опции
--dry-run.Команда ниже только проверяет возможность запуска обновления, но не выполняет само обновление. helm upgrade -i -n "$NS" nats-space ./ -f ./custom_values.yaml \ --set config.jetstream.fileStore.pvc.size="${PVC_SIZE:?}" \ --set config.jetstream.merge.domain="${SPACE_ID:?}" \ --set container.merge.resources.requests.cpu=<space_resources_requests_cpu> \ --set container.merge.resources.requests.memory=<space_resources_requests_memory> \ --set container.merge.resources.limits.cpu=<space_resources_limits_cpu> \ --set container.merge.resources.limits.memory=<space_resources_limits_memory> \ --set container.env.GOMEMLIMIT=<space_gomemlimit> \ --dry-runЗдесь и далее:
-
<space_resources_requests_cpu>— минимальные требуемые ресурсы процессора дляnats-space. По умолчанию250m(25% времени одного ядра). -
<space_resources_requests_memory>— минимальный требуемый объем ОЗУ дляnats-space. По умолчанию1024Mi(1024 МиБ). -
<space_resources_limits_cpu>— максимальное допустимое потребление ресурсов процессора дляnats-space. По умолчанию4(100% времени 4 ядер). -
<space_resources_limits_memory>— максимальное допустимое потребление ОЗУ дляnats-space. По умолчанию8192Mi(8192 МиБ). -
<space_gomemlimit>— переменная окружения Go, задающая лимит памяти дляnats-space. По умолчанию6144MiB(6144 МиБ).
На следующий шаг можно переходить, только если при выполнении команды выше не возникло ошибок. В противном случае обратитесь в службу поддержки по адресу support@rvision.ru. -
-
Установите новую версию NATS для
nats-space:helm upgrade -i -n "$NS" nats-space ./ -f ./custom_values.yaml \ --set config.jetstream.fileStore.pvc.size="${PVC_SIZE:?}" \ --set config.jetstream.merge.domain="${SPACE_ID:?}" \ --set container.merge.resources.requests.cpu=<space_resources_requests_cpu> \ --set container.merge.resources.requests.memory=<space_resources_requests_memory> \ --set container.merge.resources.limits.cpu=<space_resources_limits_cpu> \ --set container.merge.resources.limits.memory=<space_resources_limits_memory> \ --set container.env.GOMEMLIMIT=<space_gomemlimit>Если при обновлении произойдет ошибка, связанная с изменением структуры чарта, удалите предыдущий релиз чарта:
helm uninstall <namespace> nats-spaceЗдесь:
-
<namespace>— название пространства имен, в котором установлена система.
Затем запустите установку новой версии NATS повторно.
-
-
Убедитесь, что обновление выполнилось успешно. Для этого запустите мониторинг подов
nats-space, выполнив следующую команду:kubectl get pod -n "$NS" -l app.kubernetes.io/instance=nats-space --watchПосле выполнения команды состояние каждого пода начнет выводиться в консоль в реальном времени. При успешном обновлении все поды будут иметь статус
Running.Чтобы прекратить наблюдение за состоянием подов, нажмите на сочетание клавиш CTRL+C.
Была ли полезна эта страница?