Skip to content

Commit

Permalink
fix(secret): database secret should be immutable (#152)
Browse files Browse the repository at this point in the history
* doc(values): add more descriptions for database secret option

* fix(secret): database secret should be immutable

* chore(secret): shorten storage secret name
  • Loading branch information
tthvo authored Jun 13, 2024
1 parent 28805a5 commit 89fb49e
Show file tree
Hide file tree
Showing 9 changed files with 50 additions and 63 deletions.
2 changes: 1 addition & 1 deletion charts/cryostat/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ type: application

version: "0.5.0-dev"

kubeVersion: ">= 1.19.0-0"
kubeVersion: ">= 1.21.0-0"

appVersion: "4.0.0-dev"

Expand Down
74 changes: 33 additions & 41 deletions charts/cryostat/README.md

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions charts/cryostat/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,10 @@ Create the name of the service account to use
{{- end }}

{{/*
Get or generate a default connection key for credentials database
Get or generate a default connection key for database
*/}}
{{- define "cryostat.databaseConnectionKey" -}}
{{- $secret := (lookup "v1" "Secret" .Release.Namespace (printf "%s-db-connection-key" .Release.Name)) -}}
{{- $secret := (lookup "v1" "Secret" .Release.Namespace (printf "%s-db" .Release.Name)) -}}
{{- if $secret -}}
{{/*
Use current key. Do not regenerate
Expand All @@ -80,10 +80,10 @@ Get or generate a default connection key for credentials database
{{- end -}}

{{/*
Get or generate a default encryption key for credentials database
Get or generate a default encryption key for database
*/}}
{{- define "cryostat.databaseEncryptionKey" -}}
{{- $secret := (lookup "v1" "Secret" .Release.Namespace (printf "%s-db-encryption-key" .Release.Name)) -}}
{{- $secret := (lookup "v1" "Secret" .Release.Namespace (printf "%s-db" .Release.Name)) -}}
{{- if $secret -}}
{{/*
Use current key. Do not regenerate
Expand All @@ -101,7 +101,7 @@ Get or generate a default encryption key for credentials database
Get or generate a default secret key for object storage
*/}}
{{- define "cryostat.objectStorageSecretKey" -}}
{{- $secret := (lookup "v1" "Secret" .Release.Namespace (printf "%s-storage-secret-key" .Release.Name)) -}}
{{- $secret := (lookup "v1" "Secret" .Release.Namespace (printf "%s-storage" .Release.Name)) -}}
{{- if $secret -}}
{{/*
Use current secret. Do not regenerate
Expand Down
7 changes: 0 additions & 7 deletions charts/cryostat/templates/db_connection_key_secret.yaml

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}-db-encryption-key
name: {{ .Release.Name }}-db
type: Opaque
immutable: true
data:
ENCRYPTION_KEY: {{ include "cryostat.databaseEncryptionKey" . }}
CONNECTION_KEY: {{ include "cryostat.databaseConnectionKey" . }}
{{- end -}}
10 changes: 5 additions & 5 deletions charts/cryostat/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ spec:
- name: QUARKUS_DATASOURCE_PASSWORD
valueFrom:
secretKeyRef:
name: {{ printf "%s-db-connection-key" .Release.Name }}
name: {{ default (printf "%s-db" .Release.Name) .Values.core.databaseSecretName }}
key: CONNECTION_KEY
optional: false
- name: QUARKUS_DATASOURCE_JDBC_URL
Expand All @@ -82,7 +82,7 @@ spec:
- name: QUARKUS_S3_AWS_CREDENTIALS_STATIC_PROVIDER_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: {{ printf "%s-storage-secret-key" .Release.Name }}
name: {{ printf "%s-storage" .Release.Name }}
key: SECRET_KEY
optional: false
- name: AWS_SECRET_ACCESS_KEY
Expand Down Expand Up @@ -130,15 +130,15 @@ spec:
- name: POSTGRESQL_PASSWORD
valueFrom:
secretKeyRef:
name: {{ printf "%s-db-connection-key" .Release.Name }}
name: {{ default (printf "%s-db" .Release.Name) .Values.core.databaseSecretName }}
key: CONNECTION_KEY
optional: false
- name: POSTGRESQL_DATABASE
value: cryostat3
- name: PG_ENCRYPT_KEY
valueFrom:
secretKeyRef:
name: {{ default (printf "%s-db-encryption-key" .Release.Name) .Values.core.databaseSecretName }}
name: {{ default (printf "%s-db" .Release.Name) .Values.core.databaseSecretName }}
key: ENCRYPTION_KEY
optional: false
ports:
Expand Down Expand Up @@ -169,7 +169,7 @@ spec:
- name: CRYOSTAT_SECRET_KEY
valueFrom:
secretKeyRef:
name: {{ printf "%s-storage-secret-key" .Release.Name }}
name: {{ printf "%s-storage" .Release.Name }}
key: SECRET_KEY
optional: false
- name: DATA_DIR
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}-storage-secret-key
name: {{ .Release.Name }}-storage
type: Opaque
data:
SECRET_KEY: {{ include "cryostat.objectStorageSecretKey" . }}
2 changes: 1 addition & 1 deletion charts/cryostat/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@
},
"databaseSecretName": {
"type": "string",
"description": "Name of the secret to extract password for credentials database.",
"description": "Name of the secret containing database keys. This secret must contain a CONNECTION_KEY secret which is the database connection password, and an ENCRYPTION_KEY secret which is the key used to encrypt sensitive data stored within the database, such as the target credentials keyring. It must not be updated across chart upgrades. It is recommended that the secret should be marked as immutable to avoid accidental changes to secret's data. More details: https://kubernetes.io/docs/concepts/configuration/secret/#secret-immutable",
"default": ""
},
"discovery": {
Expand Down
2 changes: 1 addition & 1 deletion charts/cryostat/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ core:
capabilities:
drop:
- ALL
## @param core.databaseSecretName Name of the secret to extract password for credentials database.
## @param core.databaseSecretName Name of the secret containing database keys. This secret must contain a CONNECTION_KEY secret which is the database connection password, and an ENCRYPTION_KEY secret which is the key used to encrypt sensitive data stored within the database, such as the target credentials keyring. It must not be updated across chart upgrades. It is recommended that the secret should be marked as immutable to avoid accidental changes to secret's data. More details: https://kubernetes.io/docs/concepts/configuration/secret/#secret-immutable
databaseSecretName: ""
## @extra core.discovery Configuration options to the Cryostat application's target discovery mechanisms
discovery:
Expand Down

0 comments on commit 89fb49e

Please sign in to comment.