Add pipline/deploy_postgres-compose/readme.MD
This commit is contained in:
parent
de5d662f95
commit
dfaa7e3328
123
pipline/deploy_postgres-compose/readme.MD
Normal file
123
pipline/deploy_postgres-compose/readme.MD
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
### 📝 Описание пайплайна развёртыванияя PostgreSQL-сервиса через Docker Compose
|
||||||
|
|
||||||
|
Данный пайплайн предназначен для **безопасного и гибкого развёртывания контейнеризованного PostgreSQL-сервиса** на удалённых хостах с использованием `docker compose` и mTLS-аутентификации. Поддерживает развёртывание на нескольких серверах в **`dev`-окружении** с предварительной настройкой контекста и параметризацией конфигурации.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### Условия запуска
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
workflow:
|
||||||
|
rules:
|
||||||
|
- if: $CI_PIPELINE_SOURCE == "push"
|
||||||
|
when: never
|
||||||
|
- when: always
|
||||||
|
```
|
||||||
|
|
||||||
|
- Пайплайн **не запускается автоматически при `push`** (например, при коммите в ветку)
|
||||||
|
- Может быть запущен **вручную** через интерфейс GitLab или API
|
||||||
|
- Это предотвращает случайные деплои и обеспечивает контроль над процессом
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### Основные переменные (с параметризацией)
|
||||||
|
|
||||||
|
Пайплайн использует **настраиваемые CI-переменные**, доступные при запуске:
|
||||||
|
|
||||||
|
| Переменная | Значение / Опции | Описание |
|
||||||
|
|-----------|------------------|--------|
|
||||||
|
| `ENV` | `"dev"` | Целевое окружение. Сейчас поддерживается только `dev`. |
|
||||||
|
| `HOST` | `$APN1_HOST`, `$APN2_HOST`, `$DBN1_HOST`, `$DBN2_HOST` | Выбор сервера для развёртывания. Определяет, на какой хост будет развернут контейнер. |
|
||||||
|
| `POSTGRESQL_HOSTNAME_NAME` | — | Имя контейнера/хоста PostgreSQL (например, `postgres-db`) |
|
||||||
|
| `POSTGRES_PORT` | — | Внешний порт, на котором будет доступен PostgreSQL (например, `5432`) |
|
||||||
|
| `PROXY_NETWORK` | `proxy` | Сеть Docker, к которой подключается контейнер (по умолчанию — `proxy`) |
|
||||||
|
| `POSTGRES_DB` | — | Имя основной базы данных |
|
||||||
|
| `POSTGRES_USER` | — | Имя пользователя по умолчанию |
|
||||||
|
| `POSTGRES_PASSWORD` | — | Пароль пользователя (передаётся безопасно, base64-кодированный) |
|
||||||
|
|
||||||
|
> Все переменные заполняются **вручную при запуске пайплайна**, что делает его гибким и пригодным для разных сценариев развёртывания.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### Настройка mTLS-аутентификации
|
||||||
|
|
||||||
|
Перед запуском задачи выполняется блок `before_script`, в котором устанавливаются переменные для **безопасного подключения к Docker-демону**:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
.set_docker_context_vars:
|
||||||
|
case "$HOST" in
|
||||||
|
"$APN1_HOST") ... export CA_FILE, CERT_FILE, KEY_FILE ;;
|
||||||
|
...
|
||||||
|
esac
|
||||||
|
```
|
||||||
|
|
||||||
|
- Для каждого `HOST` автоматически подставляются соответствующие пути к сертификатам:
|
||||||
|
- `CA_FILE` — сертификат центра сертификации
|
||||||
|
- `CERT_FILE` — клиентский сертификат
|
||||||
|
- `KEY_FILE` — закрытый ключ
|
||||||
|
- Обеспечивается **взаимная аутентификация (mTLS)** при подключении к удалённому Docker-хосту
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### Внешний шаблон развёртывания
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
include:
|
||||||
|
- project: 'devops/services/gitlab-flow/ci-flow'
|
||||||
|
ref: v1.0.1
|
||||||
|
file: 'deploy_docker-compose-context.yml'
|
||||||
|
```
|
||||||
|
|
||||||
|
- Пайплайн использует **централизованный шаблон развёртывания**, содержащий стандартные шаги:
|
||||||
|
- Вход в реестр
|
||||||
|
- Создание Docker-контекста
|
||||||
|
- Выполнение `docker compose up`
|
||||||
|
- Гарантирует **единообразие и безопасность** во всех проектах
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### Основная задача: `deploy_compose`
|
||||||
|
|
||||||
|
Расширяет шаблон `.deploy_from_registry` и переопределяет ключевые параметры:
|
||||||
|
|
||||||
|
| Параметр | Значение |
|
||||||
|
|--------|--------|
|
||||||
|
| `extends` | `.deploy_from_registry` |
|
||||||
|
| `environment` | `dev` |
|
||||||
|
| `REGISTRY` | `$SED_DOCKER_REGISTRY` (внутренний прокси-реестр) |
|
||||||
|
| `REGISTRY_USER` / `REGISTRY_PASSWORD` | `$SED_NEXUS_USER`, `$SED_NEXUS_PASS_BASE64` |
|
||||||
|
| `COMPOSE_FILES` | `-f ./docker-compose.yml` |
|
||||||
|
| `before_script` | Установка mTLS-сертификатов через `*set-docker-context-vars` |
|
||||||
|
| `tags` | `mmedo` — запуск только на специализированных раннерах с поддержкой mTLS |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### при запуске происходит:
|
||||||
|
|
||||||
|
1. Выбор хоста и параметров PostgreSQL
|
||||||
|
2. Установка mTLS-сертификатов в зависимости от `HOST`
|
||||||
|
3. Вход в Docker-репозиторий nexus (`SED_DOCKER_REGISTRY`)
|
||||||
|
4. Создание защищённого Docker-контекста с подключением к удалённому хосту
|
||||||
|
5. `docker compose pull` — загрузка актуальных образов
|
||||||
|
6. `docker compose up -d --force-recreate` — пересоздание и запуск контейнера
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
### Как запустить
|
||||||
|
|
||||||
|
1. Перейдите в **CI/CD → Pipelines** в GitLab
|
||||||
|
2. Нажмите **"Run pipeline"**
|
||||||
|
3. Укажите:
|
||||||
|
- `HOST` — например, `dbn1.example.com`
|
||||||
|
- `POSTGRESQL_HOSTNAME_NAME` — имя контейнера
|
||||||
|
- `POSTGRES_PORT`, `POSTGRES_DB`, `POSTGRES_USER`, `POSTGRES_PASSWORD`
|
||||||
|
4. Запустите — приложение будет развёрнуто на выбранном сервере
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> **Важно!!!!!!!!**: Убедитесь, что все переменные с паролями и сертификатами корректно настроены в проекте GitLab как **CI/CD Variables**, желательно с типом **File** или **Masked**.
|
||||||
|
|
||||||
|
---
|
||||||
Loading…
x
Reference in New Issue
Block a user