Add helm chart-releaser

# Motivations

# Modifications
This commit is contained in:
Twinki
2024-01-28 10:15:17 -05:00
parent 56b2192be3
commit aa7c1068bc
12 changed files with 390 additions and 356 deletions

View File

@@ -0,0 +1,40 @@
{{- $cPwd := randAlphaNum 12 | nospace -}}
{{- $sName := "" -}}
apiVersion: v1
kind: ConfigMap
metadata:
namespace: {{ .Values.namespace }}
name: "{{ .Release.Name }}-env-config"
annotations:
{{- with .Values.server.config.annotations }}
{{- toYaml . | nindent 4 }}
{{- end }}
labels:
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
app.kubernetes.io/name: "{{ .Release.Name }}-config"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/component: "{{ .Release.Name }}-config"
app.kubernetes.io/version: {{ .Chart.AppVersion }}
{{- with .Values.server.config.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
data:
PUID: "{{ .Values.server.config.puid }}"
PGID: "{{ .Values.server.config.pgid }}"
PORT: "{{ .Values.server.config.port }}"
PLAYERS: "{{ .Values.server.config.max_players }}"
MULTITHREADING: "{{ .Values.server.config.multithreading }}"
{{ if .Values.server.config.rcon.enable }}
RCON_ENABLED: "true"
RCON_PORT: "{{ .Values.server.config.rcon.port }}"
{{ end }}
{{ if .Values.server.config.community.enable }}
COMMUNITY: "true"
SERVER_PASSWORD: {{- if .Values.server.config.community.password }} "{{ .Values.server.config.community.password }}" {{ else }} {{ $cPwd }} {{ end }}
{{ end }}
{{ if .Values.server.config.server_name }}
SERVER_NAME: {{ regexReplaceAll "\\W+" .Values.server.config.server_name "_" }}
{{ else }}
SERVER_NAME: {{ printf "%s_%s" "palworld" (randAlphaNum 6 | nospace) }}
{{ end }}

View File

@@ -0,0 +1,70 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: {{ .Values.namespace }}
name: "{{ .Release.Name }}-server"
spec:
selector:
matchLabels:
app.kubernetes.io/component: "{{ .Release.Name }}-server"
strategy:
type: "{{ .Values.server.strategy }}"
template:
metadata:
annotations:
{{- with .Values.server.annotations }}
{{- toYaml . | nindent 4 }}
{{- end }}
labels:
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
app.kubernetes.io/name: "{{ .Release.Name }}-server"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/component: "{{ .Release.Name }}-server"
app.kubernetes.io/version: {{ .Chart.AppVersion }}
{{- with .Values.server.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
containers:
{{ if .Values.server.service.healthz.enabled }}
- name: healthz
image: "chussenot/tiny-server:latest"
imagePullPolicy: {{ .Values.server.image.imagePullPolicy }}
ports:
- name: healthz
containerPort: 80
protocol: TCP
{{ end }}
- name: server
image: "{{ .Values.server.image.name }}:{{ .Values.server.image.tag }}"
imagePullPolicy: {{ .Values.server.image.imagePullPolicy }}
resources:
{{- with .Values.server.resources }}
{{- toYaml . | nindent 12 }}
{{- end }}
ports:
{{- with .Values.server.ports }}
{{- toYaml . | nindent 12 }}
{{- end }}
env:
- name: ADMIN_PASSWORD
valueFrom:
secretKeyRef:
name: "{{ .Release.Name }}-rcon-password"
key: "rconPassword"
envFrom:
- configMapRef:
name: "{{ .Release.Name }}-env-config"
volumeMounts:
- mountPath: /palworld
name: datadir
volumes:
- name: datadir
persistentVolumeClaim:
{{- if not .Values.server.storage.external }}
claimName: "{{ .Release.Name }}-datadir-pvc"
{{ else }}
claimName: "{{ .Values.server.storage.externalName }}"
{{ end }}

View File

@@ -0,0 +1,31 @@
{{- if not .Values.server.storage.external }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
namespace: {{ .Values.namespace }}
name: "{{ .Release.Name }}-datadir-pvc"
annotations:
{{- with .Values.server.config.annotations }}
{{- toYaml . | nindent 4 }}
{{- end }}
labels:
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
app.kubernetes.io/name: "{{ .Release.Name }}-datadir-pvc"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/component: "{{ .Release.Name }}-datadir-pvc"
app.kubernetes.io/version: {{ .Chart.AppVersion }}
{{- if .Values.server.storage.preventDelete }}
helm.sh/resource-policy: keep
{{ end }}
{{- with .Values.server.config.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.server.storage.size }}
storageClassName: {{ .Values.server.storage.storageClassName }}
{{ end }}

View File

@@ -0,0 +1,25 @@
{{- define "server.rcon.password" -}}
{{- randAlphaNum 24 | nospace -}}
{{- end -}}
apiVersion: v1
kind: Secret
metadata:
namespace: {{ .Values.namespace }}
name: "{{ .Release.Name }}-rcon-password"
annotations:
{{- with .Values.server.config.annotations }}
{{- toYaml . | nindent 4 }}
{{- end }}
labels:
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
app.kubernetes.io/name: "{{ .Release.Name }}-rcon-password"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/component: "{{ .Release.Name }}-rcon-password"
app.kubernetes.io/version: {{ .Chart.AppVersion }}
{{- with .Values.server.config.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
type: Opaque
stringData:
rconPassword: {{- if .Values.server.config.rcon.password }} "{{ .Values.server.config.rcon.password }}" {{ else }} "{{ include "server.rcon.password" .}}" {{ end }}

View File

@@ -0,0 +1,34 @@
---
apiVersion: v1
kind: Service
metadata:
namespace: {{ .Values.namespace }}
name: "{{ .Release.Name }}-svc"
labels:
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
app.kubernetes.io/name: "{{ .Release.Name }}-svc"
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/component: "{{ .Release.Name }}-svc"
app.kubernetes.io/version: {{ .Chart.AppVersion }}
{{- with .Values.server.service.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
annotations:
{{- with .Values.server.config.annotations }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
selector:
app.kubernetes.io/component: "{{ .Release.Name }}-server"
ports:
{{ if .Values.server.service.healthz.enabled }}
- name: {{ .Values.server.service.healthz.name }}
port: {{ .Values.server.service.healthz.port }}
protocol: {{ .Values.server.service.healthz.protocol }}
targetPort: {{ .Values.server.service.healthz.targetPort }}
{{ end }}
{{- with .Values.server.service.ports }}
{{- toYaml . | nindent 4 }}
{{- end }}
type: {{ .Values.server.service.type }}