Compare commits

...

25 Commits

Author SHA1 Message Date
487786455c change default credential secret name 2024-04-13 03:28:27 -06:00
585d39657a change how the cluster name is generated and used 2024-04-13 03:24:58 -06:00
e5e2812ed5 remove chart as functionality is now included in postgres-cluster chart 2024-04-13 02:46:38 -06:00
506218210e add replica import type 2024-04-13 02:41:46 -06:00
a7a08ef9f3 change chart to align with cnpg's chart 2024-04-13 02:06:02 -06:00
0fe94afd2a revert to redis image 2024-04-12 20:11:10 -06:00
renovate[bot]
73262aa60a Update homeassistant/home-assistant Docker tag to v2024.4.3 (#31)
* Update homeassistant/home-assistant Docker tag to v2024.4.3

* update chart

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Lebens <alexanderlebens@gmail.com>
2024-04-12 17:42:37 -06:00
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
756ef9b0c6 upgrade elasticsearch chart version 2024-04-11 17:44:53 -06:00
renovate[bot]
8baec6fd41 Update bbilly1/tubearchivist Docker tag to v0.4.7 (#30)
* Update bbilly1/tubearchivist Docker tag to v0.4.7

* update chart

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Lebens <alexanderlebens@gmail.com>
2024-04-11 17:38:23 -06:00
c1ab4afc46 add s3 accelerate env 2024-04-09 22:35:16 -06:00
bdcd63284a add url protocol to s3 endpoint 2024-04-09 20:16:43 -06:00
renovate[bot]
e8a951405d Update linuxserver/code-server Docker tag to v4.23.0 (#29)
* Update linuxserver/code-server Docker tag to v4.23.0

* update chart

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Lebens <alexanderlebens@gmail.com>
2024-04-08 18:19:18 -06:00
renovate[bot]
93caa67bad Update ghcr.io/gethomepage/homepage Docker tag to v0.8.11 (#28)
* Update ghcr.io/gethomepage/homepage Docker tag to v0.8.11

* update chart

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Lebens <alexanderlebens@gmail.com>
2024-04-08 11:30:31 -06:00
renovate[bot]
0dfaebdb7f Update homeassistant/home-assistant Docker tag to v2024.4.2 (#27)
* Update homeassistant/home-assistant Docker tag to v2024.4.2

* update chart

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Lebens <alexanderlebens@gmail.com>
2024-04-08 11:28:09 -06:00
18 changed files with 494 additions and 145 deletions

View File

@@ -1,6 +1,6 @@
apiVersion: v2 apiVersion: v2
name: home-assistant name: home-assistant
version: 0.1.6 version: 0.1.9
description: Chart for Home Assistant description: Chart for Home Assistant
keywords: keywords:
- home-automation - home-automation
@@ -9,4 +9,4 @@ sources:
maintainers: maintainers:
- name: alexlebens - name: alexlebens
icon: https://avatars.githubusercontent.com/u/13844975?s=200&v=4 icon: https://avatars.githubusercontent.com/u/13844975?s=200&v=4
appVersion: v2024.4.1 appVersion: v2024.4.3

View File

@@ -3,7 +3,7 @@ deployment:
strategy: Recreate strategy: Recreate
image: image:
repository: homeassistant/home-assistant repository: homeassistant/home-assistant
tag: 2024.4.1 tag: 2024.4.3
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
env: env:
TZ: UTC TZ: UTC
@@ -56,7 +56,7 @@ codeserver:
enabled: false enabled: false
image: image:
repository: linuxserver/code-server repository: linuxserver/code-server
tag: 4.22.1 tag: 4.23.0
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
env: env:
TZ: UTC TZ: UTC

View File

@@ -1,6 +1,6 @@
apiVersion: v2 apiVersion: v2
name: homepage name: homepage
version: 0.0.9 version: 0.0.10
description: Chart for benphelps homepage description: Chart for benphelps homepage
keywords: keywords:
- dashboard - dashboard
@@ -9,4 +9,4 @@ sources:
maintainers: maintainers:
- name: alexlebens - name: alexlebens
icon: https://github.com/benphelps/homepage/blob/de584eae8f12a0d257e554e9511ef19bd2a1232c/public/mstile-150x150.png icon: https://github.com/benphelps/homepage/blob/de584eae8f12a0d257e554e9511ef19bd2a1232c/public/mstile-150x150.png
appVersion: v0.8.10 appVersion: v0.8.11

View File

@@ -3,7 +3,7 @@ deployment:
strategy: Recreate strategy: Recreate
image: image:
repository: ghcr.io/gethomepage/homepage repository: ghcr.io/gethomepage/homepage
tag: v0.8.10 tag: v0.8.11
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
env: env:
envFrom: envFrom:

View File

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

View File

@@ -124,14 +124,18 @@ spec:
name: "{{ .Values.persistence.s3.endpointConfigMap.name }}" name: "{{ .Values.persistence.s3.endpointConfigMap.name }}"
key: BUCKET_PORT key: BUCKET_PORT
- name: AWS_S3_UPLOAD_BUCKET_URL - name: AWS_S3_UPLOAD_BUCKET_URL
value: "$(AWS_S3_UPLOAD_BUCKET_HOST):$(AWS_S3_UPLOAD_BUCKET_PORT)|" value: "{{ .Values.persistence.s3.urlProtocol }}://$(AWS_S3_UPLOAD_BUCKET_NAME).$(AWS_S3_UPLOAD_BUCKET_HOST):$(AWS_S3_UPLOAD_BUCKET_PORT)"
- name: AWS_S3_ACCELERATE_URL
value: "{{ .Values.persistence.s3.urlProtocol }}://$(AWS_S3_UPLOAD_BUCKET_NAME).$(AWS_S3_UPLOAD_BUCKET_HOST):$(AWS_S3_UPLOAD_BUCKET_PORT)"
{{- else }} {{- else }}
- name: AWS_REGION - name: AWS_REGION
value: "{{ .Values.persistence.s3.region }}" value: "{{ .Values.persistence.s3.region }}"
- name: AWS_S3_UPLOAD_BUCKET_NAME - name: AWS_S3_UPLOAD_BUCKET_NAME
value: "{{ .Values.persistence.s3.bucketName }}" value: "{{ .Values.persistence.s3.bucketName }}"
- name: AWS_S3_UPLOAD_BUCKET_URL - name: AWS_S3_UPLOAD_BUCKET_URL
value: "{{ .Values.persistence.s3.endpoint }}" value: "{{ .Values.persistence.s3.urlProtocol }}://{{ .Values.persistence.s3.bucketName }}.{{ .Values.persistence.s3.host }}"
- name: AWS_S3_ACCELERATE_URL
value: "{{ .Values.persistence.s3.urlProtocol }}://{{ .Values.persistence.s3.bucketName }}.{{ .Values.persistence.s3.host }}"
{{- end }} {{- end }}
- name: AWS_S3_FORCE_PATH_STYLE - name: AWS_S3_FORCE_PATH_STYLE
value: "{{ .Values.persistence.s3.forcePathStyle }}" value: "{{ .Values.persistence.s3.forcePathStyle }}"

View File

@@ -29,7 +29,8 @@ persistence:
name: name:
region: region:
bucketName: bucketName:
endpoint: host:
urlProtocol: http
uploadMaxSize: "26214400" uploadMaxSize: "26214400"
forcePathStyle: false forcePathStyle: false
acl: private acl: private
@@ -38,10 +39,6 @@ persistence:
storageSize: 50Gi storageSize: 50Gi
localRootDir: /var/lib/outline/data localRootDir: /var/lib/outline/data
uploadMaxSize: 26214400 uploadMaxSize: 26214400
redis:
architecture: standalone
auth:
enabled: false
outline: outline:
nodeEnv: production nodeEnv: production
url: url:
@@ -97,3 +94,7 @@ outline:
usernameClaim: usernameClaim:
displayName: displayName:
scopes: openid profile email scopes: openid profile email
redis:
architecture: standalone
auth:
enabled: false

View File

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

View File

@@ -0,0 +1,30 @@
{{- define "cluster.backup" -}}
{{- if .Values.backup.enabled }}
backup:
retentionPolicy: {{ .Values.backup.retentionPolicy }}
barmanObjectStore:
destinationPath: "s3://{{ .Values.backup.endpointBucket }}/{{ .Values.kubernetesClusterName }}/postgresql/{{ include "cluster.name" . }}"
endpointURL: {{ .Values.backup.endpointURL }}
{{- if .Values.backup.endpointCA }}
endpointCA:
name: {{ .Values.backup.endpointCA }}
key: ca-bundle.crt
{{- end }}
serverName: "{{ include "cluster.name" . }}-backup-{{ .Values.backup.backupIndex }}"
s3Credentials:
accessKeyId:
name: {{ include "cluster.backupCredentials" . }}
key: ACCESS_KEY_ID
secretAccessKey:
name: {{ include "cluster.backupCredentials" . }}
key: ACCESS_SECRET_KEY
wal:
compression: {{ .Values.backup.wal.compression }}
encryption: {{ .Values.backup.wal.encryption }}
maxParallel: {{ .Values.backup.wal.maxParallel }}
data:
compression: {{ .Values.backup.data.compression }}
encryption: {{ .Values.backup.data.encryption }}
jobs: {{ .Values.backup.data.jobs }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,92 @@
{{- define "cluster.bootstrap" -}}
bootstrap:
{{- if eq .Values.mode "standalone" }}
initdb:
{{- with .Values.cluster.initdb }}
{{- with (omit . "postInitApplicationSQL") }}
{{- . | toYaml | nindent 4 }}
{{- end }}
{{- end }}
postInitApplicationSQL:
{{- if eq .Values.type "postgis" }}
- CREATE EXTENSION IF NOT EXISTS postgis;
- CREATE EXTENSION IF NOT EXISTS postgis_topology;
- CREATE EXTENSION IF NOT EXISTS fuzzystrmatch;
- CREATE EXTENSION IF NOT EXISTS postgis_tiger_geocoder;
{{- else if eq .Values.type "timescaledb" }}
- CREATE EXTENSION IF NOT EXISTS timescaledb;
{{- end }}
{{- with .Values.cluster.initdb }}
{{- range .postInitApplicationSQL }}
{{- printf "- %s" . | nindent 6 }}
{{- end }}
{{- end }}
{{- else if eq .Values.mode "replica" }}
initdb:
import:
type: {{ .Values.replica.importType }}
databases:
{{- if and (len .Values.replica.importDatabases gt 1) (.Values.replica.importType eq "microservice") }}
{{ fail "Too many databases in import type of microservice!" }}
{{- else}}
{{- with .Values.replica.importDatabases }}
{{- . | toYaml | nindent 8 }}
{{- end }}
{{- end }}
{{- if .Values.replica.importType eq "monolith" }}
roles:
{{- with .Values.replica.importRoles }}
{{- . | toYaml | nindent 8 }}
{{- end }}
{{- end }}
{{- if and (.Values.replica.postImportApplicationSQL) (.Values.replica.importType eq "microservice") }}
postImportApplicationSQL:
{{- with .Values.replica.postImportApplicationSQL }}
{{- . | toYaml | nindent 8 }}
{{- end }}
{{- end }}
source:
externalCluster: "{{ include "cluster.name" . }}-cluster"
externalClusters:
- name: "{{ include "cluster.name" . }}-cluster"
{{- with .Values.replica.externalCluster }}
{{- . | toYaml | nindent 4 }}
{{- end }}
{{- else if eq .Values.mode "recovery" }}
recovery:
{{- with .Values.recovery.pitrTarget.time }}
recoveryTarget:
targetTime: {{ . }}
{{- end }}
source: "{{ include "cluster.name" . }}-backup-{{ .Values.recovery.recoveryIndex }}"
externalClusters:
- name: "{{ include "cluster.name" . }}-backup-{{ .Values.recovery.recoveryIndex }}"
barmanObjectStore:
serverName: "{{ include "cluster.name" . }}-backup-{{ .Values.recovery.recoveryIndex }}"
destinationPath: "s3://{{ .Values.recovery.endpointBucket }}/{{ .Values.kubernetesClusterName }}/postgresql/{{ .Values.recovery.recoveryName }}"
endpointURL: {{ .Values.recovery.endpointURL }}
{{- with .Values.recovery.endpointCA }}
endpointCA:
name: {{ . }}
key: ca-bundle.crt
{{- end }}
serverName: "{{ include "cluster.name" . }}-backup-{{ .Values.recovery.recoveryIndex }}"
s3Credentials:
accessKeyId:
name: {{ include "cluster.recoveryCredentials" . }}
key: ACCESS_KEY_ID
secretAccessKey:
name: {{ include "cluster.recoveryCredentials" . }}
key: ACCESS_SECRET_KEY
wal:
compression: {{ .Values.recovery.wal.compression }}
encryption: {{ .Values.recovery.wal.encryption }}
maxParallel: {{ .Values.recovery.wal.maxParallel }}
data:
compression: {{ .Values.recovery.data.compression }}
encryption: {{ .Values.recovery.data.encryption }}
jobs: {{ .Values.recovery.data.jobs }}
{{- else }}
{{ fail "Invalid cluster mode!" }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,69 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "cluster.name" -}}
{{- if .Values.nameOverride }}
{{- .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{ $version := split "." .Values.cluster.image.tag }}
{{- printf "postgresql-%s-%s" $version._0 .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "cluster.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "cluster.labels" -}}
helm.sh/chart: {{ include "cluster.chart" . }}
{{ include "cluster.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "cluster.selectorLabels" -}}
app.kubernetes.io/name: {{ include "cluster.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/part-of: cloudnative-pg
{{- end }}
{{/*
Generate name for object store credentials
*/}}
{{- define "cluster.recoveryCredentials" -}}
{{- if .Values.recovery.endpointCredentials -}}
{{- .Values.recovery.endpointCredentials -}}
{{- else -}}
{{- printf "%s-backup-secret" (include "cluster.name" .) | trunc 63 | trimSuffix "-" -}}
{{- end }}
{{- end }}
{{- define "cluster.backupCredentials" -}}
{{- if .Values.backup.endpointCredentials -}}
{{- .Values.backup.endpointCredentials -}}
{{- else -}}
{{- printf "%s-backup-secret" (include "cluster.name" .) | trunc 63 | trimSuffix "-" -}}
{{- end }}
{{- end }}
{{/*
Generate recovery server name
*/}}
{{- define "cluster.recoveryName" -}}
{{- if .Values.recovery.recoveryName -}}
{{- .Values.recovery.recoveryName -}}
{{- else -}}
{{ include "cluster.name" . }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,52 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: {{ include "cluster.name" . }}-cluster
namespace: {{ .Release.Namespace }}
{{- with .Values.cluster.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
labels:
{{- include "cluster.labels" . | nindent 4 }}
{{- with .Values.cluster.additionalLabels }}
{{ toYaml . | nindent 4 }}
{{- end }}
spec:
instances: {{ .Values.cluster.instances }}
imageName: "{{ .Values.cluster.image.repository }}:{{ .Values.cluster.image.tag }}"
imagePullPolicy: {{ .Values.cluster.image.pullPolicy }}
postgresUID: {{ .Values.cluster.postgresUID }}
postgresGID: {{ .Values.cluster.postgresGID }}
walStorage:
size: {{ .Values.cluster.walStorage.size }}
storageClass: {{ .Values.cluster.walStorage.storageClass }}
storage:
size: {{ .Values.cluster.storage.size }}
storageClass: {{ .Values.cluster.storage.storageClass }}
{{- with .Values.cluster.resources }}
resources:
{{- toYaml . | nindent 4 }}
{{ end }}
{{- with .Values.cluster.affinity }}
affinity:
{{- toYaml . | nindent 4 }}
{{- end }}
priorityClassName: {{ .Values.cluster.priorityClassName }}
primaryUpdateMethod: {{ .Values.cluster.primaryUpdateMethod }}
primaryUpdateStrategy: {{ .Values.cluster.primaryUpdateStrategy }}
logLevel: {{ .Values.cluster.logLevel }}
postgresql:
shared_preload_libraries:
{{- if eq .Values.type "timescaledb" }}
- timescaledb
{{- end }}
{{- with .Values.cluster.postgresql.parameters }}
parameters:
{{- toYaml . | nindent 6 }}
{{ end }}
monitoring:
enablePodMonitor: {{ and .Values.cluster.monitoring.enabled .Values.cluster.monitoring.podMonitor.enabled }}
{{ include "cluster.bootstrap" . | nindent 2 }}
{{ include "cluster.backup" . | nindent 2 }}

View File

@@ -1,81 +0,0 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: "postgresql-{{ .Release.Name }}-cluster"
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: postgresql
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 }}
replicationSlots:
highAvailability:
enabled: true
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
{{- if .Values.bootstrap.initdbEnabled }}
bootstrap:
initdb:
{{- toYaml .Values.bootstrap.initdb | nindent 6 }}
{{- end }}
{{- if .Values.bootstrap.recoveryEnabled }}
bootstrap:
recovery:
source: "postgresql-{{ .Release.Name }}-cluster-backup-index-{{ .Values.bootstrap.recoveryIndex }}"
externalClusters:
- name: "postgresql-{{ .Release.Name }}-cluster-backup-index-{{ .Values.bootstrap.recoveryIndex }}"
barmanObjectStore:
endpointURL: {{ .Values.bootstrap.endpointURL }}
destinationPath: "s3://{{ .Values.bootstrap.bucket }}/{{ .Values.cluster.name }}/postgresql/{{ .Release.Name }}-cluster"
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 }}
{{- 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,30 @@
{{- if and .Values.cluster.monitoring.enabled .Values.cluster.monitoring.prometheusRule.enabled -}}
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: {{ include "cluster.name" . }}-alert-rules
namespace: {{ .Release.Namespace }}
labels:
{{- include "cluster.labels" . | nindent 4 }}
{{- with .Values.cluster.additionalLabels }}
{{ toYaml . | nindent 4 }}
{{- end }}
spec:
groups:
- name: cloudnative-pg/{{ include "cluster.name" . }}
rules:
{{- $dict := dict "excludeRules" .Values.cluster.monitoring.prometheusRule.excludeRules -}}
{{- $_ := set $dict "value" "{{ $value }}" -}}
{{- $_ := set $dict "namespace" .Release.Namespace -}}
{{- $_ := set $dict "cluster" (printf "%s-cluster" (include "cluster.name" .) ) -}}
{{- $_ := set $dict "labels" (dict "job" "{{ $labels.job }}" "node" "{{ $labels.node }}" "pod" "{{ $labels.pod }}") -}}
{{- $_ := set $dict "podSelector" (printf "%s-cluster-([1-9][0-9]*)$" (include "cluster.name" .) ) -}}
{{- $_ := set $dict "Values" .Values -}}
{{- $_ := set $dict "Template" .Template -}}
{{- range $path, $_ := .Files.Glob "prometheus_rules/**.yaml" }}
{{- $tpl := tpl ($.Files.Get $path) $dict | nindent 10 | trim -}}
{{- with $tpl }}
- {{ $tpl }}
{{- end -}}
{{- end -}}
{{ end }}

View File

@@ -1,16 +1,18 @@
{{ if .Values.backup.enabled }}
apiVersion: postgresql.cnpg.io/v1 apiVersion: postgresql.cnpg.io/v1
kind: ScheduledBackup kind: ScheduledBackup
metadata: metadata:
name: "postgresql-{{ .Release.Name }}-cluster-backup" name: {{ include "cluster.name" . }}-scheduled-backup
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
labels: labels:
app.kubernetes.io/name: postgresql {{- include "cluster.labels" . | nindent 4 }}
app.kubernetes.io/instance: {{ .Release.Name }} {{- with .Values.cluster.additionalLabels }}
app.kubernetes.io/version: {{ .Chart.AppVersion }} {{ toYaml . | nindent 4 }}
app.kubernetes.io/component: database {{- end }}
app.kubernetes.io/part-of: {{ .Release.Name }}
spec: spec:
immediate: true
schedule: {{ .Values.backup.schedule }} schedule: {{ .Values.backup.schedule }}
backupOwnerReference: self backupOwnerReference: self
cluster: cluster:
name: "postgresql-{{ .Release.Name }}-cluster" name: {{ include "cluster.name" . }}-cluster
{{ end }}

View File

@@ -1,42 +1,192 @@
# -- Override the name of the cluster
nameOverride: ""
###
# -- Type of the CNPG database. Available types:
# * `postgresql`
# * `postgis`
# * `timescaledb`
type: postgresql
###
# Cluster mode of operation. Available modes:
# * `standalone` - Default mode. Creates new or updates an existing CNPG cluster.
# * `recovery` - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup
# * `replica` - Create database as a replica from another CNPG cluster
mode: standalone
# Generates bucket name and path for recovery and backup, creates: <endpointBucket>/<clusterName>/postgresql/{{ .Release.Name }}
kubernetesClusterName: ""
cluster: cluster:
name: cl01tl instances: 3
image: image:
repository: ghcr.io/cloudnative-pg/postgresql repository: ghcr.io/cloudnative-pg/postgresql
tag: 16.0 tag: "16.2"
instances: 2 pullPolicy: IfNotPresent
parameters:
shared_buffers: 128MB # The UID and GID of the postgres user inside the image
max_slot_wal_keep_size: 2000MB postgresUID: 26
hot_standby_feedback: "on" postgresGID: 26
compression: snappy
walStorage:
size: 2Gi
storageClass: ""
storage:
size: 10Gi
storageClass: ""
resources: resources:
requests: requests:
memory: 512Mi memory: 256Mi
cpu: 100m cpu: 10m
limits: limits:
memory: 2Gi memory: 1Gi
cpu: 1500m cpu: 100m
hugepages-2Mi: 512Mi hugepages-2Mi: 256Mi
storage:
data: # See: https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-AffinityConfiguration
storageClass: default affinity:
size: 10Gi enablePodAntiAffinity: true
wal: topologyKey: kubernetes.io/hostname
storageClass: default
size: 2Gi additionalLabels: {}
bootstrap: annotations: {}
recoveryEnabled: false
priorityClassName: ""
# Method to follow to upgrade the primary server during a rolling update procedure, after all replicas have been
# successfully updated. It can be switchover (default) or in-place (restart).
primaryUpdateMethod: switchover
# Strategy to follow to upgrade the primary server during a rolling update procedure, after all replicas have been
# successfully updated: it can be automated (unsupervised - default) or manual (supervised)
primaryUpdateStrategy: unsupervised
logLevel: "info"
monitoring:
enabled: false
podMonitor:
enabled: true
prometheusRule:
enabled: true
excludeRules: []
# See: https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-PostgresConfiguration
postgresql:
parameters:
shared_buffers: 128MB
max_slot_wal_keep_size: 2000MB
hot_standby_feedback: "on"
# BootstrapInitDB is the configuration of the bootstrap process when initdb is used.
# See: https://cloudnative-pg.io/documentation/current/bootstrap/
# See: https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1/#postgresql-cnpg-io-v1-bootstrapinitdb
initdb: {}
# database: app
# owner: app
# secret: "" # Name of the secret containing the initial credentials for the owner of the user database. If empty a new secret will be created from scratch
# postInitApplicationSQL:
# - CREATE TABLE IF NOT EXISTS example;
recovery:
# Point in time recovery target in RFC3339 format
pitrTarget:
time: ""
# Overrides the provider specific default endpoint. Defaults to:
# S3: https://s3.<region>.amazonaws.com"
endpointURL: ""
endpointBucket: ""
# Specifies secret that contains a CA bundle to validate a privately signed certificate, should contain the key ca-bundle.crt
endpointCA: ""
# Specifies secret that contains S3 credentials, should contain the keys ACCESS_KEY_ID and ACCESS_SECRET_KEY
endpointCredentials: ""
# Generate external cluster name, uses: postgresql-{{ .Release.Name }}-cluster-backup-index-{{ .Values.recovery.recoveryIndex }}"
recoveryIndex: 1 recoveryIndex: 1
endpointURL:
bucket: # Name of the recovery cluster in the object store, defaults to "cluster.name"
initdbEnabled: false recoveryName: ""
initdb:
database: app wal:
owner: app # WAL compression method. One of `` (for no compression), `gzip`, `bzip2` or `snappy`.
compression: snappy
# Whether to instruct the storage provider to encrypt WAL files. One of `` (use the storage container default), `AES256` or `aws:kms`.
encryption: ""
# Number of WAL files to be archived or restored in parallel.
maxParallel: 2
data:
# Data compression method. One of `` (for no compression), `gzip`, `bzip2` or `snappy`.
compression: snappy
# Whether to instruct the storage provider to encrypt data files. One of `` (use the storage container default), `AES256` or `aws:kms`.
encryption: ""
# Number of data files to be archived or restored in parallel.
jobs: 2
replica:
# See https://cloudnative-pg.io/documentation/current/database_import/
# * `microservice` - Single database import as expected from cnpg clusters
# * `monolith` - Import multiple databases and roles
importType: microservice
# If type microservice only one database is allowed, default is app as standard in cnpg clusters
importDatabases:
- app
# If type microservice no roles are imported and ignored
importRoles: []
# If import type is monolith postImportApplicationSQL is not supported and ignored
postImportApplicationSQL: []
# External cluster connection, password specifies a secret name and the key containing the password value
externalCluster:
connectionParameters:
host: postgresql
user: app
dbname: app
password:
name: postgresql
key: password
backup: backup:
backupEnabled: true enabled: false
schedule: "0 0 0 * * *"
retentionPolicy: 14d # Overrides the provider specific default endpoint
endpointURL: ""
endpointBucket: ""
# Specifies secret that contains a CA bundle to validate a privately signed certificate, should contain the key ca-bundle.crt
endpointCA: ""
# Specifies secret that contains S3 credentials, should contain the keys ACCESS_KEY_ID and ACCESS_SECRET_KEY
endpointCredentials: ""
# Generate external cluster name, creates: postgresql-{{ .Release.Name }}-cluster-backup-index-{{ .Values.backups.backupIndex }}"
backupIndex: 1 backupIndex: 1
endpointURL:
bucket: wal:
# WAL compression method. One of `` (for no compression), `gzip`, `bzip2` or `snappy`.
compression: snappy
# Whether to instruct the storage provider to encrypt WAL files. One of `` (use the storage container default), `AES256` or `aws:kms`.
encryption: ""
# Number of WAL files to be archived or restored in parallel.
maxParallel: 2
data:
# Data compression method. One of `` (for no compression), `gzip`, `bzip2` or `snappy`.
compression: snappy
# Whether to instruct the storage provider to encrypt data files. One of `` (use the storage container default), `AES256` or `aws:kms`.
encryption: ""
# Number of data files to be archived or restored in parallel.
jobs: 2
# Retention policy for backups
retentionPolicy: "30d"
# Scheduled backup in cron format
schedule: "0 0 0 * * *"

View File

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

View File

@@ -3,7 +3,7 @@ deployment:
strategy: Recreate strategy: Recreate
image: image:
repository: bbilly1/tubearchivist repository: bbilly1/tubearchivist
tag: v0.4.6 tag: v0.4.7
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent
env: env:
TZ: UTC TZ: UTC
@@ -35,7 +35,7 @@ persistence:
redis: redis:
image: image:
repository: redis/redis-stack-server repository: redis/redis-stack-server
tag: 7.2.0-v9 tag: 7.2.0-v10
architecture: standalone architecture: standalone
auth: auth:
enabled: false enabled: false