mirror of
https://github.com/Sheldan/OnePlusBot.git
synced 2026-04-03 09:06:24 +00:00
[OPB-xxx] adding configuration and changing structure for k8s deployment
This commit is contained in:
62
deployment/helm/oneplus-bot/templates/_helpers.tpl
Normal file
62
deployment/helm/oneplus-bot/templates/_helpers.tpl
Normal file
@@ -0,0 +1,62 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "oneplusBot.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "oneplusBot.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "oneplusBot.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "oneplusBot.labels" -}}
|
||||
helm.sh/chart: {{ include "oneplusBot.chart" . }}
|
||||
{{ include "oneplusBot.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "oneplusBot.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "oneplusBot.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "oneplusBot.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "oneplusBot.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
7
deployment/helm/oneplus-bot/templates/api-keys.yaml
Normal file
7
deployment/helm/oneplus-bot/templates/api-keys.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: api-keys
|
||||
data:
|
||||
discordToken: {{ $.Values.apiKeys.discord.token | b64enc }} # b64enc is needed, because a stringData secret field cannot hold numeric values
|
||||
youtubeApiKey: {{ $.Values.apiKeys.youtube.apiKey | b64enc }}
|
||||
@@ -0,0 +1,69 @@
|
||||
{{- if .Values.dbConfigDeployment.enabled -}}
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
{{- $deploymentJobName := print ((include "oneplusBot.fullname" .) | trunc 39) "-db-config-deployment-job" }}
|
||||
name: {{ $deploymentJobName | trunc 63 }}
|
||||
annotations:
|
||||
"helm.sh/hook": pre-upgrade,pre-install
|
||||
"helm.sh/hook-weight": "-5"
|
||||
"helm.sh/hook-delete-policy": hook-succeeded
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: db-config-deployment-job
|
||||
image: "{{ $.Values.dbConfigDeployment.repository }}/{{ $.Values.dbConfigDeployment.image }}:{{ $.Values.dbConfigDeployment.tag | default .Chart.AppVersion}}"
|
||||
imagePullPolicy: {{ $.Values.dbConfigDeployment.pullPolicy }}
|
||||
args:
|
||||
- "/var/db-config/"
|
||||
env:
|
||||
- name: DB_PASS
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbPassword
|
||||
- name: DB_HOST
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbHost
|
||||
- name: DB_PORT
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbPort
|
||||
- name: DB_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbUser
|
||||
- name: DB_NAME
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbName
|
||||
- name: DB_SCHEME
|
||||
value: "abstracto"
|
||||
volumeMounts:
|
||||
- mountPath: "/var/db-config/"
|
||||
name: database-config-mount
|
||||
restartPolicy: Never
|
||||
initContainers:
|
||||
- name: database-config-data
|
||||
image: "{{ $.Values.dbConfigDeploymentData.repository }}/{{ $.Values.dbConfigDeploymentData.image }}:{{ $.Values.dbConfigDeploymentData.tag | default .Chart.AppVersion}}"
|
||||
imagePullPolicy: {{ $.Values.dbConfigDeploymentData.pullPolicy }}
|
||||
volumeMounts:
|
||||
- mountPath: "/var/run-config"
|
||||
name: database-config-mount
|
||||
volumes:
|
||||
- name: database-config-mount
|
||||
emptyDir: {}
|
||||
backoffLimit: 4
|
||||
{{- end }}
|
||||
|
||||
|
||||
13
deployment/helm/oneplus-bot/templates/db-credentials.yaml
Normal file
13
deployment/helm/oneplus-bot/templates/db-credentials.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: db-credentials
|
||||
annotations:
|
||||
"helm.sh/hook": pre-upgrade,pre-install
|
||||
"helm.sh/hook-weight": "-6"
|
||||
data:
|
||||
dbPassword: {{ $.Values.dbCredentials.password | b64enc }} # b64enc is needed, because a stringData secret field cannot hold numeric values
|
||||
dbUser: {{ $.Values.dbCredentials.userName | b64enc }}
|
||||
dbHost: {{ $.Values.dbCredentials.host | b64enc }}
|
||||
dbPort: {{ $.Values.dbCredentials.port | b64enc }}
|
||||
dbName: {{ $.Values.dbCredentials.name | b64enc }}
|
||||
106
deployment/helm/oneplus-bot/templates/deployment.yaml
Normal file
106
deployment/helm/oneplus-bot/templates/deployment.yaml
Normal file
@@ -0,0 +1,106 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "oneplusBot.fullname" . }}
|
||||
labels:
|
||||
{{- include "oneplusBot.labels" . | nindent 4 }}
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "oneplusBot.selectorLabels" . | nindent 6 }}
|
||||
template:
|
||||
metadata:
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "oneplusBot.selectorLabels" . | nindent 8 }}
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "oneplusBot.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||
image: "{{ .Values.bot.repository }}/{{ .Values.bot.image }}:{{ .Values.bot.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.bot.pullPolicy }}
|
||||
env:
|
||||
- name: DB_PASS
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbPassword
|
||||
- name: DB_HOST
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbHost
|
||||
- name: DB_PORT
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbPort
|
||||
- name: DB_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbUser
|
||||
- name: DB_NAME
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbName
|
||||
- name: TOKEN
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: api-keys
|
||||
key: discordToken
|
||||
- name: OPEN_WEATHER_MAP_API_KEY
|
||||
value: "placeholder" # a value is required, if the webservices module is loaded, but weather not used
|
||||
- name: YOUTUBE_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: api-keys
|
||||
key: youtubeApiKey
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: {{ .Values.service.port }}
|
||||
protocol: TCP
|
||||
- name: debug
|
||||
containerPort: 5005
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /actuator/health/liveness
|
||||
port: 8080
|
||||
initialDelaySeconds: {{ $.Values.bot.livenessProbe.initialDelaySeconds }}
|
||||
periodSeconds: {{ $.Values.bot.livenessProbe.periodSeconds }}
|
||||
failureThreshold: {{ $.Values.bot.livenessProbe.failureThreshold }}
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /actuator/health/readiness
|
||||
port: 8080
|
||||
initialDelaySeconds: {{ $.Values.bot.readinessProbe.initialDelaySeconds }}
|
||||
periodSeconds: {{ $.Values.bot.readinessProbe.periodSeconds }}
|
||||
failureThreshold: {{ $.Values.bot.readinessProbe.failureThreshold }}
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,42 @@
|
||||
{{- if $.Values.grafanaDeployment.enabled }}
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: grafana-dashboard-deployment-job
|
||||
annotations:
|
||||
"helm.sh/hook": post-install
|
||||
"helm.sh/hook-weight": "-4"
|
||||
"helm.sh/hook-delete-policy": hook-succeeded
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: template-deployment-job
|
||||
image: "{{ $.Values.grafanaDeployment.repository }}/{{ $.Values.grafanaDeployment.image }}:{{ $.Values.grafanaDeployment.tag }}"
|
||||
imagePullPolicy: {{ $.Values.grafanaDeployment.pullPolicy }}
|
||||
args:
|
||||
- "/var/userconfig"
|
||||
volumeMounts:
|
||||
- mountPath: "/var/userconfig"
|
||||
name: grafana-dashboard-config
|
||||
readOnly: true
|
||||
volumes:
|
||||
- name: grafana-dashboard-config
|
||||
secret:
|
||||
secretName: grafana-dashboard-config
|
||||
restartPolicy: Never
|
||||
backoffLimit: 4
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: grafana-dashboard-config
|
||||
data:
|
||||
config.yaml: {{ (tpl (.Files.Get "configuration/grafana/config.yaml") . ) | b64enc }}
|
||||
log-dashboard.json: {{ (tpl (.Files.Get "configuration/grafana/oneplus-bot-log-dashboard.json") . ) | b64enc }}
|
||||
discord-dashboard.json: {{ (tpl (.Files.Get "configuration/grafana/oneplus-bot-discord-dashboard.json") . ) | b64enc }}
|
||||
{{- end }}
|
||||
19
deployment/helm/oneplus-bot/templates/service.yaml
Normal file
19
deployment/helm/oneplus-bot/templates/service.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "oneplusBot.fullname" . }}
|
||||
labels:
|
||||
{{- include "oneplusBot.labels" . | nindent 4 }}
|
||||
{{- with .Values.service.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.port }}
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
{{- include "oneplusBot.selectorLabels" . | nindent 4 }}
|
||||
12
deployment/helm/oneplus-bot/templates/serviceaccount.yaml
Normal file
12
deployment/helm/oneplus-bot/templates/serviceaccount.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "oneplusBot.serviceAccountName" . }}
|
||||
labels:
|
||||
{{- include "oneplusBot.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,69 @@
|
||||
{{- if .Values.dbConfigDeployment.enabled -}}
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
{{- $deploymentJobName := print ((include "oneplusBot.fullname" .) | trunc 39) "-template-deployment-job" }}
|
||||
name: {{ $deploymentJobName | trunc 63 }}
|
||||
annotations:
|
||||
"helm.sh/hook": pre-upgrade,pre-install
|
||||
"helm.sh/hook-weight": "-4"
|
||||
"helm.sh/hook-delete-policy": hook-succeeded
|
||||
spec:
|
||||
template:
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: template-deployment-job
|
||||
image: "{{ $.Values.templateDeployment.repository }}/{{ $.Values.templateDeployment.image }}:{{ $.Values.templateDeployment.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ $.Values.templateDeployment.pullPolicy }}
|
||||
args:
|
||||
- "/var/template-config/"
|
||||
env:
|
||||
- name: DB_PASS
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbPassword
|
||||
- name: DB_HOST
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbHost
|
||||
- name: DB_PORT
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbPort
|
||||
- name: DB_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbUser
|
||||
- name: DB_NAME
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: db-credentials
|
||||
key: dbName
|
||||
- name: DB_SCHEME
|
||||
value: "abstracto."
|
||||
volumeMounts:
|
||||
- mountPath: "/var/template-config/"
|
||||
name: template-config-mount
|
||||
initContainers:
|
||||
- name: database-config-data
|
||||
image: "{{ $.Values.templateDeploymentData.repository }}/{{ $.Values.templateDeploymentData.image }}:{{ $.Values.templateDeploymentData.tag | default .Chart.AppVersion}}"
|
||||
imagePullPolicy: {{ $.Values.templateDeploymentData.pullPolicy }}
|
||||
volumeMounts:
|
||||
- mountPath: "/var/run-config"
|
||||
name: template-config-mount
|
||||
volumes:
|
||||
- name: template-config-mount
|
||||
emptyDir: {}
|
||||
restartPolicy: Never
|
||||
backoffLimit: 4
|
||||
{{- end }}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user