Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions charts/cnpg/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: v1
description: Cloud Native Postgres
name: cnpg
version: 0.1.0
appVersion: 0.1.0
maintainers:
- name: Developer
email: dev@opsta.in.th
Comment on lines +7 to +8
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The maintainer information appears to be using placeholder values. Please update this section with the actual maintainer's details for proper ownership and contact purposes.

  - name: <Your Name>
    email: <your-email@example.com>

69 changes: 69 additions & 0 deletions charts/cnpg/templates/cluster.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
{{- if .Values.enabled }}
#{{- $cnpg := .Values.cnpg -}}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The variable $cnpg is defined here but is not used anywhere in the template. This unused variable should be removed to improve code clarity and maintainability.

{{- $backup := .Values.backup -}}
{{- $bos := $backup.barmanObjectStore -}}
{{- $s3 := $bos.s3Credentials -}}
{{- $defaultS3Secret := printf "%s-cnpg-s3-creds" .Release.Name | trunc 63 | trimSuffix "-" -}}


{{- $s3SecretName := $defaultS3Secret -}}

{{- if and $backup.enabled (not $s3SecretName) -}}
{{- fail "backup.enabled=true but S3 secret name resolved empty (unexpected)" -}}
{{ end }}
Comment on lines +11 to +13
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This conditional check is currently unreachable. The variable $s3SecretName is always assigned a value from printf, so (not $s3SecretName) will never evaluate to true. This block of code serves no purpose and should be removed.


apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: {{ printf "%s-cnpg" .Release.Name | trunc 63 | trimSuffix "-" | quote }}
spec:
imageName: {{ .Values.cluster.imageName | quote }}
instances: {{ .Values.cluster.instances }}

{{- if .Values.superuser.enabled }}
enableSuperuserAccess: true
superuserSecret:
name: {{ printf "%s-cnpg-superuser-secret" .Release.Name | trunc 63 | trimSuffix "-" | quote }}
{{ end }}

{{- with .Values.cluster.resources }}
resources:
{{- toYaml . | nindent 4 }}
{{ end }}

storage:
size: {{ .Values.cluster.storage.size | quote }}
storageClass: {{ .Values.cluster.storage.storageClass | quote }}

walStorage:
size: {{ .Values.cluster.walStorage.size | quote }}
storageClass: {{ .Values.cluster.walStorage.storageClass | quote }}

{{- if $backup.enabled }}
backup:
retentionPolicy: {{ $backup.retentionPolicy | quote }}
barmanObjectStore:
serverName: {{ printf "%s-cnpg-backup" .Release.Name | trunc 63 | trimSuffix "-" | quote }}
destinationPath: {{ $bos.destinationPath | quote }}
endpointURL: {{ $bos.endpointURL | quote }}
s3Credentials:
accessKeyId:
name: {{ $s3SecretName | quote }}
key: {{ default "S3_ACCESS_KEY" $s3.accessKeyKey | quote }}
secretAccessKey:
name: {{ $s3SecretName | quote }}
key: {{ default "S3_SECRET_KEY" $s3.secretKeyKey | quote }}
data:
compression: {{ $bos.compression.data | quote }}
wal:
compression: {{ $bos.compression.wal | quote }}
{{ end }}

{{- if .Values.bootstrap.enabled }}
bootstrap:
initdb:
{{- toYaml .Values.bootstrap.initdb | nindent 6 }}
secret:
name: {{ printf "%s-cnpg-app-creds" .Release.Name | trunc 63 | trimSuffix "-" | quote }}
{{ end }}
{{ end }}
13 changes: 13 additions & 0 deletions charts/cnpg/templates/scheduled-backup.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{{- if and .Values.enabled .Values.scheduledBackup.enabled }}
apiVersion: postgresql.cnpg.io/v1
kind: ScheduledBackup
metadata:
name: {{ printf "%s-scheduled-backup" .Release.Name | trunc 63 | trimSuffix "-" | quote }}
spec:
schedule: {{ .Values.scheduledBackup.schedule | quote }}
backupOwnerReference: {{ .Values.scheduledBackup.backupOwnerReference | quote }}
cluster:
name: {{ printf "%s-cnpg" .Release.Name | trunc 63 | trimSuffix "-" | quote }}
immediate: {{ .Values.scheduledBackup.immediate }}
{{- end }}

