Инструкция по обновлению Monq до версии 8.8.0
В этом обновлении
Продукт | Новая версия |
---|---|
kubernetes | 1.31.4 |
cilium | 1.16.5 |
ingress-nginx | 1.12.0 |
postgres | 16.6 |
clickhouse | 24.8.11 |
redis | 7.4.2 |
rabbitmq | 4.0.5 |
arangodb | 3.11.12 |
victoria-metrics | 1.108.1 |
containerd | 1.7.25 |
Уровень простоя
Выполнить резервное копирование k8s master
Выполните резервное копирование сервера k8s master средствами виртуализации.
Проведение миграции 8.7.2 → 8.8.0
Требования
Для запуска обновления требуется скачать клиент управления Monq monqctl и выполнить конфигурацию контекста monqctl, если ранее не выполнялось.
Сценарии обновления
В зависимости от типа установки возможны 2 сценария обновления СПО:
- Demo-VM - контур был установлен из образа виртуальной машины Demo-VM 8.0.0, загруженной с сайта
- Промышленная установка - контур был установлен полностью вручную, включая все компоненты СПО, по Документации по развертыванию Monq версии 8.0.0
Для просмотра команд выберите вкладку, соответствующую вашему сценарию:
- 🛠️ Demo-VM
- 🚀 Пром. установка
Предрелизная подготовка
Проверить контекст monqctl и статус реестра микросервисов
# Просмотреть текущий контекст, с которым работает monqctl
monqctl config current-context
# Просмотреть статус реестра микросервисов из контекста
monqctl registry get status
# Просмотреть статус сервисов в реестре микросервисов из контекста
monqctl registry get services
Установить контекст релиза, с которым будет работать monqctl
в рамках контекста установленного Monq
Команда при этом скачивает и подготавливает релиз для установки.
monqctl release use-version 8.8.0 --product=monq
Закрытый контур / обновление из папки
На системе с доступом к сети интернет, с установленным и настроенным monqctl, выполнить экспорт релиза в папку
monqctl release version export 8.8.0 --product=monq --dest=<export directory>
После переноса папки на сервер выполнить команду с аргументом --sourceDir
monqctl release use-version 8.8.0 --product=monq --sourceDir=<папка с экспортированным обновлением>
Импорт контейнеров
Выполнить импорт контейнеров в Docker репозиторий обновляемого экземпляра Monq
- 🛠️ Demo-VM
- 🚀 Пром. установка
Закрытый контур / обновление из папки
Для установок без доступа к сети интернет необходимо выполнить команды данного раздела на системе, где такой доступ есть, после чего перенести файлы (директория monq880
) в контур.
Предварительно необходимо выполнить установку crane и helm.
Загрузить k3s:
mkdir -p monq880/binaries
wget -O monq880/binaries/k3s https://github.com/k3s-io/k3s/releases/download/v1.31.4%2Bk3s1/k3s
wget -O monq880/binaries/helm.tar.gz https://get.helm.sh/helm-v3.17.0-linux-amd64.tar.gz
wget -O monq880/binaries/crane.tar.gz \
"https://github.com/google/go-containerregistry/releases/download/v0.20.3/go-containerregistry_Linux_x86_64.tar.gz"
Загрузить container image:
sudo tar -xf monq880/binaries/crane.tar.gz -C /usr/local/bin/ crane
mkdir -p monq880/images
crane pull docker.io/rancher/mirrored-metrics-server:v0.7.2 monq880/images/metrics-server.tar
crane pull docker.io/rancher/mirrored-library-busybox:1.36.1 monq880/images/busybox.tar
crane pull docker.io/rancher/mirrored-coredns-coredns:1.12.0 monq880/images/coredns.tar
crane pull quay.io/cilium/cilium:v1.16.5 monq880/images/cilium.tar
crane pull quay.io/cilium/operator-generic:v1.16.5 monq880/images/cilium-operator.tar
crane pull registry.k8s.io/ingress-nginx/controller:v1.12.0 monq880/images/ingress-nginx.tar
crane pull registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.0 monq880/images/kube-webhook-certgen.tar
crane pull postgres:16.6 monq880/images/postgres.tar
crane pull clickhouse/clickhouse-server:24.8.11 monq880/images/clickhouse.tar
crane pull redis:7.4.2 monq880/images/redis.tar
crane pull rabbitmq:3.12.14-management monq880/images/rabbitmq312.tar
crane pull rabbitmq:3.13.7-management monq880/images/rabbitmq313.tar
crane pull rabbitmq:4.0.5-management monq880/images/rabbitmq4.tar
crane pull arangodb:3.11.12 monq880/images/arangodb.tar
crane pull victoriametrics/victoria-metrics:v1.108.1 monq880/images/victoria-metrics.tar
Загрузить helm charts:
tar -xf monq880/binaries/helm.tar.gz linux-amd64/helm
sudo mv linux-amd64/helm /usr/local/bin/
rm -r linux-amd64/
mkdir -p monq880/charts
helm repo add cilium https://helm.cilium.io/
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo add monq https://helm.monq.ru/charts
helm repo update
helm pull cilium/cilium --version 1.16.5 -d monq880/charts
helm pull ingress-nginx/ingress-nginx --version 4.12.0 -d monq880/charts
helm pull monq/postgresql --version 1.1.0 -d monq880/charts
helm pull monq/clickhouse --version 1.1.0 -d monq880/charts
helm pull monq/arangodb --version 1.1.0 -d monq880/charts
helm pull monq/victoriametrics --version 1.1.0 -d monq880/charts
helm pull monq/redis --version 1.1.0 -d monq880/charts
helm pull monq/rabbitmq --version 1.1.0 -d monq880/charts
Импортировать container image в локальный registry
crane push monq880/images/metrics-server.tar registry.in.monq.local:5000/rancher/mirrored-metrics-server:v0.7.2
crane push monq880/images/busybox.tar registry.in.monq.local:5000/rancher/mirrored-library-busybox:1.36.1
crane push monq880/images/coredns.tar registry.in.monq.local:5000/rancher/mirrored-coredns-coredns:1.12.0
crane push monq880/images/cilium.tar registry.in.monq.local:5000/cilium/cilium:v1.16.5
crane push monq880/images/cilium-operator.tar registry.in.monq.local:5000/cilium/operator-generic:v1.16.5
crane push monq880/images/ingress-nginx.tar registry.in.monq.local:5000/ingress-nginx/controller:v1.12.0
crane push monq880/images/kube-webhook-certgen.tar registry.in.monq.local:5000/ingress-nginx/kube-webhook-certgen:v1.5.0
crane push monq880/images/postgres.tar registry.in.monq.local:5000/postgres:16.6
crane push monq880/images/clickhouse.tar registry.in.monq.local:5000/clickhouse/clickhouse-server:24.8.11
crane push monq880/images/redis.tar registry.in.monq.local:5000/redis:7.4.2
crane push monq880/images/rabbitmq312.tar registry.in.monq.local:5000/rabbitmq:3.12.14-management
crane push monq880/images/rabbitmq313.tar registry.in.monq.local:5000/rabbitmq:3.13.7-management
crane push monq880/images/rabbitmq4.tar registry.in.monq.local:5000/rabbitmq:4.0.5-management
crane push monq880/images/arangodb.tar registry.in.monq.local:5000/arangodb:3.11.12
crane push monq880/images/victoria-metrics.tar registry.in.monq.local:5000/victoriametrics/victoria-metrics:v1.108.1
crane copy registry.k8s.io/kube-apiserver:v1.27.16 \
registry.in.monq.local:5000/kube-apiserver:v1.27.16
crane copy registry.k8s.io/kube-apiserver:v1.28.15 \
registry.in.monq.local:5000/kube-apiserver:v1.28.15
crane copy registry.k8s.io/kube-apiserver:v1.29.10 \
registry.in.monq.local:5000/kube-apiserver:v1.29.10
crane copy registry.k8s.io/kube-apiserver:v1.30.9 \
registry.in.monq.local:5000/kube-apiserver:v1.30.9
crane copy registry.k8s.io/kube-apiserver:v1.31.4 \
registry.in.monq.local:5000/kube-apiserver:v1.31.4
crane copy registry.k8s.io/kube-controller-manager:v1.27.16 \
registry.in.monq.local:5000/kube-controller-manager:v1.27.16
crane copy registry.k8s.io/kube-controller-manager:v1.28.15 \
registry.in.monq.local:5000/kube-controller-manager:v1.28.15
crane copy registry.k8s.io/kube-controller-manager:v1.29.10 \
registry.in.monq.local:5000/kube-controller-manager:v1.29.10
crane copy registry.k8s.io/kube-controller-manager:v1.30.9 \
registry.in.monq.local:5000/kube-controller-manager:v1.30.9
crane copy registry.k8s.io/kube-controller-manager:v1.31.4 \
registry.in.monq.local:5000/kube-controller-manager:v1.31.4
crane copy registry.k8s.io/kube-scheduler:v1.27.16 \
registry.in.monq.local:5000/kube-scheduler:v1.27.16
crane copy registry.k8s.io/kube-scheduler:v1.28.15 \
registry.in.monq.local:5000/kube-scheduler:v1.28.15
crane copy registry.k8s.io/kube-scheduler:v1.29.10 \
registry.in.monq.local:5000/kube-scheduler:v1.29.10
crane copy registry.k8s.io/kube-scheduler:v1.30.9 \
registry.in.monq.local:5000/kube-scheduler:v1.30.9
crane copy registry.k8s.io/kube-scheduler:v1.31.4 \
registry.in.monq.local:5000/kube-scheduler:v1.31.4
crane copy registry.k8s.io/kube-proxy:v1.27.16 \
registry.in.monq.local:5000/kube-proxy:v1.27.16
crane copy registry.k8s.io/kube-proxy:v1.28.15 \
registry.in.monq.local:5000/kube-proxy:v1.28.15
crane copy registry.k8s.io/kube-proxy:v1.29.10 \
registry.in.monq.local:5000/kube-proxy:v1.29.10
crane copy registry.k8s.io/kube-proxy:v1.30.9 \
registry.in.monq.local:5000/kube-proxy:v1.30.9
crane copy registry.k8s.io/kube-proxy:v1.31.4 \
registry.in.monq.local:5000/kube-proxy:v1.31.4
crane copy registry.k8s.io/etcd:3.5.12-0 \
registry.in.monq.local:5000/etcd:3.5.12-0
crane copy registry.k8s.io/etcd:3.5.15-0 \
registry.in.monq.local:5000/etcd:3.5.15-0
crane copy registry.k8s.io/coredns/coredns:v1.10.1 \
registry.in.monq.local:5000/coredns:v1.10.1
crane copy registry.k8s.io/coredns/coredns:v1.11.1 \
registry.in.monq.local:5000/coredns:v1.11.1
crane copy registry.k8s.io/coredns/coredns:v1.11.3 \
registry.in.monq.local:5000/coredns:v1.11.3
crane copy registry.k8s.io/pause:3.10 \
registry.in.monq.local:5000/pause:3.10
crane copy quay.io/cilium/cilium:v1.16.5 \
registry.in.monq.local:5000/cilium/cilium:v1.16.5
crane copy quay.io/cilium/operator-generic:v1.16.5 \
registry.in.monq.local:5000/cilium/operator-generic:v1.16.5
crane copy registry.k8s.io/ingress-nginx/controller:v1.12.0 \
registry.in.monq.local:5000/ingress-nginx/controller:v1.12.0
crane copy registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.0 \
registry.in.monq.local:5000/ingress-nginx/kube-webhook-certgen:v1.5.0
crane copy postgres:16.6 registry.in.monq.local:5000/postgres:16.6
crane copy clickhouse/clickhouse-server:24.8.11 \
registry.in.monq.local:5000/clickhouse/clickhouse-server:24.8.11
crane copy redis:7.4.2 registry.in.monq.local:5000/redis:7.4.2
crane copy rabbitmq:3.12.14-management registry.in.monq.local:5000/rabbitmq:3.12.14-management
crane copy rabbitmq:3.13.7-management registry.in.monq.local:5000/rabbitmq:3.13.7-management
crane copy rabbitmq:4.0.5-management registry.in.monq.local:5000/rabbitmq:4.0.5-management
crane copy arangodb:3.11.12 registry.in.monq.local:5000/arangodb:3.11.12
crane copy victoriametrics/victoria-metrics:v1.108.1 \
registry.in.monq.local:5000/victoriametrics/victoria-metrics:v1.108.1
Остановка Monq
Выполнить остановку микросервисов:
kubectl scale deploy -n production --replicas=0 --all
Перед остановкой Monq рекомендуем проверить и записать названия микросервисов, имеющих более одной реплики:
kubectl get deploy -n production --no-headers -o custom-columns="NAME:.metadata.name,REPLICAS:.spec.replicas" | awk '$2 > 1'
Обновление k8s
- 🛠️ Demo-VM
- 🚀 Пром. установка
В поставке Demo-VM используется k3s - это упрощенный дистрибутив Kubernetes.
K3s развертывается как один двоичный файл и поставляется со встроенными инструментами, такими как kubectl
и ctr
.
Заменить исполняемый файл и добавить права на выполнение:
mv monq880/binaries/k3s /usr/local/bin/k3s
chmod +x /usr/local/bin/k3s
Перезапустить сервис:
systemctl restart k3s
Проверить версию и убедиться, что нода перешла в статус Ready
:
kubectl get node
Сохранить values, использованные при установке cilium:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml get values -n kube-system \
cilium -o yaml > cilium-values.yaml
Внести изменения в values:
sed -i 's|kubeProxyReplacement: strict|kubeProxyReplacement: true|g' cilium-values.yaml
Выполнить обновление cilium:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml upgrade cilium \
monq880/charts/cilium-1.16.5.tgz --namespace=kube-system -f cilium-values.yaml
- Данная инструкция отражает последовательность действий для проведения обновления. В некоторых случаях необходимо адаптировать под текущую инсталляцию.
- Инструкция использует материалы из документации по обновлению kubernetes.
- Во время обновления по данной инструкции неизбежен даунтайм. Для его минимизации можно использовать приемы из документации kubernetes.
1.26 -> 1.27
Обновление master ноды
Выполнить обновление ключа репозитория kubernetes:
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
Обновить kubeadm:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.27/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.27.16-1.1 && \
apt-mark hold kubeadm
Выполнить обновление containerd:
apt install containerd.io=1.7.25-1
containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
sed -i "s|registry.k8s.io/pause:3.8|registry.in.monq.local:5000/pause:3.9|g" /etc/containerd/config.toml
systemctl restart containerd
Выполнить plan обновления и убедиться в отсутствии ошибок:
kubeadm upgrade plan v1.27.16
Применить обновление и убедиться что оно прошло успешно:
kubeadm upgrade apply v1.27.16
Обновить kubelet и kubectl:
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.27.16-1.1 kubectl=1.27.16-1.1 && \
apt-mark hold kubelet kubectl
sudo systemctl daemon-reload
sudo systemctl restart kubelet
Обновление worker нод
Выполнить обновление ключа репозитория kubernetes:
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
Обновить kubeadm:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.27/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.27.16-1.1 && \
apt-mark hold kubeadm
Выполнить обновление containerd:
apt install containerd.io=1.7.25-1
containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
sed -i "s|registry.k8s.io/pause:3.8|registry.in.monq.local:5000/pause:3.9|g" /etc/containerd/config.toml
systemctl restart containerd
Применить обновление и убедиться что оно прошло успешно:
kubeadm upgrade node
Обновить kubelet и kubectl:
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.27.16-1.1 kubectl=1.27.16-1.1 && \
apt-mark hold kubelet kubectl
systemctl daemon-reload
systemctl restart kubelet
1.27 -> 1.28
Обновление master ноды
Обновить kubeadm:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.28.15-1.1 && \
apt-mark hold kubeadm
Выполнить plan обновления и убедиться в отсутствии ошибок:
kubeadm upgrade plan v1.28.15
Применить обновление и убедиться что оно прошло успешно:
kubeadm upgrade apply v1.28.15
Обновить kubelet и kubectl:
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.28.15-1.1 kubectl=1.28.15-1.1 && \
apt-mark hold kubelet kubectl
systemctl daemon-reload
systemctl restart kubelet
Обновление worker нод
Обновить kubeadm:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.28.15-1.1 && \
apt-mark hold kubeadm
Применить обновление и убедиться что оно прошло успешно:
kubeadm upgrade node
Обновить kubelet и kubectl:
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.28.15-1.1 kubectl=1.28.15-1.1 && \
apt-mark hold kubelet kubectl
systemctl daemon-reload
systemctl restart kubelet
1.28 -> 1.29
Обновление master ноды
Обновить kubeadm:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.29.10-1.1 && \
apt-mark hold kubeadm
Выполнить plan обновления и убедиться в отсутствии ошибок:
kubeadm upgrade plan v1.29.10
Применить обновление и убедиться что оно прошло успешно:
kubeadm upgrade apply v1.29.10
Обновить kubelet и kubectl:
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.29.10-1.1 kubectl=1.29.10-1.1 && \
apt-mark hold kubelet kubectl
systemctl daemon-reload
systemctl restart kubelet
Обновление worker нод
Обновить kubeadm:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.29.10-1.1 && \
apt-mark hold kubeadm
Применить обновление и убедиться что оно прошло успешно:
kubeadm upgrade node
Обновить kubelet и kubectl:
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.29.10-1.1 kubectl=1.29.10-1.1 && \
apt-mark hold kubelet kubectl
systemctl daemon-reload
systemctl restart kubelet
1.29 -> 1.30
Обновление master ноды
Обновить kubeadm:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.30.9-1.1 && \
apt-mark hold kubeadm
Выполнить plan обновления и убедиться в отсутствии ошибок:
kubeadm upgrade plan v1.30.9
Применить обновление и убедиться что оно прошло успешно:
kubeadm upgrade apply v1.30.9
Обновить kubelet и kubectl:
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.30.9-1.1 kubectl=1.30.9-1.1 && \
apt-mark hold kubelet kubectl
systemctl daemon-reload
systemctl restart kubelet
Обновление worker нод
Обновить kubeadm:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.30.9-1.1 && \
apt-mark hold kubeadm
Применить обновление и убедиться что оно прошло успешно:
kubeadm upgrade node
Обновить kubelet и kubectl:
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.30.9-1.1 kubectl=1.30.9-1.1 && \
apt-mark hold kubelet kubectl
systemctl daemon-reload
systemctl restart kubelet
1.30 -> 1.31
Обновление master ноды
Обновить kubeadm:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.31.4-1.1 && \
apt-mark hold kubeadm
Обновить sandbox image:
sed -i "s|/pause:3.9|/pause:3.10|g" /etc/containerd/config.toml
systemctl restart containerd
Выполнить plan обновления и убедиться в отсутствии ошибок:
kubeadm upgrade plan v1.31.4
Применить обновление и убедиться что оно прошло успешно:
kubeadm upgrade apply v1.31.4
Обновить kubelet и kubectl:
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.31.4-1.1 kubectl=1.31.4-1.1 && \
apt-mark hold kubelet kubectl
systemctl daemon-reload
systemctl restart kubelet
Обновление worker нод
Обновить kubeadm:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.31.4-1.1 && \
apt-mark hold kubeadm
Обновить sandbox image:
sed -i "s|/pause:3.9|/pause:3.10|g" /etc/containerd/config.toml
systemctl restart containerd
Применить обновление и убедиться что оно прошло успешно:
kubeadm upgrade node
Обновить kubelet и kubectl:
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.31.4-1.1 kubectl=1.31.4-1.1 && \
apt-mark hold kubelet kubectl
systemctl daemon-reload
systemctl restart kubelet
Восстановить кастомную конфигурацию DNS
Если была использована кастомизация внутрикластерного dns необходимо восстановить конфигурацию:
kubectl get deploy -n kube-system coredns -o json \
| jq '.spec.template.spec.volumes |= . + [{"configMap":{"defaultMode":420,
"name":"coredns-custom", "optional":true},"name":"custom-config-volume"}]' \
| jq '.spec.template.spec.containers[0].volumeMounts |= .
+ [{"mountPath":"/etc/coredns/custom",
"name":"custom-config-volume","readOnly":true}]' \
| kubectl replace -f -
Обновление cilium
Сохранить values, использованные при установке chart:
helm get values -n kube-system cilium -o yaml > cilium-values.yaml
Обновить helm репозиторий:
helm repo update cilium
Внести изменения в values:
sed -i 's|kubeProxyReplacement: strict|kubeProxyReplacement: true|g' cilium-values.yaml
Выполнить обновление cilium:
helm upgrade cilium cilium/cilium --version 1.16.5 \
--namespace=kube-system -f cilium-values.yaml
Обновление ingress-nginx controller
- 🛠️ Demo-VM
- 🚀 Пром. установка
Сохранить 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
Выполнить обновление ingress-nginx:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml -n ingress-nginx upgrade \
ingress-nginx monq880/charts/ingress-nginx-4.12.0.tgz -f ingress-values.yaml
Сохранить values, использованные при установке chart:
helm get values -n ingress-nginx ingress-nginx -o yaml > ingress-values.yaml
Обновить helm репозиторий:
helm repo update ingress-nginx
Выполнить обновление ingress-nginx:
helm -n ingress-nginx upgrade ingress-nginx \
ingress-nginx/ingress-nginx --version 4.12.0 -f ingress-values.yaml
Обновление postgresql
- 🛠️ Demo-VM
- 🚀 Пром. установка
Выполнить запуск временного pod для снятия дампа БД:
cat <<EOF | kubectl create -f -
apiVersion: v1
kind: Pod
metadata:
name: pg-update
namespace: infra
spec:
containers:
- name: postgres
image: registry.in.monq.local:5000/postgres:16.6
command: [ "/bin/bash", "-c", "--" ]
args: [ "trap : TERM INT; sleep infinity & wait" ]
EOF
Выполнить полный дамп postgres:
PGPASSWORD=$(kubectl get secrets -n infra postgresql-secret -o jsonpath='{.data.POSTGRES_PASSWORD}' | base64 -d)
kubectl exec -it -n infra pg-update -- sh -c "PGPASSWORD=${PGPASSWORD} pg_dumpall -h postgresql -U postgres > pg_backup.sql"
kubectl cp infra/pg-update:/pg_backup.sql ./pg_backup.sql
kubectl delete po -n infra pg-update
Сохранить values, использованные при установке chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml get values -n infra \
postgresql -o yaml > postgresql-values.yaml
Остановить postgres и очистить директорию с данными:
kubectl scale sts -n infra postgresql --replicas 0
rm -rf /storage/postgresql/var/lib/postgresql/data/*
Обновить chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml -n infra upgrade \
postgresql monq880/charts/postgresql-1.1.0.tgz -f postgresql-values.yaml
Выполнить восстановление данных из бекапа:
kubectl cp ./pg_backup.sql infra/postgresql-0:/var/lib/postgresql/data/pg_backup.sql
kubectl exec -it -n infra postgresql-0 -- sh -c "PGPASSWORD=${PGPASSWORD} psql -h 127.0.0.1 -U postgres -f /var/lib/postgresql/data/pg_backup.sql"
kubectl exec -it -n infra postgresql-0 -- rm /var/lib/postgresql/data/pg_backup.sql
Обновить helm репозиторий:
helm repo update monq
Выполнить запуск временного pod для снятия дампа БД:
cat <<EOF | kubectl create -f -
apiVersion: v1
kind: Pod
metadata:
name: pg-update
namespace: infra
spec:
containers:
- name: postgres
image: registry.in.monq.local:5000/postgres:16.6
command: [ "/bin/bash", "-c", "--" ]
args: [ "trap : TERM INT; sleep infinity & wait" ]
EOF
Выполнить полный дамп postgres:
PGPASSWORD=$(kubectl get secrets -n infra postgresql-secret -o jsonpath='{.data.POSTGRES_PASSWORD}' | base64 -d)
kubectl exec -it -n infra pg-update -- sh -c "PGPASSWORD=${PGPASSWORD} pg_dumpall -h postgresql -U postgres > pg_backup.sql"
kubectl cp infra/pg-update:/pg_backup.sql ./pg_backup.sql
kubectl delete po -n infra pg-update
Сохранить values, использованные при установке chart:
helm get values -n infra postgresql -o yaml > postgresql-values.yaml
Остановить postgres:
kubectl scale sts -n infra postgresql --replicas 0
Очистить директорию с данными: ** Выполняется на сервере СУБД **
rm -rf /storage/postgresql/var/lib/postgresql/data/*
Обновить chart:
helm -n infra upgrade postgresql \
monq/postgresql --version 1.1.0 -f postgresql-values.yaml
Выполнить восстановление данных из бекапа:
kubectl cp ./pg_backup.sql infra/postgresql-0:/var/lib/postgresql/data/pg_backup.sql
kubectl exec -it -n infra postgresql-0 -- sh -c "PGPASSWORD=${PGPASSWORD} psql -h 127.0.0.1 -U postgres -f /var/lib/postgresql/data/pg_backup.sql"
kubectl exec -it -n infra postgresql-0 -- rm /var/lib/postgresql/data/pg_backup.sql
Обновление clickhouse
⚠️ Для пакетов установки Monq 7.6.1 и ниже
При обновлении clickhouse, установленного из версии 20.10 и ниже (пакет установки Monq 7.6.1 и ниже), будет произведена миграция БД с движками Ordinary в Atomic.
В процессе миграции может быть использовано дополнительное дисковое пространство, что следует учесть на больших инстансах.
Проверку наличия Ordinary БД можно произвести с помощью запроса:
select name, engine from system.databases;
- 🛠️ Demo-VM
- 🚀 Пром. установка
Добавить флаг обновления БД:
kubectl exec -it -n infra clickhouse-0 -- touch '/clickhouse/flags/convert_ordinary_to_atomic'
kubectl exec -it -n infra clickhouse-0 -- chmod 666 '/clickhouse/flags/convert_ordinary_to_atomic'
Сохранить values, использованные при установке chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml get values -n infra \
clickhouse -o yaml > clickhouse-values.yaml
Обновить chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml -n infra upgrade \
clickhouse monq880/charts/clickhouse-1.1.0.tgz -f clickhouse-values.yaml
Добавить флаг обновления БД:
kubectl exec -it -n infra clickhouse-0 -- touch '/clickhouse/flags/convert_ordinary_to_atomic'
kubectl exec -it -n infra clickhouse-0 -- chmod 666 '/clickhouse/flags/convert_ordinary_to_atomic'
Обновить helm репозиторий:
helm repo update monq
Сохранить values, использованные при установке chart:
helm get values -n infra clickhouse -o yaml > clickhouse-values.yaml
Обновить chart:
helm -n infra upgrade clickhouse \
monq/clickhouse --version 1.1.0 -f clickhouse-values.yaml
Обновление redis
- 🛠️ Demo-VM
- 🚀 Пром. установка
Сохранить values, использованные при установке chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml get values -n infra \
redis -o yaml > redis-values.yaml
Обновить chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml -n infra upgrade \
redis monq880/charts/redis-1.1.0.tgz -f redis-values.yaml
Обновить helm репозиторий:
helm repo update monq
Сохранить values, использованные при установке chart:
helm get values -n infra redis -o yaml > redis-values.yaml
Обновить chart:
helm -n infra upgrade redis \
monq/redis --version 1.1.0 -f redis-values.yaml
Обновление rabbitmq
- 🛠️ Demo-VM
- 🚀 Пром. установка
Сохранить values, использованные при установке chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml get values -n infra \
rabbitmq -o yaml > rabbitmq-values.yaml
Выполнить включение stable feature:
kubectl exec -it -n infra rabbitmq-0 -- rabbitmqctl enable_feature_flag all
Обновить chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml -n infra upgrade \
rabbitmq monq880/charts/rabbitmq-1.1.0.tgz -f rabbitmq-values.yaml \
--set application.image.tag="3.12.14-management"
Обновить chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml -n infra upgrade \
rabbitmq monq880/charts/rabbitmq-1.1.0.tgz -f rabbitmq-values.yaml \
--set application.image.tag="3.13.7-management"
Выполнить включение stable feature:
kubectl exec -it -n infra rabbitmq-0 -- rabbitmqctl enable_feature_flag all
Обновить chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml -n infra upgrade \
rabbitmq monq880/charts/rabbitmq-1.1.0.tgz -f rabbitmq-values.yaml
Выполнить включение stable feature:
kubectl exec -it -n infra rabbitmq-0 -- rabbitmqctl enable_feature_flag all
Обновить helm репозиторий:
helm repo update monq
Сохранить values, использованные при установке chart:
helm get values -n infra rabbitmq -o yaml > rabbitmq-values.yaml
Выполнить включение stable feature:
kubectl exec -it -n infra rabbitmq-0 -- rabbitmqctl enable_feature_flag all
Обновить chart:
helm -n infra upgrade rabbitmq \
monq/rabbitmq --version 1.1.0 -f rabbitmq-values.yaml \
--set application.image.tag="3.12.14-management"
Обновить chart:
helm -n infra upgrade rabbitmq \
monq/rabbitmq --version 1.1.0 -f rabbitmq-values.yaml \
--set application.image.tag="3.13.7-management"
Выполнить включение stable feature:
kubectl exec -it -n infra rabbitmq-0 -- rabbitmqctl enable_feature_flag all
Обновить chart:
helm -n infra upgrade rabbitmq \
monq/rabbitmq --version 1.1.0 -f rabbitmq-values.yaml
Выполнить включение stable feature:
kubectl exec -it -n infra rabbitmq-0 -- rabbitmqctl enable_feature_flag all
Обновление arangodb
- 🛠️ Demo-VM
- 🚀 Пром. установка
Сохранить values, использованные при установке chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml get values -n infra \
arangodb -o yaml > arangodb-values.yaml
Обновить chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml -n infra upgrade \
arangodb monq880/charts/arangodb-1.1.0.tgz -f arangodb-values.yaml
Обновить helm репозиторий:
helm repo update monq
Сохранить values, использованные при установке chart:
helm get values -n infra arangodb -o yaml > arangodb-values.yaml
Обновить chart:
helm -n infra upgrade arangodb \
monq/arangodb --version 1.1.0 -f arangodb-values.yaml
Обновление victoria-metrics
- 🛠️ Demo-VM
- 🚀 Пром. установка
Сохранить values, использованные при установке chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml get values -n infra \
victoriametrics -o yaml > victoriametrics-values.yaml
Обновить chart:
helm --kubeconfig /etc/rancher/k3s/k3s.yaml -n infra upgrade \
victoriametrics monq880/charts/victoriametrics-1.1.0.tgz -f victoriametrics-values.yaml
Обновить helm репозиторий:
helm repo update monq
Сохранить values, использованные при установке chart:
helm get values -n infra victoriametrics -o yaml > victoriametrics-values.yaml
Обновить chart:
helm -n infra upgrade victoriametrics \
monq/victoriametrics --version 1.1.0 -f victoriametrics-values.yaml
Запуск Monq
Выполнить запуск микросервисов:
kubectl scale deploy -n production --replicas=1 --all
Для микросервисов, записанных на этапе остановки Monq, вернуть прежнее значение реплик
Обновление версии Monq
Выполнить обновление и конфигурацию микросервисов
monqctl release update microservices --module=pl
- 🛠️ Demo-VM
- 🚀 Пром. установка
Удалить директорию загрузок
rm -r monq880