Compare commits

...

11 Commits

Author SHA1 Message Date
a322553210 update readme 2024-04-11 19:37:45 -06:00
09aae9e79d change default cluster size to 3 2024-04-11 19:35:05 -06:00
c72c25a74d upgrade default postgres version to 16.2 2024-04-11 19:33:20 -06:00
9c93b1dc4a bump chart version 2024-04-11 19:31:56 -06:00
cfd426f657 bump chart version 2024-04-11 19:31:46 -06:00
93f4991a05 remove default as storage class 2024-04-11 19:30:58 -06:00
ce0f3c7b07 remove default as storage class 2024-04-11 19:30:50 -06:00
58c5443de1 add postgres-cluster-upgrade chart 2024-04-11 19:05:18 -06:00
b3acbf3cbc update redis chart to 19 2024-04-11 18:04:23 -06:00
3270a3102b change redis image to use valkey 2024-04-11 18:03:44 -06:00
acc9710c72 update redis chart to 19 2024-04-11 18:03:23 -06:00
11 changed files with 175 additions and 16 deletions

View File

@@ -1,6 +1,6 @@
apiVersion: v2
name: outline
version: 0.1.2
version: 0.3.0
description: Chart for Outline wiki
keywords:
- wiki
@@ -14,5 +14,5 @@ icon: https://avatars.githubusercontent.com/u/1765001?s=48&v=4
dependencies:
- name: redis
repository: https://charts.bitnami.com/bitnami
version: 18.19.4
version: 19.1.0
appVersion: v0.75.2

View File

@@ -39,10 +39,6 @@ persistence:
storageSize: 50Gi
localRootDir: /var/lib/outline/data
uploadMaxSize: 26214400
redis:
architecture: standalone
auth:
enabled: false
outline:
nodeEnv: production
url:
@@ -98,3 +94,11 @@ outline:
usernameClaim:
displayName:
scopes: openid profile email
redis:
image:
registry: docker.io
repository: valkey/valkey
tag: 7.2.4-rc1
architecture: standalone
auth:
enabled: false

View File

@@ -0,0 +1,14 @@
apiVersion: v2
name: postgres-cluster-upgrade
version: 0.1.2
description: Chart for upgrading a cloudnative-pg cluster in the same namespace
keywords:
- database
- postgres
- upgrade
sources:
- https://github.com/cloudnative-pg/cloudnative-pg
maintainers:
- name: alexlebens
icon: https://avatars.githubusercontent.com/u/100373852?s=48&v=4
appVersion: v1.22.2

View File

