Kubernetes (Helm)
Kubernetes is the recommended way to deploy Pod Arcade. It's how we do our development. For Desktops, it also deploys differently than it does with pure Docker.
We deploy the desktops and applications as separate containers, which allows us to update them independently. This means that you can share the same base Desktop image across multiple applications.
Deploying with Helm
We provide some reference helm charts for deploying Pod Arcade on Kubernetes, at pod-arcade/charts.
To get started simply add the helm repository:
helm repo add pod-arcade https://charts.pod-arcade.com
Then install the server component:
helm install pa-server pod-arcade/server
you can find the values.yaml file for the server chart here. Reference the server configuration for more information on the configuration options.
Then install a desktop component:
helm install pa-desktop pod-arcade/desktop-sidecar
the values.yaml file for the desktop chart can be found here. Reference the desktop configuration for more information on the configuration options.
Example Configurations
Server
You can run the server component with or without an ingress controller. Below are two example values files for each.
env:
AUTH_REQUIRED: true
DESKTOP_PSK: magicPa$$wordForDesktops
CLIENT_PSK: magicPa$$wordForClients
ICE_SERVERS: '[{"urls":["stun:stun.l.google.com:19302"]}]'
SERVE_TLS: false
ingress:
enabled: true
className: "my-ingress-class"
annotations:
{}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
hosts:
- host: your.domain.com
tls:
- secretName: your-tls-secret
hosts:
- your.domain.com
env:
AUTH_REQUIRED: true
DESKTOP_PSK: magicPa$$wordForDesktops
CLIENT_PSK: magicPa$$wordForClients
ICE_SERVERS: '[{"urls":["stun:stun.l.google.com:19302"]}]'
SERVE_TLS: false
service:
type: NodePort # or LoadBalancer
httpPort: 80
httpNodePort: 30080
httpsPort: 443
httpsNodePort: 30443
mqttPort: 1883
mqttNodePort: 31883
Desktop
The Desktop configuration is a little bit simpler. Here's an example of a values file for the desktop chart. It uses the wonderful Retroarch image created by games-on-whales.
nodeSelector:
feature.node.kubernetes.io/cpu-model.vendor_id: AMD # Used to select our servers with AMD integrated graphics.
env:
MQTT_HOST: ws://pa-server-server/mqtt # This is the URL of the Pod-Arcade server.
DESKTOP_ID: pa-retroarch # A unique identifier for this desktop. It should be [a-z0-9-]+.
DESKTOP_PSK: magicPa$$wordForDesktops # This is the pre-shared key for desktop authentication
sidecar:
image:
# This is an excellent image from games-on-whales.
repository: gameonwhales/retroarch
pullPolicy: IfNotPresent
tag: "edge"
storage:
enabled: true # Enable Storage
create: true # Automatically create the PVC
storageClass: "ssd" # Storage class to use
size: 25Gi # Size of the provisioned storage
mounts: # A map of paths to mount from the PVC to the container
"/": "/home/ubuntu/.config/retroarch"