Перейти к основному содержимому

Релиз СПО v1.5.2

Требуемые версии:

ПродуктВерсия
infra1.5.1
monq6.4.0+

В обновлении:

Будет произведено обновление rabbitmq

ПродуктНовая версия
infra1.5.2

Уровень простоя - простой на время обновления rabbitmq.

Обновление rabbitmq

Выполнить предрелизную подготовку

Проверить соответствие текущей версии инфраструктуры:

kubectl get cm -n infra infra -o=jsonpath={.data.version}

K8S (deployment, для обновления инсталляций из образа VM)

  1. Выполнить РК rabbitmq:
mkdir -p /backup/rabbitmq
rsync -av /storage/rabbitmq/* /backup/rabbitmq/
  1. Получить адрес локального docker registry:
registryUrl=$(kubectl get deploy -n infra rabbitmq -o jsonpath='{.spec.template.spec.containers[0].image}' | sed -nE 's/(.*)\/(.*)/\1/p')
  1. Скачать образы и добавить их в локальный 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
  1. Обновить 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
  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
  1. Обновить 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
  1. Выполнить проверку:
  • авторизоваться в web;
  • проверить наличие пользователей и очередей;
  • проверить наличие консьюмеров в очереди;
  • авторизоваться в интерфейсе monq и убедиться в отсутствии ошибок;
  1. Зафиксировать версию инфраструктурного релиза:
cat <<EOF | kubectl apply -f -
apiVersion: v1
data:
version: 1.5.2
kind: ConfigMap
metadata:
name: infra
namespace: infra
EOF

Дополнительно

Обновление Docker инсталляций

  1. Создать РК rabbitmq:
CONTAINER_NAME="rabbitmq"
mkdir -p /backup/${CONTAINER_NAME}
rsync -av /storage/${CONTAINER_NAME}/* /backup/${CONTAINER_NAME}/
  1. Обновить 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
  1. Создать конфигурационный файл:
echo "vm_memory_high_watermark.absolute = ${MEM_LIMIT}MB" > /storage/${CONTAINER_NAME}/opt/rabbitmq/etc/rabbitmq/rabbitmq.conf
  1. Обновить 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