Helm chart (один чарт создаёт Service + Endpoints + Ingress на каждый прокси):
- _helpers.tpl: хелперы ext-proxy.resourceName, ext-proxy.labels
- service.yaml: ClusterIP без selector — имя совпадает с Endpoints
- endpoints.yaml: внешние IP(s) + порт; несколько IP → round-robin через kube-proxy
- ingress.yaml: слияние аннотаций (defaults → сгенерированные → уровень прокси);
поддержка TLS, basic auth, WebSocket, несколько хостов, маршрутизация по пути
- secret-auth.yaml: htpasswd Secret создаётся только при auth.enabled=true + credentials
- NOTES.txt: список прокси + команды проверки после установки
Ansible роль:
- defaults/main.yml: ext_proxy_namespace, ext_proxy_defaults, ext_proxy_proxies
- tasks/main.yml: валидация → namespace → копировать chart → lint → helm upgrade --install --atomic
- templates/values.yaml.j2: преобразование Ansible-переменных в Helm values через to_yaml
Интеграция: Makefile addon-ext-proxy, флаг addons.yml, playbooks/addons.yml,
docs/addons.md, README.md (счётчик 37 аддонов)
README.md на русском языке с полной документацией:
архитектура, настройка, функции, DNS, проверка, примеры манифестов, устранение неисправностей
Дополнительно: splitgw_deploy_mode изменён на k8s
52 lines
1.8 KiB
Smarty
52 lines
1.8 KiB
Smarty
{{/*
|
|
Normalize a proxy name to be safe as a Kubernetes resource name.
|
|
Lowercases, replaces underscores and dots with hyphens, trims to 63 chars.
|
|
Usage: {{ include "ext-proxy.resourceName" "my_service.name" }}
|
|
*/}}
|
|
{{- define "ext-proxy.resourceName" -}}
|
|
{{- . | lower | replace "_" "-" | replace "." "-" | trunc 63 | trimSuffix "-" }}
|
|
{{- end }}
|
|
|
|
{{/*
|
|
Chart label string: name-version (used in helm.sh/chart label).
|
|
*/}}
|
|
{{- define "ext-proxy.chart" -}}
|
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
|
{{- end }}
|
|
|
|
{{/*
|
|
Common labels applied to all resources.
|
|
*/}}
|
|
{{- define "ext-proxy.labels" -}}
|
|
helm.sh/chart: {{ include "ext-proxy.chart" . }}
|
|
app.kubernetes.io/name: {{ default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|
{{- end }}
|
|
|
|
{{/*
|
|
Resolve a per-proxy boolean setting with fallback to global default.
|
|
Usage: {{ include "ext-proxy.boolSetting" (dict "proxy" $proxy "defaults" $d "key" "websocket" "fallback" true) }}
|
|
*/}}
|
|
{{- define "ext-proxy.boolSetting" -}}
|
|
{{- $proxyVal := index .proxy .key }}
|
|
{{- $defaultVal := index .defaults .key }}
|
|
{{- if ne $proxyVal nil }}{{ $proxyVal }}
|
|
{{- else if ne $defaultVal nil }}{{ $defaultVal }}
|
|
{{- else }}{{ .fallback }}
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
{{/*
|
|
Resolve a per-proxy string setting with fallback to global default.
|
|
Usage: {{ include "ext-proxy.strSetting" (dict "proxy" $proxy "defaults" $d "key" "path" "fallback" "/") }}
|
|
*/}}
|
|
{{- define "ext-proxy.strSetting" -}}
|
|
{{- $proxyVal := index .proxy .key }}
|
|
{{- $defaultVal := index .defaults .key }}
|
|
{{- if and $proxyVal (ne $proxyVal "") }}{{ $proxyVal }}
|
|
{{- else if and $defaultVal (ne $defaultVal "") }}{{ $defaultVal }}
|
|
{{- else }}{{ .fallback }}
|
|
{{- end }}
|
|
{{- end }}
|