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