# Динамические окружения ## Описание 1. В отдельном репозитории хранится чарт деплоя приложения, содержащий в качестве subchart'ов чарты деплоя ресурсов (например PostgreSQL). ```bash $ tree ... ├── Chart.yaml ├── charts │ ├── postgresql.tgz ... └── values.yaml ``` 2. `values.yml` содержит значения по умолчанию для subchart'ов, деплой по умолчанию выключен. `values.yaml` ```yaml replicaCount: 1 appVersion: 0.0.1-dev image: repository: my-repository imagePullSecrets: mysecrets postgresql: enabled: false metrics: enabled: true serviceMonitor: enabled: true ``` 3. В репозитории приложения хранятся `values`, описывающие общие настройки приложения для любого из окружений и `values` для приложения и subchart'ов конкретного окружения (пароль к базе, флаг необходимости деплоя subchart'а) `values/dev.yaml` ```yaml env: LOGGER_LEVEL: debug ``` `values/dynamic.yaml` ```yaml env: HOST: postgresql SCHEMA: public PORT: "5432" postgresql: auth: username: super_user database: my_super_db enabled: true ``` 4. В Hashicorp Vault хранятся секреты, например пароли к БД. Монтирование происходит на этапе деплоя чарта. `secrets.yaml` ```yaml env: PASSWORD: Sup3r!Pa55word postgresql: auth: password: Sup3r!Pa55word ``` 5. Namespace для деплоя соответствует имени ветки репозитория, domain для ingress так же содержит имя ветки. 6. В `.gitlab-ci.yml` для окружения выставлены значения переменных `on_stop`, `auto_stop_in` и `action` ```yaml deploy: stage: deploy script: - | helm -n ${CI_COMMIT_REF_SLUG} \ upgrade --install ${CI_PROJECT_NAME} app-chart \ --set appVersion=${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHORT_SHA} \ --wait --atomic \ --values=values/dev.yaml \ --values=values/dynamic.yaml \ --values=secrets.yaml \ --set ingress.custom.domain=${CI_COMMIT_REF_SLUG}.myapp.mydomain.com when: manual environment: name: ${CI_COMMIT_REF_SLUG} on_stop: remove auto_stop_in: 1 day remove: stage: remove script: - helm -n ${CI_COMMIT_REF_SLUG} uninstall ${CI_PROJECT_NAME} when: manual environment: name: ${CI_COMMIT_REF_SLUG} action: stop ``` ## Схема 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up