chart 3.0
This commit is contained in:
@@ -1,49 +1,19 @@
|
||||
{{/*
|
||||
============================================================================
|
||||
Общие хелперы чарта HRBox
|
||||
============================================================================
|
||||
|
||||
Правило именования: все объекты называются "<имя чарта>-<компонент>"
|
||||
(hrbox-web, hrbox-worker, ...). Имя чарта можно переопределить через
|
||||
nameOverride, но по умолчанию оно равно "hrbox" — так же, как в чарте 2.x,
|
||||
поэтому обновление 2.x -> 3.x не пересоздаёт объекты.
|
||||
*/}}
|
||||
|
||||
{{/* Базовое имя релиза: "hrbox" или nameOverride. */}}
|
||||
{{- define "hrbox.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* Имя чарта с версией — для лейбла helm.sh/chart. */}}
|
||||
{{- define "hrbox.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Полное имя объекта компонента.
|
||||
|
||||
Usage: {{ include "hrbox.component" (dict "ctx" . "name" "web") }} -> hrbox-web
|
||||
*/}}
|
||||
{{- define "hrbox.component" -}}
|
||||
{{- printf "%s-%s" (include "hrbox.name" .ctx) .name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Селектор пода. ВАЖНО: spec.selector в Deployment неизменяем, поэтому набор
|
||||
лейблов здесь совпадает с чартом 2.x (один лейбл "service") и меняться не должен.
|
||||
|
||||
Usage: {{- include "hrbox.selectorLabels" (dict "ctx" . "name" "web") | nindent 6 }}
|
||||
*/}}
|
||||
{{- define "hrbox.selectorLabels" -}}
|
||||
service: {{ include "hrbox.component" (dict "ctx" .ctx "name" .name) }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Лейблы объекта. Лейбл "app" сохранён из чарта 2.x — на него опираются
|
||||
привычные команды вида "kubectl get pods -l app=worker".
|
||||
|
||||
Usage: {{- include "hrbox.labels" (dict "ctx" . "name" "web") | nindent 4 }}
|
||||
*/}}
|
||||
{{- define "hrbox.labels" -}}
|
||||
app: {{ .name }}
|
||||
app.kubernetes.io/name: {{ include "hrbox.name" .ctx }}
|
||||
@@ -54,11 +24,6 @@ app.kubernetes.io/version: {{ .ctx.Chart.AppVersion | quote }}
|
||||
helm.sh/chart: {{ include "hrbox.chart" .ctx }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Секреты для доступа к приватному Docker-реестру.
|
||||
|
||||
Usage: {{- include "hrbox.imagePullSecrets" . | nindent 6 }}
|
||||
*/}}
|
||||
{{- define "hrbox.imagePullSecrets" -}}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
@@ -68,11 +33,6 @@ imagePullSecrets:
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Тег из ссылки на образ: "registry/repo:1.2.3" -> "1.2.3".
|
||||
Двоеточие ищется только в последнем сегменте пути, чтобы не спутать тег
|
||||
с портом реестра ("registry:5000/repo").
|
||||
*/}}
|
||||
{{- define "hrbox.imageTag" -}}
|
||||
{{- $lastSegment := splitList "/" . | last -}}
|
||||
{{- if contains ":" $lastSegment -}}
|
||||
@@ -80,27 +40,6 @@ imagePullSecrets:
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
============================================================================
|
||||
Секрет приложения
|
||||
============================================================================
|
||||
|
||||
Чувствительные значения (пароли БД и SMTP, ключи шифрования, токены) не
|
||||
попадают в env-блоки Deployment открытым текстом: чарт складывает их в один
|
||||
Secret, а контейнеры читают его через secretKeyRef. Полный список ключей —
|
||||
в README, раздел "Секреты".
|
||||
|
||||
secrets.existingSecret позволяет подставить Secret, созданный вне чарта
|
||||
(например, из внешнего vault-оператора) — тогда чарт свой Secret не создаёт.
|
||||
*/}}
|
||||
{{/*
|
||||
Адреса внутренних сервисов.
|
||||
|
||||
Сервисы релиза адресуются по именам, которые создаёт этот же чарт, поэтому
|
||||
пустое значение в values резолвится в имя из hrbox.component: адреса не
|
||||
разъезжаются при nameOverride и их не нужно править вручную. Непустое
|
||||
значение используется как есть — для сервиса за пределами релиза.
|
||||
*/}}
|
||||
{{- define "hrbox.geonamesUrl" -}}
|
||||
{{- .Values.app.geonames.url | default (printf "http://%s:8181" (include "hrbox.component" (dict "ctx" . "name" "geonames"))) -}}
|
||||
{{- end -}}
|
||||
@@ -129,11 +68,6 @@ secrets.existingSecret позволяет подставить Secret, созд
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Одна переменная окружения из секрета приложения.
|
||||
|
||||
Usage: {{ include "hrbox.secretEnv" (dict "ctx" . "env" "POSTGRES_PASSWORD" "key" "postgres-password") }}
|
||||
*/}}
|
||||
{{- define "hrbox.secretEnv" -}}
|
||||
- name: {{ .env }}
|
||||
valueFrom:
|
||||
@@ -142,23 +76,6 @@ Usage: {{ include "hrbox.secretEnv" (dict "ctx" . "env" "POSTGRES_PASSWORD" "key
|
||||
key: {{ .key | quote }}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
============================================================================
|
||||
Nanabush Player
|
||||
============================================================================
|
||||
|
||||
On-premise-топология Player'а отличается от облачной: выделенного поддомена
|
||||
нет, поэтому Player живёт на основном домене HRBox под путём basePath
|
||||
(по умолчанию /nanabush-player). Отсюда следуют три инварианта, которые
|
||||
проверяет 00-validate.yaml:
|
||||
|
||||
* audience тикета = https://<ingress.host> (origin без пути)
|
||||
* basePath = отдельная переменная, в aud не входит
|
||||
* issuer тикета = https://<ingress.host>/lms/player
|
||||
|
||||
Подробности контракта — docs/nanabush-player-deployment.md в репозитории HRBox.
|
||||
*/}}
|
||||
|
||||
{{- define "nanabushPlayer.host" -}}
|
||||
{{- required "Для Nanabush Player нужен непустой ingress.host" .Values.ingress.host -}}
|
||||
{{- end -}}
|
||||
@@ -167,10 +84,6 @@ On-premise-топология Player'а отличается от облачно
|
||||
{{- printf "https://%s" (include "nanabushPlayer.host" .) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Путь монтирования Player'а на основном домене. Пустое значение и "/" запрещены:
|
||||
это отдало бы Player'у корень, занятый самим HRBox.
|
||||
*/}}
|
||||
{{- define "nanabushPlayer.basePath" -}}
|
||||
{{- $path := .Values.app.nanabushPlayer.basePath | default "/nanabush-player" -}}
|
||||
{{- $path | trimSuffix "/" -}}
|
||||
@@ -188,11 +101,6 @@ On-premise-топология Player'а отличается от облачно
|
||||
{{- .Values.app.nanabushPlayer.service.name | default (include "hrbox.component" (dict "ctx" . "name" "nanabush-player")) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Хост обратного канала Player -> HRBox. Только внутрикластерное имя: по нему
|
||||
Player забирает пакеты курсов и отправляет отчёты, и оно же попадает в
|
||||
allowlist самого Player'а.
|
||||
*/}}
|
||||
{{- define "nanabushPlayer.backchannelHost" -}}
|
||||
{{- .Values.app.nanabushPlayer.deployment.backchannel.host | default (include "hrbox.component" (dict "ctx" . "name" "web")) -}}
|
||||
{{- end -}}
|
||||
@@ -201,10 +109,6 @@ allowlist самого Player'а.
|
||||
{{- printf "http://%s" (include "nanabushPlayer.backchannelHost" .) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Версия Player'а берётся из тега образа, а не из отдельной настройки: тикет
|
||||
не должен объявлять версию, отличную от той, что реально запущена в кластере.
|
||||
*/}}
|
||||
{{- define "nanabushPlayer.version" -}}
|
||||
{{- $tag := include "hrbox.imageTag" .Values.image.nanabushPlayer -}}
|
||||
{{- if not $tag -}}
|
||||
@@ -217,15 +121,10 @@ allowlist самого Player'а.
|
||||
{{- required "app.nanabushPlayer.deployment.existingSecret.name обязателен, когда Player включён" .Values.app.nanabushPlayer.deployment.existingSecret.name -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/* URL Redis, который чарт собирает из штатных настроек app.redis. */}}
|
||||
{{- define "nanabushPlayer.redisUrl" -}}
|
||||
{{- printf "redis://%s:%s/%d" (include "hrbox.redisHost" .) (.Values.app.redis.port | toString) (.Values.app.nanabushPlayer.deployment.redis.database | int) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Префикс ключей Redis. Namespace в префиксе разводит несколько релизов HRBox,
|
||||
живущих на одном Dragonfly.
|
||||
*/}}
|
||||
{{- define "nanabushPlayer.redisKeyPrefix" -}}
|
||||
{{- printf "hrbox:%s:%s" .Release.Namespace .Values.app.nanabushPlayer.deployment.redis.keyPrefixSuffix -}}
|
||||
{{- end -}}
|
||||
|
||||
Reference in New Issue
Block a user