Апгрейды — момент, когда надёжность БД доказывается или ломается. Эта статья даёт paced, удобный для поддержки runbook апгрейда Couchbase Server под Couchbase Autonomous Operator (CAO) с нативным полем spec.paused для гейтинга прогресса между узлами. Итог: один узел за раз, окно стабилизации между swap, более ясные сигналы и большее окно rollback.
Эталонная топология
Цикл paced-апгрейда
Цели
- Апгрейд Couchbase Server с минимальным риском.
- Держать намеренное окно pause + stabilize + health check между узлами.
- Сохранять опции rollback как можно дольше.
Чеклист до апгрейда (не пропускать)
- Всё зелёное: фаза кластера
Available, нет активного rebalance, нет Warning-событий. - Бэкапы актуальны и восстанавливаемы: полный бэкап завершён; restore-drill сделан или время понято.
- Rollback-тег записан: проверить, что старый образ ещё есть и pull возможен.
- Решение по XDCR записано: отключить на prod-апгрейдах для чистого сигнала (рекомендуется) или оставить в pre-prod для отработки поведения.
Быстрые команды проверки
export ENV=dev
export REGION=west
export NS=couchbase-${ENV}-${REGION}
kubectl -n "$NS" get couchbasecluster -o wide
kubectl -n "$NS" get pods -l app=couchbase
kubectl -n "$NS" get events --field-selector type=Warning | tail -20
kubectl -n "$NS" get couchbasecluster "$NS" -o jsonpath='paused={.spec.paused} phase={.status.phase} rebalance={.status.rebalanceProgress}{"\n"}'
Пути выполнения
- Предпочтительно: запустить апгрейд из CI workflow (сначала dry-run, затем реальный).
- Fallback: запустить paced upgrade-скрипт с workstation (сначала dry-run, затем реальный).
Сигналы мониторинга (на что смотреть support)
- Образы pod: сдвиг старый → новый; идеален один swap за раз.
- Состояние pause:
spec.paused= true во время стабилизации; никогда не оставлять true без присмотра. - Rebalance: возвращается к none между swap; расследовать устойчивые rebalance.
- XDCR:
changes_leftрастёт при rebalance и спадает при стабилизации; отсутствие спада — сигнал инцидента. - Рестарты: любой неожиданный рестарт после swap — красный флаг.
Триггеры rollback
- Узел не становится healthy в окне timeout.
- Rebalance падает и не решается одним retry после расследования.
- Ошибка приложения превышает согласованную толерантность.
- XDCR не восстанавливается после согласованного recovery-окна.
- Любой bucket недоступен (missing vbuckets) — считать P1.
Post-upgrade валидация (sign-off)
- Все pod на целевом образе
- Фаза кластера
Available - Нет новых Warning-событий 30+ минут
- Бэкап успешен после апгрейда
- XDCR вернулся в steady-state (если используется)
- Дашборды приложения зелёные 30+ минут
Совет: Если нужна сначала более короткая нарративная версия, начните с обзора в блоге: Апгрейды Couchbase с CAO pause-gates.