mirror of
https://github.com/YuzuZensai/palworld-server-docker.git
synced 2026-01-06 04:32:43 +00:00
- Added a helm chart with some basic doc;
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1 +1,4 @@
|
||||
palworld
|
||||
palworld
|
||||
.idea
|
||||
values*.yaml
|
||||
!chart/values.yaml
|
||||
20
chart/Chart.yaml
Normal file
20
chart/Chart.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
apiVersion: v2
|
||||
name: palworld
|
||||
version: 0.0.0
|
||||
description: This chart can provide an rAthena emulator installation on a Kubernetes cluster.
|
||||
type: application
|
||||
keywords:
|
||||
- palworld
|
||||
- server
|
||||
- kubernetes
|
||||
- helm
|
||||
home: https://github.com/thijsvanloef/palworld-server-docker
|
||||
sources:
|
||||
- https://github.com/thijsvanloef/palworld-server-docker
|
||||
maintainers:
|
||||
- name: Filipe Souza
|
||||
email: filipe.souza@mestre8d.com
|
||||
url: https://github.com/Filipe-Souza
|
||||
icon: https://cdn.akamai.steamstatic.com/steam/apps/1623730/header.jpg
|
||||
appVersion: "latest"
|
||||
deprecated: false
|
||||
32
chart/README.md
Normal file
32
chart/README.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# Palworld Helm Chart
|
||||
|
||||
Allows you to deploy the usage of [Palworld Server docker](https://github.com/Filipe-Souza/palworld-server-docker) as a helm chart and with helm deployments.
|
||||
|
||||
This is an advanced method of installation and can be quite difficult to non-technical trying to set it up.
|
||||
|
||||
## Dependencies
|
||||
|
||||
You will need the [Helm client](https://helm.sh/docs/intro/install/) and a Kubernetes cluster.
|
||||
|
||||
## Install the chart
|
||||
|
||||
There is no helm package available yet, so you need to clone this repo and setup it manually, or with some GitOps tool like ArgoCD/FluxCD.
|
||||
|
||||
After cloning the repository, you can create a new file, e.g.: values.override.yaml to store your custom values.
|
||||
|
||||
After copying, modify your values.override.yaml as needed. You can look up the [values summary](VALUES_SUMMARY.md) to see the parameter documentation.
|
||||
|
||||
After that, you can apply the chart:
|
||||
|
||||
```bash
|
||||
helm install --create-namespace --namespace palworld palworld chart/ --values values.override.yaml
|
||||
```
|
||||
|
||||
You can remove all the resources created (except the PVC) with the following command:
|
||||
|
||||
```bash
|
||||
helm uninstall -n palworld palworld
|
||||
```
|
||||
|
||||
|
||||
|
||||
63
chart/VALUES_SUMMARY.md
Normal file
63
chart/VALUES_SUMMARY.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# palworld
|
||||
|
||||
  
|
||||
|
||||
This chart can provide an rAthena emulator installation on a Kubernetes cluster.
|
||||
|
||||
**Homepage:** <https://github.com/thijsvanloef/palworld-server-docker>
|
||||
|
||||
## Maintainers
|
||||
|
||||
| Name | Email | Url |
|
||||
| ---- | ------ | --- |
|
||||
| Filipe Souza | <filipe.souza@mestre8d.com> | <https://github.com/Filipe-Souza> |
|
||||
|
||||
## Source Code
|
||||
|
||||
* <https://github.com/thijsvanloef/palworld-server-docker>
|
||||
|
||||
## Values
|
||||
|
||||
| Key | Type | Default | Description |
|
||||
|-----|------|---------|-------------|
|
||||
| namespace | string | `"palworld"` | Namespace where the resources will be created |
|
||||
| server | dict | | The server configuration |
|
||||
| server.annotations | object | `{}` | Additional annotations to the resources |
|
||||
| server.config | dict | | Change the game server configuration. If you change those, make sure to change the service.ports and server.ports accordingly. Those are directly connected with the container image, providing multiple environment variables to the scripts. |
|
||||
| server.config.annotations | object | `{}` | Additional annotations to the resources |
|
||||
| server.config.community.enable | bool | `true` | Enables/disables the visibility of this server on Steam community servers list. |
|
||||
| server.config.community.password | string | `""` | If not provided, a random password will be generated and stored on the secret. |
|
||||
| server.config.labels | object | `{}` | Additional labels to the resources |
|
||||
| server.config.max_players | int | `16` | The max number of players supported. |
|
||||
| server.config.multithreading | bool | `true` | Enables the multithreading, allowing the usage of up to 4 cores (needs citation) |
|
||||
| server.config.query_port | string | `27015` | The query port of the game. |
|
||||
| server.config.rcon | dict | | Remote connection configuration. Allows the remote connection and management for the server. Those are directly connected with the container image, providing multiple environment variables to the scripts. |
|
||||
| server.config.rcon.enable | bool | `true` | Enables/disables the rcon port. |
|
||||
| server.config.rcon.password | string | `""` | If not provided, a random password will be generated and stored on the secret. |
|
||||
| server.config.rcon.port | string | `25575` | The port for rcon. If you change this, make sure to change the service.ports and server.ports accordingly. |
|
||||
| server.image | dict | | Define the parameters for the server image container |
|
||||
| server.image.imagePullPolicy | string | `"IfNotPresent"` | Define the pull policy for the server image. |
|
||||
| server.image.name | string | `"thijsvanloef/palworld-server-docker"` | Name of the image, without the tag. |
|
||||
| server.image.tag | string | `"latest"` | The tag of the image. |
|
||||
| server.labels | object | `{}` | Additional labels to the resources |
|
||||
| server.ports | dict | | Change the ports to be mapped to the pod. If you change those, make sure to change the service.ports and server.config accordingly. |
|
||||
| server.ports[0] | dict | `{"containerPort":8211,"name":"game","protocol":"UDP"}` | The "game" port definition. If you change this, make sure to change the service.ports.game and server.config accordingly. |
|
||||
| server.ports[1] | dict | `{"containerPort":27015,"name":"query","protocol":"UDP"}` | The "query" port definition . If you change this, make sure to change the service.ports.query_port and server.config accordingly. |
|
||||
| server.ports[2] | dict | `{"containerPort":25575,"name":"rcon","protocol":"UDP"}` | The "rcon" port definition . If you change this, make sure to change the service.ports.rcon and server.config accordingly. |
|
||||
| server.service | dict | | Change the service configuration. If you change those, make sure to change the server.config and server.ports accordingly. |
|
||||
| server.service.annotations | object | `{}` | Additional annotations to the resources |
|
||||
| server.service.enabled | bool | `true` | Enables the creation of the service component. |
|
||||
| server.service.labels | object | `{}` | Additional labels to the resources |
|
||||
| server.service.ports | dict | | Change the ports to be mapped to the service. If you change those, make sure to change the server.config and server.ports accordingly. |
|
||||
| server.service.ports[0] | dict | `{"name":"game","port":8211,"protocol":"UDP","targetPort":8211}` | The "game" port definition. If you change this, make sure to change the server.ports.game and server.config.port accordingly. |
|
||||
| server.service.ports[1] | dict | `{"name":"query","port":27015,"protocol":"UDP","targetPort":27015}` | The "query" port definition . If you change this, make sure to change the server.ports.query and server.config.query_port accordingly. |
|
||||
| server.service.ports[2] | dict | `{"name":"rcon","port":25575,"protocol":"UDP","targetPort":25575}` | The "rcon" port definition . If you change this, make sure to change the server.ports.rcon and server.config.rcon.port accordingly. |
|
||||
| server.service.ports[3] | dict | `{"name":"healthz","port":80,"protocol":"TCP","targetPort":80}` | The "healthz" port definition . Used only to create a health check for load balancers on cloud services. |
|
||||
| server.service.type | string | `"LoadBalancer"` | The type of service to be created. |
|
||||
| server.storage | dict | `{"preventDelete":false,"size":"10Gi","storageClassName":""}` | Define some parameters for the storage volume |
|
||||
| server.storage.preventDelete | bool | `false` | Keeps helm from deleting the PVC. By default, helm does not delete pvcs. |
|
||||
| server.storage.size | string | `"10Gi"` | The size of the pvc storage. |
|
||||
| server.storage.storageClassName | string | `""` | The storage class name. |
|
||||
|
||||
----------------------------------------------
|
||||
Autogenerated from chart metadata using [helm-docs v1.12.0](https://github.com/norwoodj/helm-docs/releases/v1.12.0)
|
||||
36
chart/templates/configmaps.yaml
Normal file
36
chart/templates/configmaps.yaml
Normal file
@@ -0,0 +1,36 @@
|
||||
{{- $cPwd := randAlphaNum 12 | nospace -}}
|
||||
{{- $sName := randAlphaNum 6 | nospace -}}
|
||||
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 }}
|
||||
SERVER_NAME: {{- if .Values.server.config.server_name }} "{{ .Values.server.config.server_name }}" {{ else }} {{ printf "%s_%s" "palworld" $sName }} {{ end }}
|
||||
58
chart/templates/deployments.yaml
Normal file
58
chart/templates/deployments.yaml
Normal file
@@ -0,0 +1,58 @@
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
namespace: {{ .Values.namespace }}
|
||||
name: "{{ .Release.Name }}-server"
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/component: "{{ .Release.Name }}-server"
|
||||
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:
|
||||
- name: healthz
|
||||
image: "chussenot/tiny-server:latest"
|
||||
imagePullPolicy: {{ .Values.server.image.imagePullPolicy }}
|
||||
ports:
|
||||
- name: healthz
|
||||
containerPort: 80
|
||||
protocol: TCP
|
||||
- name: server
|
||||
image: "{{ .Values.server.image.name }}:{{ .Values.server.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.server.image.imagePullPolicy }}
|
||||
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:
|
||||
claimName: "{{ .Release.Name }}-datadir-pvc"
|
||||
29
chart/templates/pvcs.yaml
Normal file
29
chart/templates/pvcs.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
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 }}
|
||||
25
chart/templates/secrets.yaml
Normal file
25
chart/templates/secrets.yaml
Normal 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 }}
|
||||
28
chart/templates/services.yaml
Normal file
28
chart/templates/services.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
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:
|
||||
{{- with .Values.server.service.ports }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
type: {{ .Values.server.service.type }}
|
||||
125
chart/values.yaml
Normal file
125
chart/values.yaml
Normal file
@@ -0,0 +1,125 @@
|
||||
# -- Namespace where the resources will be created
|
||||
namespace: palworld
|
||||
# -- (dict) The server configuration
|
||||
# @notationType -- bigValue
|
||||
server:
|
||||
# -- Additional annotations to the resources
|
||||
annotations: { }
|
||||
# -- Additional labels to the resources
|
||||
labels: { }
|
||||
# -- (dict) Define some parameters for the storage volume
|
||||
storage:
|
||||
# -- Keeps helm from deleting the PVC. By default, helm does not delete pvcs.
|
||||
preventDelete: false
|
||||
# -- The size of the pvc storage.
|
||||
size: 10Gi
|
||||
# -- The storage class name.
|
||||
storageClassName: ""
|
||||
# -- (dict) Define the parameters for the server image container
|
||||
# @notationType -- bigValue
|
||||
image:
|
||||
# -- Name of the image, without the tag.
|
||||
name: thijsvanloef/palworld-server-docker
|
||||
# -- The tag of the image.
|
||||
tag: latest
|
||||
# -- Define the pull policy for the server image.
|
||||
imagePullPolicy: IfNotPresent
|
||||
|
||||
# -- (dict) Change the ports to be mapped to the pod.
|
||||
# If you change those, make sure to change the service.ports and server.config accordingly.
|
||||
# @notationType -- bigValue
|
||||
ports:
|
||||
# -- (dict) The "game" port definition.
|
||||
# If you change this, make sure to change the service.ports.game and server.config accordingly.
|
||||
- name: game
|
||||
containerPort: 8211
|
||||
protocol: UDP
|
||||
# -- (dict) The "query" port definition .
|
||||
# If you change this, make sure to change the service.ports.query_port and server.config accordingly.
|
||||
- name: query
|
||||
containerPort: 27015
|
||||
protocol: UDP
|
||||
# -- (dict) The "rcon" port definition .
|
||||
# If you change this, make sure to change the service.ports.rcon and server.config accordingly.
|
||||
- name: rcon
|
||||
containerPort: 25575
|
||||
protocol: UDP
|
||||
|
||||
# -- (dict) Change the service configuration.
|
||||
# If you change those, make sure to change the server.config and server.ports accordingly.
|
||||
# @notationType -- bigValue
|
||||
service:
|
||||
# -- (bool) Enables the creation of the service component.
|
||||
enabled: true
|
||||
# -- Additional annotations to the resources
|
||||
annotations: { }
|
||||
# -- Additional labels to the resources
|
||||
labels: { }
|
||||
# -- (string) The type of service to be created.
|
||||
type: LoadBalancer
|
||||
# -- (dict) Change the ports to be mapped to the service.
|
||||
# If you change those, make sure to change the server.config and server.ports accordingly.
|
||||
# @notationType -- bigValue
|
||||
ports:
|
||||
# -- (dict) The "game" port definition.
|
||||
# If you change this, make sure to change the server.ports.game and server.config.port accordingly.
|
||||
- name: game
|
||||
port: 8211
|
||||
protocol: UDP
|
||||
targetPort: 8211
|
||||
# -- (dict) The "query" port definition .
|
||||
# If you change this, make sure to change the server.ports.query and server.config.query_port accordingly.
|
||||
- name: query
|
||||
port: 27015
|
||||
protocol: UDP
|
||||
targetPort: 27015
|
||||
# -- (dict) The "rcon" port definition .
|
||||
# If you change this, make sure to change the server.ports.rcon and server.config.rcon.port accordingly.
|
||||
- name: rcon
|
||||
port: 25575
|
||||
protocol: UDP
|
||||
targetPort: 25575
|
||||
# -- (dict) The "healthz" port definition .
|
||||
# Used only to create a health check for load balancers on cloud services.
|
||||
- name: healthz
|
||||
port: 80
|
||||
protocol: TCP
|
||||
targetPort: 80
|
||||
# -- (dict) Change the game server configuration.
|
||||
# If you change those, make sure to change the service.ports and server.ports accordingly.
|
||||
# Those are directly connected with the container image, providing multiple environment variables to the scripts.
|
||||
# @notationType -- bigValue
|
||||
config:
|
||||
# -- Additional annotations to the resources
|
||||
annotations: { }
|
||||
# -- Additional labels to the resources
|
||||
labels: { }
|
||||
puid: 1000
|
||||
pgid: 1000
|
||||
port: 8211
|
||||
# -- (string) The query port of the game.
|
||||
query_port: 27015
|
||||
# -- The max number of players supported.
|
||||
max_players: 16
|
||||
# -- (bool) Enables the multithreading, allowing the usage of up to 4 cores (needs citation)
|
||||
multithreading: true
|
||||
# -- (dict) Remote connection configuration.
|
||||
# Allows the remote connection and management for the server.
|
||||
# Those are directly connected with the container image, providing multiple environment variables to the scripts.
|
||||
# @notationType -- bigValue
|
||||
rcon:
|
||||
# -- (bool) Enables/disables the rcon port.
|
||||
enable: true
|
||||
# -- (string) The port for rcon. If you change this, make sure to change the service.ports and server.ports accordingly.
|
||||
port: 25575
|
||||
# -- (string) If not provided, a random password will be generated and stored on the secret.
|
||||
password: ""
|
||||
community:
|
||||
# -- (bool) Enables/disables the visibility of this server on Steam community servers list.
|
||||
enable: true
|
||||
# -- (string) If not provided, a random password will be generated and stored on the secret.
|
||||
password: ""
|
||||
# -- (string) If not provided, a random server name will be generated with the "palworld_" prefix.
|
||||
server_name: ""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user