Chart-integrierte Helper¶
Im Chart-Modus können Sie Secrets, ConfigMaps und ServiceMonitors direkt definieren, ohne die separaten Helper zu verwenden.
Übersicht¶
Namespace-Einschränkung
Bei Chart-integrierten Helpern können Sie keinen individuellen Namespace setzen. Die Ressourcen werden im Namespace des Helm-Releases erstellt (via helm install --namespace).
Wenn Sie Ressourcen in anderen Namespaces benötigen, verwenden Sie stattdessen die standalone Helper-Funktionen.
Secrets¶
Erstellen Sie Secrets direkt im Chart:
chart:
enabled: true
secrets:
- name: database-credentials
values:
username: admin
password: "" # Leer = wird automatisch generiert
- name: api-keys
values:
stripe-key: "sk_live_xxx"
sendgrid-key: "SG.xxx"
Secret im Container verwenden¶
chart:
secrets:
- name: db-credentials
values:
username: admin
password: ""
container:
image: myapp:latest
env:
- name: DB_USER
valueFrom:
secretKeyRef:
name: db-credentials
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: password
ConfigMaps¶
Erstellen Sie ConfigMaps für Konfigurationsdateien:
chart:
enabled: true
configs:
- name: app-config
dontOverrideOnUpdate: false
values:
config.yaml: |
server:
host: 0.0.0.0
port: 8080
database:
host: postgres.default.svc.cluster.local
port: 5432
- name: nginx-config
dontOverrideOnUpdate: true # Wird bei helm upgrade nicht überschrieben
values:
nginx.conf: |
server {
listen 80;
location / {
proxy_pass http://localhost:8080;
}
}
ConfigMap als Volume mounten¶
chart:
configs:
- name: app-config
values:
config.yaml: |
server:
port: 8080
container:
image: myapp:latest
volumeMounts:
- name: config
mountPath: /etc/app
deploymentVolume:
volumes:
- name: config
configMap:
name: app-config
dontOverrideOnUpdate¶
Mit dontOverrideOnUpdate: true bleibt die ConfigMap bei helm upgrade unverändert:
chart:
configs:
- name: user-config
dontOverrideOnUpdate: true # Benutzer-Änderungen bleiben erhalten
values:
settings.yaml: |
# Diese Datei wird bei Updates nicht überschrieben
theme: dark
language: de
Prometheus ServiceMonitor¶
Erstellen Sie ServiceMonitors für Prometheus-Monitoring:
chart:
enabled: true
container:
image: myapp:latest
ports:
- name: http
containerPort: 8080
- name: metrics
containerPort: 9090
monitoring:
- name: myapp-metrics
namespace: monitoring # Namespace des Prometheus-Operators
release: prometheus # Prometheus-Release-Name für Label-Matching
endpoints:
- port: metrics
interval: 30s
path: /metrics
scheme: http
Mehrere Endpoints¶
chart:
monitoring:
- name: myapp
namespace: monitoring
release: prometheus
endpoints:
- port: metrics
interval: 15s
path: /metrics
- port: http
interval: 60s
path: /healthz
scheme: https
Vollständiges Beispiel¶
chart:
enabled: true
fullnameOverride: "my-api"
# Secrets für Credentials
secrets:
- name: db-credentials
values:
username: api_user
password: "" # Auto-generiert
- name: jwt-secret
values:
secret: "" # Auto-generiert
# ConfigMaps für Konfiguration
configs:
- name: api-config
values:
config.yaml: |
server:
port: 8080
host: 0.0.0.0
logging:
level: info
format: json
# Container mit Secret/ConfigMap-Referenzen
container:
image: myapp/api:v1.0.0
ports:
- name: http
containerPort: 8080
- name: metrics
containerPort: 9090
env:
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: db-credentials
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: password
- name: JWT_SECRET
valueFrom:
secretKeyRef:
name: jwt-secret
key: secret
volumeMounts:
- name: config
mountPath: /etc/app
deploymentVolume:
volumes:
- name: config
configMap:
name: api-config
# Prometheus Monitoring
monitoring:
- name: my-api
namespace: monitoring
release: prometheus
endpoints:
- port: metrics
interval: 30s
path: /metrics
Wann Chart-Helper vs. Standalone Helper?¶
| Szenario | Empfehlung |
|---|---|
| Secrets/ConfigMaps im Release-Namespace | Chart-Helper |
| Secrets/ConfigMaps in anderen Namespaces | Standalone Helper |
| Third-Party Charts ergänzen | Standalone Helper |
| Namespace-übergreifende Ressourcen | Standalone Helper |
| Einfache Deployments | Chart-Helper |