Helper-Funktionen¶
Helper-Funktionen ermöglichen es, einzelne Kubernetes-Ressourcen unabhängig vom Chart-Modus zu erstellen.
Was sind Helper-Funktionen?¶
Helper sind standalone Funktionen, die einzelne Kubernetes-Ressourcen wie Secrets, ConfigMaps, Namespaces etc. erstellen können - ohne dass chart.enabled gesetzt sein muss.
Vorteile:
- Unabhängig vom Chart-Modus - Funktionieren auch ohne vollständiges Deployment
- Ergänzung für Third-Party Charts - Fügen Sie Secrets oder ConfigMaps zu bestehenden Charts hinzu
- Infrastruktur-Setup - Erstellen Sie Namespaces und Basis-Ressourcen
- Wiederverwendbar - Ein Helper kann mehrfach verwendet werden
Verfügbare Helper¶
| Helper | Beschreibung | Dokumentation |
|---|---|---|
| namespaces | Erstellt Kubernetes Namespaces | Namespaces |
| secrets | Erstellt generische Secrets mit Auto-Generierung | Secrets |
| imageCredentials | Erstellt Docker Registry Secrets | Image Credentials |
| tlsSecrets | Erstellt TLS Secrets für HTTPS | TLS Secrets |
| configs | Erstellt ConfigMaps | ConfigMaps |
| ingress | Erstellt Ingress-Ressourcen | Ingress |
| monitoring | Erstellt Prometheus ServiceMonitors | ServiceMonitor |
| manifests | Erstellt beliebige Kubernetes-Ressourcen | Plain Manifests |
| job | Erstellt standalone Jobs | Siehe usage.md |
Basis-Verwendung¶
Helper werden auf der Root-Ebene der values.yaml konfiguriert (nicht unter chart):
# Chart.yaml
apiVersion: v2
name: infrastructure
version: 1.0.0
dependencies:
- name: ohmyhelm
alias: infra
repository: https://gitlab.com/ayedocloudsolutions/ohmyhelm
version: 1.13.0
# values.yaml
infra:
# Kein chart.enabled - nur Helper
# Namespaces erstellen
namespaces:
spaces:
- name: production
- name: staging
# Secrets erstellen
secrets:
- name: app-secret
namespace: production
values:
api-key: "my-key"
password: "" # Wird automatisch generiert
# ConfigMaps erstellen
configs:
- name: app-config
namespace: production
values:
app.yaml: |
server:
port: 8080
Helper mit Chart kombinieren¶
Sie können Helper und Chart-Modus gleichzeitig verwenden:
myapp:
# Helper für Basis-Ressourcen
namespaces:
spaces:
- name: myapp-ns
secrets:
- name: db-credentials
namespace: myapp-ns
values:
username: admin
password: ""
# Chart für Deployment
chart:
enabled: true
fullnameOverride: "myapp"
container:
image: myapp:latest
env:
- name: DB_USER
valueFrom:
secretKeyRef:
name: db-credentials
key: username
Mehrere Helper-Instanzen¶
Verwenden Sie verschiedene Aliase für mehrere Helper-Sets:
# Chart.yaml
dependencies:
- name: ohmyhelm
alias: dev-infra
repository: https://gitlab.com/ayedocloudsolutions/ohmyhelm
version: 1.13.0
- name: ohmyhelm
alias: prod-infra
repository: https://gitlab.com/ayedocloudsolutions/ohmyhelm
version: 1.13.0
# values.yaml
dev-infra:
namespaces:
spaces:
- name: development
secrets:
- name: api-keys
namespace: development
values:
key: "dev-key"
prod-infra:
namespaces:
spaces:
- name: production
secrets:
- name: api-keys
namespace: production
values:
key: "prod-key"
Häufige Anwendungsfälle¶
1. Third-Party Charts ergänzen¶
Fügen Sie Secrets zu einem Chart hinzu, das Sie nicht modifizieren möchten:
# Chart.yaml
dependencies:
- name: postgresql
repository: https://charts.bitnami.com/bitnami
version: 12.0.0
- name: ohmyhelm
alias: db-helpers
repository: https://gitlab.com/ayedocloudsolutions/ohmyhelm
version: 1.13.0
# values.yaml
postgresql:
# PostgreSQL Chart Konfiguration
auth:
existingSecret: postgres-secret
secretKeys:
adminPasswordKey: password
db-helpers:
secrets:
- name: postgres-secret
namespace: default
values:
password: "" # Auto-generiert
2. Namespace-Setup¶
Erstellen Sie Namespaces mit Pre-Install Hook:
infra:
namespaces:
setPreInstallHook: true # Erstellt Namespaces vor allem anderen
spaces:
- name: production
- name: staging
- name: development
3. Image Pull Secrets für alle Namespaces¶
registry:
imageCredentials:
- name: registry-secret
namespace: production
registry: https://registry.example.com
username: "ci-user"
accessToken: "{{ .Values.registryToken }}"
- name: registry-secret
namespace: staging
registry: https://registry.example.com
username: "ci-user"
accessToken: "{{ .Values.registryToken }}"
4. Shared ConfigMaps¶
shared:
configs:
- name: cluster-config
namespace: default
values:
cluster.yaml: |
name: "{{ .Values.clusterName }}"
region: "{{ .Values.region }}"
env: "{{ .Values.environment }}"
Helper-Listen¶
Die meisten Helper unterstützen Listen, um mehrere Ressourcen zu erstellen:
myapp:
# Mehrere Secrets
secrets:
- name: database-secret
namespace: default
values:
username: dbuser
password: ""
- name: api-secret
namespace: default
values:
api-key: ""
api-url: "https://api.example.com"
# Mehrere ConfigMaps
configs:
- name: app-config
namespace: default
values:
app.yaml: |
setting: value
- name: nginx-config
namespace: default
values:
nginx.conf: |
server {
listen 80;
}
Best Practices¶
- Verwenden Sie Helper für Basis-Infrastruktur - Namespaces, Secrets, ConfigMaps
- Kombinieren Sie Helper mit Third-Party Charts - Ergänzen Sie externe Charts
- Nutzen Sie Pre-Install Hooks für Namespaces -
setPreInstallHook: true - Lassen Sie Secrets auto-generieren - Leere Werte werden automatisch befüllt
- Verwenden Sie Helm-Templating -
{{ .Values.variable }}funktioniert in Helper-Werten - Organisieren Sie Helper in Aliase - Trennen Sie nach Umgebung oder Funktion
Siehe auch¶
- Verwendung - Vollständige Konfigurationsreferenz
- Beispiele - Praktische Anwendungsbeispiele
- Chart-Modus - Vollständige Deployments