feat: add helm chart
This commit is contained in:
parent
7d3852150b
commit
d454ec8fc9
12 changed files with 231 additions and 0 deletions
6
charts/backoffice/Chart.yaml
Normal file
6
charts/backoffice/Chart.yaml
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
apiVersion: v2
|
||||||
|
name: backoffice
|
||||||
|
description: A Kubernetes Helm chart for backoffice
|
||||||
|
type: application
|
||||||
|
version: 0.1.0
|
||||||
|
appVersion: 0.1.0
|
||||||
3
charts/backoffice/templates/NOTES.txt
Normal file
3
charts/backoffice/templates/NOTES.txt
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
URL: https://{{ .Values.ingress.host }}
|
||||||
|
{{- end }}
|
||||||
11
charts/backoffice/templates/configmap.yaml
Normal file
11
charts/backoffice/templates/configmap.yaml
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
kind: kind: ConfigMap
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: {{ .Release.Name }}-config
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": pre-install,pre-upgrade
|
||||||
|
"helm.sh/hook-weight": "-15"
|
||||||
|
data:
|
||||||
|
NODE_ENV: {{ .Values.env }}
|
||||||
|
NEXTAUTH_URL: "https://{{ .Values.ingress.host }}/"
|
||||||
|
PORT: {{ .Values.service.portNumber | quote }}
|
||||||
44
charts/backoffice/templates/deployment.yaml
Normal file
44
charts/backoffice/templates/deployment.yaml
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ .Release.Name }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: {{ .Chart.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: Always
|
||||||
|
ports:
|
||||||
|
- name: {{ .Values.service.portName }}
|
||||||
|
containerPort: {{ .Values.service.portNumber }}
|
||||||
|
protocol: TCP
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: {{ .Values.service.portName }}
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: {{ .Values.service.portName }}
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: {{ .Release.Name }}-config
|
||||||
|
- secretRef:
|
||||||
|
name: {{ .Release.Name }}-database
|
||||||
|
- secretRef:
|
||||||
|
name: {{ .Release.Name }}-nextauth
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
30
charts/backoffice/templates/ingress.yaml
Normal file
30
charts/backoffice/templates/ingress.yaml
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
{{- if .Values.ingress.enabled -}}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ .Release.Name }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
ingressClassName: {{ .Values.ingress.className }}
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- {{ .Values.ingress.host | quote }}
|
||||||
|
secretName: {{ .Release.Name }}-tls
|
||||||
|
|
||||||
|
rules:
|
||||||
|
- host: {{ .Values.ingress.host | quote }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: {{ .Values.ingress.path }}
|
||||||
|
pathType: {{ .Values.ingress.pathType }}
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: {{ .Release.Name }}
|
||||||
|
port:
|
||||||
|
name: {{ .Values.service.port.name }}
|
||||||
|
{{- end -}}
|
||||||
26
charts/backoffice/templates/job-migration.yaml
Normal file
26
charts/backoffice/templates/job-migration.yaml
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: {{ .Release.Name }}
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": pre-install,pre-upgrade
|
||||||
|
"helm.sh/hook-weight": "-10"
|
||||||
|
"helm.sh/hook-delete-policy": before-hook-creation #,hook-succeeded
|
||||||
|
spec:
|
||||||
|
backoffLimit: 1
|
||||||
|
ttlSecondsAfterFinished: 86400 # 1 day
|
||||||
|
activeDeadlineSeconds: 120 # 2 minutes
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }}-migration
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
command: ["npx", "prisma", "migrate", "deploy"]
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: {{ .Release.Name }}-config
|
||||||
|
- secretRef:
|
||||||
|
name: {{ .Release.Name }}-database
|
||||||
|
- secretRef:
|
||||||
|
name: {{ .Release.Name }}-nextauth
|
||||||
|
restartPolicy: Never
|
||||||
26
charts/backoffice/templates/job-seed.yaml
Normal file
26
charts/backoffice/templates/job-seed.yaml
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: {{ .Release.Name }}
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": pre-install,pre-upgrade
|
||||||
|
"helm.sh/hook-weight": "-5"
|
||||||
|
"helm.sh/hook-delete-policy": before-hook-creation #,hook-succeeded
|
||||||
|
spec:
|
||||||
|
backoffLimit: 1
|
||||||
|
ttlSecondsAfterFinished: 86400 # 1 day
|
||||||
|
activeDeadlineSeconds: 120 # 2 minutes
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }}-seed
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
command: ["npx", "prisma", "db", "seed"]
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: {{ .Release.Name }}-config
|
||||||
|
- secretRef:
|
||||||
|
name: {{ .Release.Name }}-database
|
||||||
|
- secretRef:
|
||||||
|
name: {{ .Release.Name }}-nextauth
|
||||||
|
restartPolicy: Never
|
||||||
9
charts/backoffice/templates/secret-database.yaml
Normal file
9
charts/backoffice/templates/secret-database.yaml
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ .Release.Name }}-database
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": pre-install,pre-upgrade
|
||||||
|
"helm.sh/hook-weight": "-15"
|
||||||
|
stringData:
|
||||||
|
DATABASE_URL: {{ .Values.backoffice.secrets.databaseURL }}
|
||||||
12
charts/backoffice/templates/secret-nextauth.yaml
Normal file
12
charts/backoffice/templates/secret-nextauth.yaml
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ .Release.Name }}-nextauth
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": pre-install,pre-upgrade
|
||||||
|
"helm.sh/hook-weight": "-15"
|
||||||
|
stringData:
|
||||||
|
NEXTAUTH_SECRET: {{ .Values.backoffice.secrets.nextauthSecret }}
|
||||||
|
GOOGLE_CLIENT_ID: {{ .Values.backoffice.secrets.googleClientID }}
|
||||||
|
GOOGLE_CLIENT_SECRET: {{ .Values.backoffice.secrets.googleClientSecret }}
|
||||||
18
charts/backoffice/templates/service.yaml
Normal file
18
charts/backoffice/templates/service.yaml
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ .Release.Name }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.portNumber }}
|
||||||
|
targetPort: {{ .Values.service.portNumber }}
|
||||||
|
protocol: TCP
|
||||||
|
name: {{ .Values.service.portName }}
|
||||||
|
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/name: {{ .Chart.Name }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
8
charts/backoffice/values.staging.yaml
Normal file
8
charts/backoffice/values.staging.yaml
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
host: staging.backoffice.mareshq.com
|
||||||
|
annotations:
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
cert-manager.io/issuer: letsencrypt-prod
|
||||||
|
|
||||||
|
env: staging
|
||||||
38
charts/backoffice/values.yaml
Normal file
38
charts/backoffice/values.yaml
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/vojtechmares/backoffice
|
||||||
|
tag:
|
||||||
|
|
||||||
|
imagePullSecrets: {}
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
host: example.com
|
||||||
|
ingressClass: nginx
|
||||||
|
path: /
|
||||||
|
pathType: Prefix
|
||||||
|
annotations:
|
||||||
|
{}
|
||||||
|
# cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
# cert-manager.io/issuer: letsencrypt-prod
|
||||||
|
|
||||||
|
service:
|
||||||
|
portName: http
|
||||||
|
portNumber: 3000
|
||||||
|
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 300m
|
||||||
|
memory: 512Mi
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 128Mi
|
||||||
|
|
||||||
|
env: null
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
databaseURL: null
|
||||||
|
nextauthSecret: null
|
||||||
|
googleClientID: null
|
||||||
|
googleClientSecret: null
|
||||||
Reference in a new issue