Перейти к содержанию

Окружения

Hive работает в нескольких Kubernetes-кластерах. Каждый кластер — это окружение со своим Hive API, доменом Knative, ArgoCD и PostgreSQL. Сервис попадает в окружение через стадию CI, которая запускает hive ci --global -E <name> — см. CI/CD.

Окружение Вид Домен Knative Hive API
staging staging knative-staging.svcik.org https://api.hive-api.knative-staging.svcik.org
production production knative.svcik.org https://api.hive-api.knative.svcik.org
envik production knative.envik.org https://api.hive-api.knative.envik.org

Список хранится в cli/environments.yaml в репозитории hive-api. Неизвестное имя в -E — ошибка.

Как выбрать, куда деплоить

Добавьте в родительский .gitlab-ci.yml по стадии на каждое окружение. Большинству сервисов нужны staging и production. envik добавляйте, только если сервис должен работать в этом кластере.

URL сервиса строится от домена окружения:

https://{name}.{namespace}.knative-staging.svcik.org   # staging
https://{name}.{namespace}.knative.svcik.org           # production
https://{name}.{namespace}.knative.envik.org           # envik

Как CLI узнаёт окружение

hive deploy берёт окружение из HIVE_ENVIRONMENT, которую hive ci -E <name> прописывает в сгенерированные job'ы. Если её нет, CLI сверяет HIVE_DOMAIN, затем HIVE_API_URL с таблицей выше. Если совпадений нет — использует staging и печатает предупреждение. Неизвестное значение HIVE_ENVIRONMENT — фатальная ошибка (код выхода 1).

Несколько продов

Каждое окружение — отдельный кластер. Общего у них нет:

  • База данных. storage.database: true создаёт в каждом кластере отдельную пустую базу. Данные не синхронизируются.
  • Hive-домен, ArgoCD, секреты. У каждого кластера свои.
  • customDomains. Плоский список действует во всех продах. Если сервис деплоится и в production, и в envik, используйте per-environment форму с разными доменами: один hostname в двух кластерах ломает DNS и TLS. См. Кастомные домены.