18 changes: 18 additions & 0 deletions charts/cnpg/templates/secret-admin-postgres.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{{- if and .Values.enabled .Values.superuser.enabled }}
{{- $secretName := printf "%s-cnpg-superuser-secret" .Release.Name | trunc 63 | trimSuffix "-" }}
{{- $existing := lookup "v1" "Secret" .Release.Namespace $secretName }}
apiVersion: v1
kind: Secret
metadata:
name: {{ $secretName | quote }}
type: {{ default "kubernetes.io/basic-auth" }}
stringData:
username: postgres
password: {{- if .Values.superuser.password }}
{{ .Values.superuser.password | quote }}
{{- else if $existing }}
{{ index $existing.data "password" | b64dec | quote }}
{{- else }}
{{ randAlphaNum 32 | quote }}
{{- end }}
{{- end }}
18 changes: 18 additions & 0 deletions charts/cnpg/templates/secret-postgres.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{{- if and .Values.enabled .Values.postgresAuth.create }}
{{- $secretName := printf "%s-cnpg-app-creds" .Release.Name | trunc 63 | trimSuffix "-" }}
{{- $existing := lookup "v1" "Secret" .Release.Namespace $secretName }}
apiVersion: v1
kind: Secret
metadata:
name: {{ $secretName | quote }}
type: {{ .Values.postgresAuth.type | default "kubernetes.io/basic-auth" }}
stringData:
username: {{ .Values.postgresAuth.username | quote }}
password: {{- if .Values.postgresAuth.password }}
{{ .Values.postgresAuth.password | quote }}
{{- else if $existing }}
{{ index $existing.data "password" | b64dec | quote }}
{{- else }}
{{ randAlphaNum 32 | quote }}
{{- end }}
{{- end }}
11 changes: 11 additions & 0 deletions charts/cnpg/templates/secret-s3.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{{- $s3 := .Values.backup.barmanObjectStore.s3Credentials -}}
{{- if and .Values.enabled .Values.backup.enabled ($s3.create) }}
apiVersion: v1
kind: Secret
metadata:
name: {{ printf "%s-cnpg-s3-creds" .Release.Name | trunc 63 | trimSuffix "-" | quote }}
type: Opaque
stringData:
{{ default "S3_ACCESS_KEY" $s3.accessKeyKey }}: {{ required "accessKeyValue required when create=true" $s3.accessKeyValue | quote }}
{{ default "S3_SECRET_KEY" $s3.secretKeyKey }}: {{ required "secretKeyValue required when create=true" $s3.secretKeyValue | quote }}
{{- end }}
53 changes: 53 additions & 0 deletions charts/cnpg/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
enabled: true

superuser:
enabled: true

cluster:
imageName: ghcr.io/cloudnative-pg/postgresql:16.8-13-bullseye
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

The image tag 16.8-13-bullseye for ghcr.io/cloudnative-pg/postgresql appears to be invalid. The standard tags for this image are typically just the PostgreSQL version number (e.g., 16.2). An incorrect image tag will prevent pods from starting with an ImagePullBackOff error. Please use a valid image tag.

  imageName: ghcr.io/cloudnative-pg/postgresql:16.2

instances: 3
storage:
size: 5Gi
storageClass: standard
walStorage:
size: 2Gi
storageClass: standard
resources:
requests:
cpu: "500m"
memory: "1Gi"
limits:
cpu: "2"
memory: "4Gi"

postgresAuth:
create: true
username:
password:

backup:
enabled: true
retentionPolicy: "7d"
barmanObjectStore:
destinationPath: s3://postgres-backups/
endpointURL: https://opsta.in.th/buckets/
s3Credentials:
create: false
accessKeyValue:
secretKeyValue:
compression:
data: gzip
wal: gzip

scheduledBackup:
enabled: true
schedule: "0 0 * * *"
backupOwnerReference: self
immediate: true

bootstrap:
enabled: true
initdb:
database: cnpg
owner: cnpg

7 changes: 5 additions & 2 deletions charts/onechart/Chart.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,8 @@ dependencies:
- name: common
repository: file://../common
version: 0.9.0
digest: sha256:c691781bff5490003ec6b84de1a1f71ab89d193325e5f5fe1c83b8c1398e2273
generated: "2026-02-09T14:47:43.892718793+07:00"
- name: cnpg
repository: file://../cnpg
version: 0.1.0
digest: sha256:31c485857050d6ca5163882dcea296372d4b86d751ba56579102dde793cbeddd
generated: "2026-03-27T17:18:51.484489+07:00"
4 changes: 4 additions & 0 deletions charts/onechart/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,7 @@ dependencies:
- name: common
version: 0.9.0
repository: file://../common

- name: cnpg
version: 0.1.0
repository: file://../cnpg
Binary file added charts/onechart/charts/cnpg-0.1.0.tgz
Binary file not shown.
Binary file modified charts/onechart/charts/common-0.9.0.tgz
Binary file not shown.
28 changes: 28 additions & 0 deletions values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,31 @@ probe:

podSpec:
hostNetwork: true

cnpg:
enabled: false

cluster:
instances: 3
storage:
size: 5Gi
storageClass: external-nfs
walStorage:
size: 2Gi
storageClass: external-nfs

postgresAuth:
username:
password:

backup:
retentionPolicy: "7d"
barmanObjectStore:
endpointURL: https://seaweedfs-admin.mea-poc.opsta.in.th/buckets/
s3Credentials:
accessKeyValue:
secretKeyValue:
bootstrap:
initdb:
database: cnpg
owner: cnpg
Loading