|
1 | 1 | 1. Get the application URL by running these commands: |
2 | 2 | {{- if .Values.ingress.create }} |
3 | | -{{- range $host := .Values.ingress.hosts }} |
4 | | - {{- range .paths }} |
5 | | - http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} |
6 | | - {{- end }} |
| 3 | +{{- $fqdn := .Values.global.fqdn | trimPrefix "https://" | trimPrefix "http://" | trimSuffix "/" }} |
| 4 | +{{- if $fqdn }} |
| 5 | + http{{ if .Values.ingress.tls.enabled }}s{{ end }}://{{ $fqdn }} |
| 6 | +{{- else }} |
| 7 | + Ingress is enabled but no host is configured (global.fqdn is empty). |
| 8 | + Access the service via the ingress IP or configure global.fqdn. |
7 | 9 | {{- end }} |
8 | 10 | {{- else if contains "NodePort" .Values.service.type }} |
9 | 11 | export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "ctrlplane.fullname" . }}) |
|
30 | 32 | ⚠ Password configured directly in values (less secure for production) |
31 | 33 | {{- end }} |
32 | 34 |
|
| 35 | + Secrets: |
| 36 | +{{- if include "ctrlplane.isValueFrom" .Values.global.secrets.encryptionKey }} |
| 37 | + ✓ Encryption key (AES_256_KEY) configured via secret reference |
| 38 | +{{- else }} |
| 39 | + ⚠ Encryption key auto-generated by chart (consider using ExternalSecrets for production) |
| 40 | +{{- end }} |
| 41 | +{{- if include "ctrlplane.isValueFrom" .Values.global.secrets.authSecret }} |
| 42 | + ✓ Auth secret configured via secret reference |
| 43 | +{{- else }} |
| 44 | + ⚠ Auth secret auto-generated by chart (consider using ExternalSecrets for production) |
| 45 | +{{- end }} |
| 46 | + |
33 | 47 | Auth Providers: |
34 | 48 | {{- if include "ctrlplane.isValueFrom" .Values.global.authProviders.google.clientSecret }} |
35 | 49 | ✓ Google OAuth configured via secret reference |
|
58 | 72 |
|
59 | 73 | 3. Using valueFrom pattern for secrets: |
60 | 74 |
|
61 | | - Instead of: |
62 | | - postgresql: |
63 | | - password: "my-secret-password" |
| 75 | + Instead of auto-generated secrets: |
| 76 | + global: |
| 77 | + secrets: |
| 78 | + authSecret: "" |
| 79 | + encryptionKey: "" |
64 | 80 |
|
65 | | - Use: |
66 | | - postgresql: |
67 | | - password: |
68 | | - valueFrom: |
69 | | - secretKeyRef: |
70 | | - name: "postgresql-secret" |
71 | | - key: "password" |
| 81 | + Reference externally managed secrets: |
| 82 | + global: |
| 83 | + secrets: |
| 84 | + authSecret: |
| 85 | + valueFrom: |
| 86 | + secretKeyRef: |
| 87 | + name: "my-auth-secret" |
| 88 | + key: "AUTH_SECRET" |
| 89 | + encryptionKey: |
| 90 | + valueFrom: |
| 91 | + secretKeyRef: |
| 92 | + name: "my-encryption-secret" |
| 93 | + key: "AES_256_KEY" |
72 | 94 |
|
73 | 95 | This pattern works for all sensitive configuration values including: |
| 96 | + - Encryption key (AES_256_KEY) |
| 97 | + - Auth secret (AUTH_SECRET) |
74 | 98 | - PostgreSQL password |
75 | 99 | - OAuth client secrets (Google, Okta) |
76 | 100 | - GitHub bot credentials |
77 | | - - Azure app credentials |
| 101 | + - Azure app credentials |
0 commit comments