Релиз СПО v1.5.2
Требуемые версии:
Продукт | Версия |
---|---|
infra | 1.5.1 |
monq | 6.4.0+ |
В обновлении:
Будет произведено обновление rabbitmq
Продукт | Новая версия |
---|---|
infra | 1.5.2 |
Уровень простоя - простой на время обновления rabbitmq.
Обновление rabbitmq
Выполнить предрелизную подготовку
Проверить соответствие текущей версии инфраструктуры:
kubectl get cm -n infra infra -o=jsonpath={.data.version}
K8S (deployment, для обновления инсталляций из образа VM)
- Выполнить РК rabbitmq:
mkdir -p /backup/rabbitmq
rsync -av /storage/rabbitmq/* /backup/rabbitmq/
- Получить адрес локального docker registry:
registryUrl=$(kubectl get deploy -n infra rabbitmq -o jsonpath='{.spec.template.spec.containers[0].image}' | sed -nE 's/(.*)\/(.*)/\1/p')
- Скачать образы и добавить их в локальный docker registry (необходимо наличие доступа в сеть Интернет):
docker pull rabbitmq:3.7.28-management
docker tag rabbitmq:3.7.28-management ${registryUrl}/rabbitmq:3.7.28-management
docker push ${registryUrl}/rabbitmq:3.7.28-management
docker rmi rabbitmq:3.7.28-management
docker pull rabbitmq:3.9.7-management
docker tag rabbitmq:3.9.7-management ${registryUrl}/rabbitmq:3.9.7-management
docker push ${registryUrl}/rabbitmq:3.9.7-management
docker rmi rabbitmq:3.9.7-management
В случае отсутствия доступа в сеть Интернет необходимо выполнить следующие действия:
На пк с доступом в сеть Интернет скачать images и сохранить в файл:
docker pull rabbitmq:3.7.28-management
docker pull rabbitmq:3.9.7-management
docker save -o rabbitmq.img rabbitmq:3.7.28-management rabbitmq:3.9.7-management
Передать файл rabbitmq.img
на сервер monq, выполнить импорт и добавить образы в локальный registry:
docker load -i rabbitmq.img
docker tag rabbitmq:3.7.28-management ${registryUrl}/rabbitmq:3.7.28-management
docker push ${registryUrl}/rabbitmq:3.7.28-management
docker rmi rabbitmq:3.7.28-management
docker tag rabbitmq:3.9.7-management ${registryUrl}/rabbitmq:3.9.7-management
docker push ${registryUrl}/rabbitmq:3.9.7-management
docker rmi rabbitmq:3.9.7-management
- Обновить rabbitmq до версии 3.7.28(выполняется если rabbitmq < 3.7.28):
kubectl scale deploy -n infra rabbitmq --replicas=0
kubectl set image -n infra deployment/rabbitmq rabbitmq=${registryUrl}/rabbitmq:3.7.28-management
kubectl scale deploy -n infra rabbitmq --replicas=1
- Создать конфигурационный файл:
cat <<EOF | kubectl apply -f -
kind: ConfigMap
apiVersion: v1
metadata:
name: rabbitmq-configuration
namespace: infra
data:
rabbitmq.conf: |
vm_memory_high_watermark.absolute = 600MiB
EOF
- Обновить rabbitmq до версии 3.9.7:
kubectl scale deploy -n infra rabbitmq --replicas=0
kubectl set env -n infra deployment/rabbitmq RABBITMQ_VM_MEMORY_HIGH_WATERMARK- RABBITMQ_LOGS- RABBITMQ_DEFAULT_USER- RABBITMQ_DEFAULT_PASS-
kubectl patch deploy -n infra rabbitmq --type='json' \
-p='[{"op": "add", "path": "/spec/template/spec/volumes/-",
"value":{"configMap": {"name": "rabbitmq-configuration"},"name": "rabbitmq-configuration-volume"}},
{"op": "add", "path": "/spec/template/spec/containers/0/volumeMounts/-",
"value":{"mountPath": "/opt/rabbitmq/etc/rabbitmq/rabbitmq.conf","name": "rabbitmq-configuration-volume","subPath": "rabbitmq.conf"}}]'
kubectl set env -n infra deployment/rabbitmq RABBITMQ_CONFIG_FILE=/opt/rabbitmq/etc/rabbitmq/rabbitmq.conf
kubectl set image -n infra deployment/rabbitmq rabbitmq=${registryUrl}/rabbitmq:3.9.7-management
kubectl scale deploy -n infra rabbitmq --replicas=1
- Выполнить проверку:
- авторизоваться в web;
- проверить наличие пользователей и очередей;
- проверить наличие консьюмеров в очереди;
- авторизоваться в интерфейсе monq и убедиться в отсутствии ошибок;
- Зафиксировать версию инфраструктурного релиза:
cat <<EOF | kubectl apply -f -
apiVersion: v1
data:
version: 1.5.2
kind: ConfigMap
metadata:
name: infra
namespace: infra
EOF
Дополнительно
Обновление Docker инсталляций
- Создать РК rabbitmq:
CONTAINER_NAME="rabbitmq"
mkdir -p /backup/${CONTAINER_NAME}
rsync -av /storage/${CONTAINER_NAME}/* /backup/${CONTAINER_NAME}/
- Обновить rabbitmq до версии 3.7.28(выполняется если rabbitmq < 3.7.28):
CONTAINER_NAME="rabbitmq"
VERSION="3.7.28"
# установить в переменную текущее значение ограничения памяти в мегабайтах
MEM_LIMIT="600"
docker stop ${CONTAINER_NAME}
docker rm ${CONTAINER_NAME}
docker run -d --name ${CONTAINER_NAME} \
-h ${CONTAINER_NAME} \
-p 5672:5672 \
-p 15672:15672 \
--restart=unless-stopped \
-v /storage/${CONTAINER_NAME}/var/lib/rabbitmq:/var/lib/rabbitmq \
-e RABBITMQ_VM_MEMORY_HIGH_WATERMARK=${MEM_LIMIT}MiB \
-e RABBITMQ_LOGS=- \
-e RABBITMQ_SASL_LOGS=- \
-e HOME=/var/lib/rabbitmq \
rabbitmq:${VERSION}-management
- Создать конфигурационный файл:
echo "vm_memory_high_watermark.absolute = ${MEM_LIMIT}MB" > /storage/${CONTAINER_NAME}/opt/rabbitmq/etc/rabbitmq/rabbitmq.conf
- Обновить rabbitmq до версии 3.9.7:
CONTAINER_NAME="rabbitmq"
VERSION="3.9.7"
docker stop ${CONTAINER_NAME}
docker rm ${CONTAINER_NAME}
docker run -d --name ${CONTAINER_NAME} \
-h ${CONTAINER_NAME} \
-p 5672:5672 \
-p 15672:15672 \
--restart=unless-stopped \
-v /storage/${CONTAINER_NAME}/var/lib/rabbitmq:/var/lib/rabbitmq \
-v /storage/${CONTAINER_NAME}/opt/rabbitmq/etc/rabbitmq:/opt/rabbitmq/etc/rabbitmq \
-e RABBITMQ_CONFIG_FILE=/opt/rabbitmq/etc/rabbitmq/rabbitmq.conf \
-e HOME=/var/lib/rabbitmq \
rabbitmq:${VERSION}-management