diff --git a/charts/tasko-chart/templates/db-service.yaml b/charts/tasko-chart/templates/db-service.yaml new file mode 100644 index 0000000..ccd3c3d --- /dev/null +++ b/charts/tasko-chart/templates/db-service.yaml @@ -0,0 +1,38 @@ +{{- if .Values.postgres }} +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ include "tasko.fullname" . }}-db-headless + labels: + {{- include "tasko.labels" . | nindent 4 }} + app.kubernetes.io/component: database +spec: + clusterIP: None + selector: + {{- include "tasko.selectorLabels" . | nindent 4 }} + app.kubernetes.io/component: database + ports: + - name: postgres + port: {{ .Values.postgres.service.port }} + targetPort: {{ .Values.postgres.service.targetPort }} + protocol: TCP +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ include "tasko.fullname" . }}-db + labels: + {{- include "tasko.labels" . | nindent 4 }} + app.kubernetes.io/component: database +spec: + type: {{ .Values.postgres.service.type }} + selector: + {{- include "tasko.selectorLabels" . | nindent 4 }} + app.kubernetes.io/component: database + ports: + - name: postgres + port: {{ .Values.postgres.service.port }} + targetPort: {{ .Values.postgres.service.targetPort }} + protocol: TCP +{{- end }} diff --git a/charts/tasko-chart/templates/db-statefulset.yaml b/charts/tasko-chart/templates/db-statefulset.yaml new file mode 100644 index 0000000..66b3f55 --- /dev/null +++ b/charts/tasko-chart/templates/db-statefulset.yaml @@ -0,0 +1,81 @@ +{{- if .Values.postgres }} +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: {{ include "tasko.fullname" . }}-db + labels: + {{- include "tasko.labels" . | nindent 4 }} + app.kubernetes.io/component: database +spec: + serviceName: {{ include "tasko.fullname" . }}-db-headless + replicas: 1 + selector: + matchLabels: + {{- include "tasko.selectorLabels" . | nindent 6 }} + app.kubernetes.io/component: database + template: + metadata: + labels: + {{- include "tasko.selectorLabels" . | nindent 8 }} + app.kubernetes.io/component: database + spec: + containers: + - name: postgres + image: "{{ .Values.postgres.image.repository }}:{{ .Values.postgres.image.tag }}" + imagePullPolicy: {{ .Values.postgres.image.pullPolicy }} + ports: + - containerPort: {{ .Values.postgres.port }} + name: postgres + protocol: TCP + env: + - name: POSTGRES_USER + value: {{ .Values.postgres.user | quote }} + - name: POSTGRES_PASSWORD + value: {{ .Values.postgres.password | quote }} + - name: POSTGRES_DB + value: {{ .Values.postgres.database | quote }} + - name: PGDATA + value: /var/lib/postgresql/data/pgdata + volumeMounts: + - name: data + mountPath: /var/lib/postgresql/data + livenessProbe: + exec: + command: + - /bin/sh + - -c + - pg_isready -U {{ .Values.postgres.user }} + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + readinessProbe: + exec: + command: + - /bin/sh + - -c + - pg_isready -U {{ .Values.postgres.user }} + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 2 + resources: + requests: + cpu: {{ .Values.postgres.resources.requests.cpu }} + memory: {{ .Values.postgres.resources.requests.memory }} + limits: + cpu: {{ .Values.postgres.resources.limits.cpu }} + memory: {{ .Values.postgres.resources.limits.memory }} + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: + - {{ .Values.postgres.persistence.accessMode }} + resources: + requests: + storage: {{ .Values.postgres.persistence.size }} + {{- if .Values.postgres.persistence.storageClass }} + storageClassName: {{ .Values.postgres.persistence.storageClass | quote }} + {{- end }} +{{- end }}