@@ -0,0 +1,19 @@
## Introduction
[CloudNative PG](https://github.com/cloudnative-pg/cloudnative-pg)
CloudNativePG is the Kubernetes operator that covers the full lifecycle of a highly available PostgreSQL database cluster with a primary/standby architecture, using native streaming replication.
This chart bootstraps a [CNPG](https://github.com/cloudnative-pg/cloudnative-pg) cluster upgraade on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
The process is designed to be used in conjunction with the [postgres-cluster](https://github.com/alexlebens/helm-charts/tree/main/charts/postgres-cluster) chart. The cluster in this chart connects to the orignal cluster, peforms an upgrade, then backups to the objectStore endpoint. Afterwards the upgrade cluster is removed and the orignal cluster bootstraps from the upgrade's backup.
## Prerequisites
- Kubernetes
- Helm
- CloudNative PG Operator
## Parameters
See the [values files](values.yaml).

View File

@@ -0,0 +1,17 @@
{{- if .Values.backup.inititeBackup }}
apiVersion: postgresql.cnpg.io/v1
kind: Backup
metadata:
name: "postgresql-{{ .Release.Name }}-cluster-upgrade-backup"
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: "postgresql-{{ .Release.Name }}-cluster-upgrade-backup"
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: database
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
method: barmanObjectStore
cluster:
name: "postgresql-{{ .Release.Name }}-cluster-upgrade"
{{- end }}

View File

@@ -0,0 +1,68 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: "postgresql-{{ .Release.Name }}-cluster-upgrade"
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: "postgresql-{{ .Release.Name }}-cluster-upgrade"
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: database
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
imageName: "{{ .Values.cluster.image.repository }}:{{ .Values.cluster.image.tag }}"
instances: {{ .Values.cluster.instances }}
affinity:
enablePodAntiAffinity: true
topologyKey: kubernetes.io/hostname
postgresql:
parameters:
{{- toYaml .Values.cluster.parameters | nindent 6 }}
resources:
{{- toYaml .Values.cluster.resources | nindent 4 }}
storage:
storageClass: {{ .Values.cluster.storage.data.storageClass }}
size: {{ .Values.cluster.storage.data.size }}
walStorage:
storageClass: {{ .Values.cluster.storage.wal.storageClass }}
size: {{ .Values.cluster.storage.wal.size }}
monitoring:
enablePodMonitor: true
bootstrap:
initdb:
import:
type: {{ .Values.upgrade.importType }}
databases:
{{- toYaml .Values.upgrade.importDatabases | nindent 10 }}
source:
externalCluster: "postgresql-{{ .Release.Name }}-cluster"
externalClusters:
- name: "postgresql-{{ .Release.Name }}-cluster"
connectionParameters:
host: "postgresql-{{ .Release.Name }}-cluster-rw"
user: app
dbname: app
password:
name: "postgresql-{{ .Release.Name }}-cluster-app"
key: password
{{- if .Values.backup.backupEnabled }}
backup:
retentionPolicy: "{{ .Values.backup.retentionPolicy }}"
barmanObjectStore:
destinationPath: "s3://{{ .Values.backup.bucket }}/{{ .Values.cluster.name }}/postgresql/{{ .Release.Name }}-cluster"
endpointURL: {{ .Values.backup.endpointURL }}
serverName: "postgresql-{{ .Release.Name }}-cluster-backup-index-{{ .Values.backup.backupIndex }}"
s3Credentials:
accessKeyId:
name: "postgresql-{{ .Release.Name }}-cluster-backup-secret"
key: ACCESS_KEY_ID
secretAccessKey:
name: "postgresql-{{ .Release.Name }}-cluster-backup-secret"
key: ACCESS_SECRET_KEY
data:
compression: {{ .Values.cluster.compression }}
wal:
compression: {{ .Values.cluster.compression }}
{{- end }}

View File

@@ -0,0 +1,37 @@
cluster:
name:
image:
repository: ghcr.io/cloudnative-pg/postgresql
tag: 16.2
instances: 1
parameters:
shared_buffers: 128MB
max_slot_wal_keep_size: 2000MB
hot_standby_feedback: "on"
compression: snappy
resources:
requests:
memory: 512Mi
cpu: 100m
limits:
memory: 2Gi
cpu: 1500m
hugepages-2Mi: 512Mi
storage:
data:
storageClass:
size: 10Gi
wal:
storageClass:
size: 2Gi
upgrade:
importType: microservice
importDatabases:
- app
backup:
backupEnabled: false
inititeBackup: false
retentionPolicy: 3d
backupIndex: 1
endpointURL:
bucket:

View File

@@ -1,6 +1,6 @@
apiVersion: v2
name: postgres-cluster
version: 0.2.3
version: 0.3.0
description: Chart for cloudnative-pg cluster
keywords:
- database
@@ -10,4 +10,4 @@ sources:
maintainers:
- name: alexlebens
icon: https://avatars.githubusercontent.com/u/100373852?s=48&v=4
appVersion: v1.22.1
appVersion: v1.22.2

View File

@@ -1,9 +1,9 @@
cluster:
name: cl01tl
name:
image:
repository: ghcr.io/cloudnative-pg/postgresql
tag: 16.0
instances: 2
tag: 16.2
instances: 3
parameters:
shared_buffers: 128MB
max_slot_wal_keep_size: 2000MB
@@ -19,10 +19,10 @@ cluster:
hugepages-2Mi: 512Mi
storage:
data:
storageClass: default
storageClass:
size: 10Gi
wal:
storageClass: default
storageClass:
size: 2Gi
bootstrap:
recoveryEnabled: false

View File

@@ -1,6 +1,6 @@
apiVersion: v2
name: tubearchivist
version: 0.1.0
version: 0.2.0
description: Chart for Tube Archivist
keywords:
- download
@@ -14,7 +14,7 @@ maintainers:
icon: https://avatars.githubusercontent.com/u/102734415?s=48&v=4
dependencies:
- name: redis
version: 18.19.4
version: 19.1.0
repository: https://charts.bitnami.com/bitnami
- name: elasticsearch
version: 20.0.4

View File

@@ -35,7 +35,7 @@ persistence:
redis:
image:
repository: redis/redis-stack-server
tag: 7.2.0-v9
tag: 7.2.0-v10
architecture: standalone
auth:
enabled: false