Инструкция по обновлению Monq до версии 7.11.0
Предыдущая версия Monq: 7.10.0
Минимальная версия monqctl: 1.12.0
Для запуска обновления должен быть установлен клиент управления Monq - monqctl и произведена конфигурация контекста (если ранее это не выполнялось).
Полная деградация на время обновления!
Можно настроить 2 контекста для stage и production одновременно.
Токен для доступа в Monq ReleaseHub для скачивания обновления требуется получить, обратившись в поддержку Monq, либо из письма с регистрацией лицензии.
Выполнить резервное копирование k8s master средствами виртуализации
Выполнить предрелизную подготовку
Проверить контекст monqctl и статус реестра микросервисов.
# Просмотреть текущий контекст, с которым работает monqctl
monqctl config current-context
# Просмотреть статус реестра микросервисов из контекста
monqctl registry get status
# Просмотреть статус сервисов в реестре микросервисов из контекста
monqctl registry get services
Сценарии обновления
Ознакомиться до начала работ!
В зависимости от того, как Вы устанавливали Monq, возможны 2 сценария обновления СПО:
- Сценарий 1. Контур был установлен из образа виртуальной машины, загруженной с сайта (версия 7.6.1)
- Сценарий 2. Контур был установлен полностью вручную, включая все компоненты СПО, по Документации по развертыванию Monq (версия 7.6.1)
Сценарий 1: обновление установщика Demo-VM
Остановка Monq
-
Выполнить остановку микросервисов:
kubectl scale deploy -n production --replicas=0 --all
-
Выполнить остановку СУБД (при запуске в k8s):
kubectl scale sts -n infra --replicas=0 clickhouse victoriametrics arangodb redis rabbitmq postgresql
-
Выполнить бекап конфига coredns (при внесении изменений):
kubectl get cm -n kube-system coredns -o yaml | awk '!/resourceVersion/&&!/uid/' >> coredns-cm.yaml
Обновление k8s
В поставке DemoVM используется k3s - это упрощенный дистрибутив Kubernetes. K3s развертывается как один двоичный файл и поставляется со встроенными инструментами, такими как kubectl и ctr.
-
Скачать обновленную версию k3s:
wget https://github.com/k3s-io/k3s/releases/download/v1.26.6%2Bk3s1/k3s
-
Заменить исполняемый файл и добавить права на выполнение:
mv ./k3s /usr/local/bin/k3s
chmod +x /usr/local/bin/k3s
Необходимо предварительно импортировать image coredns:
# на сервере с доступом в интернет скачать image и экспортир овать файл:
ctr image pull docker.io/rancher/mirrored-coredns-coredns:1.10.1
ctr image export coredns-1.10.1.tar docker.io/rancher/mirrored-coredns-coredns:1.10.1
# перенести файл `coredns-1.10.1.tar` на обновляемый сервер и импортировать:
ctr -n=k8s.io images import coredns-1.10.1.tar
-
Перезапустить сервис:
systemctl restart k3s
-
Проверить версию и убедиться что нода перешла в статус Ready:
kubectl get node
-
Сохранить values, использованные при установке chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml get values -n kube-system \
cilium -o yaml > cilium-values.yaml
Необходимо предварительно импортировать image сilium:
# на сервере с доступом в интернет скачать image и экспортировать файл:
ctr image pull quay.io/cilium/cilium@sha256:77176464a1e11ea7e89e984ac7db365e7af39851507e94f137dcf56c87746314
ctr image pull quay.io/cilium/operator-generic@sha256:fa7003cbfdf8358cb71786afebc711b26e5e44a2ed99bd4944930bba915b8910
ctr image export cilium-1.13.3.tar \
quay.io/cilium/cilium@sha256:77176464a1e11ea7e89e984ac7db365e7af39851507e94f137dcf56c87746314 \
quay.io/cilium/operator-generic@sha256:fa7003cbfdf8358cb71786afebc711b26e5e44a2ed99bd4944930bba915b8910
# перенести файл `cilium-1.13.3.tar` на обновляемый сервер и импортировать:
ctr -n=k8s.io images import cilium-1.13.3.tar
-
Обновить repo cilium:
helm repo update cilium
-
Выполнить обновление релиза cilium:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml upgrade cilium \
cilium/cilium --version 1.13.3 --namespace=kube-system -f cilium-values.yaml
Необходимо предварительно скачать chart:
# на сервере с доступом в интернет экспортировать чарт:
helm repo add cilium https://helm.cilium.io/
helm pull cilium/cilium --version 1.13.3
# перенести файл `cilium-1.13.3.tgz` на обновляемый сервер и выпол нить обновление:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml upgrade cilium \
cilium-1.13.3.tgz --namespace=kube-system -f cilium-values.yaml
Восстановление конфигурации
- Выполнить восстанов ление конфигурации coredns (при внесении изменений):
kubectl apply -f coredns-cm.yaml
kubectl rollout restart deployment -n kube-system coredns
Обновление ingress-nginx controller
-
Сохранить values, использован ные при установке chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml get values -n ingress-nginx \
ingress-nginx -o yaml > ingress-values.yaml -
Остановить ingress-controller:
kubectl scale deploy -n ingress-nginx ingress-nginx-controller --replicas=0
Необходимо предварительно импортировать image ingress-nginx-controller:
# на сервере с доступом в интернет необходимо скачать image и экспортировать файл:
ctr image pull registry.k8s.io/ingress-nginx/controller:v1.8.0@sha256:744ae2afd433a395eeb13dc03d3313facba92e96ad71d9feaafc85925493fee3
ctr image export ingress-nginx-1.8.0.tar \
registry.k8s.io/ingress-nginx/controller:v1.8.0@sha256:744ae2afd433a395eeb13dc03d3313facba92e96ad71d9feaafc85925493fee3
# перенести файл `ingress-nginx-1.8.0.tar` на обновляемый сервер и импортиров ать:
ctr -n=k8s.io images import ingress-nginx-1.8.0.tar
-
Обновить chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml repo update ingress-nginx
-
Выполнить обновление релиза:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml -n ingress-nginx upgrade \
ingress-nginx ingress-nginx/ingress-nginx --version 4.7.0 -f ingress-values.yaml
Необходимо предварительно скачать chart:
# на сервере с доступом в интернет экспортировать чарт:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm pull ingress-nginx/ingress-nginx --version 4.7.0
# перенести файл `ingress-nginx-4.7.0.tgz` на обновляемый сервер и выполнить обновление:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml -n ingress-nginx upgrade \
ingress-nginx ingress-nginx-4.7.0.tgz -version 4.7.0 -f ingress-values.yaml
Обновление postgresql
- Скачать oci image postgresql в приватный docker registry:
crane copy postgres:12.15 registry.in.monq.local:5000/postgres:12.15
Необходимо предварительно загрузить image в приватный registry
-
Установить новую версию postgresql:
kubectl set image -n infra statefulset/postgresql postgresql=registry.in.monq.local:5000/postgres:12.15