Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,78 @@ The `IDENTITY_SECRET` is displayed (masked) in the Admin panel under **Player Id

GameShelf itself listens on plain HTTP. Terminate TLS at your reverse proxy, ingress controller, or load balancer and forward plain HTTP to GameShelf. If you're using the dedicated subdomain option, your proxy (nginx, Caddy, etc.) handles the certificate — Caddy does this automatically.

## Helm Install (Replicated)

Installing directly via Helm from the Replicated registry (not via KOTS/Embedded Cluster).

### Prerequisites

- A Replicated customer license ID (Vendor Portal → Customers → click customer → License ID)
- A Replicated customer email address
- `helm` v3.8+, `kubectl` pointed at your target cluster

### Install

```bash
# 1. Create the namespace
kubectl create namespace gameshelf

# 2. Create the image pull secret (required for proxied images)
kubectl create secret docker-registry enterprise-pull-secret \
--docker-server=proxy.adamanthony.dev \
--docker-username=<customer-email> \
--docker-password=<license-id> \
-n gameshelf

# 3. Log into the Replicated OCI registry
helm registry login registry.replicated.com \
--username <customer-email> \
--password <license-id>

# 4. Install
helm install gameshelf \
oci://registry.replicated.com/gameshelf/unstable/gameshelf \
--version <chart-version> \
--namespace gameshelf \
--set adminSecret=<your-admin-password> \
--set "gameshelf-sdk.integration.licenseID=<license-id>" \
--set "gameshelf-sdk.integration.enabled=true"
```

> The chart version for each release is visible in the Vendor Portal under Releases, or in the GitHub Actions run log.

### Upgrade

```bash
helm upgrade gameshelf \
oci://registry.replicated.com/gameshelf/unstable/gameshelf \
--version <new-chart-version> \
--reuse-values
```

### Access the app

```bash
kubectl port-forward svc/gameshelf 8080:80 -n gameshelf
```

Then open http://localhost:8080. Admin panel: http://localhost:8080/admin?token=<your-admin-password>

### Common overrides

| Value | Default | Description |
|-------|---------|-------------|
| `adminSecret` | `changeme` | Admin panel password |
| `siteName` | `GameShelf` | Site name shown in the UI |
| `service.type` | `ClusterIP` | Set to `NodePort` or `LoadBalancer` to expose externally |
| `service.nodePort` | `""` | NodePort port number (e.g. `30080`) |
| `ingress.enabled` | `false` | Enable ingress |
| `ingress.host` | `""` | Hostname for ingress (required when enabled) |
| `postgresql.enabled` | `true` | Use embedded PostgreSQL; set to `false` for external DB |
| `redis.enabled` | `true` | Use embedded Redis; set to `false` for external Redis |
| `gameshelf-sdk.integration.licenseID` | `""` | License ID for SDK integration mode (direct Helm installs) |
| `gameshelf-sdk.integration.enabled` | `false` | Enable SDK integration mode (direct Helm installs) |

## Architecture

```
Expand Down
3 changes: 2 additions & 1 deletion chart/gameshelf/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ appVersion: "0.1.0"

dependencies:
- name: replicated
alias: gameshelf-sdk
version: ~1.19
repository: oci://registry.replicated.com/library
condition: replicated.enabled
condition: gameshelf-sdk.enabled
- name: postgresql
version: ~18.5
repository: https://charts.bitnami.com/bitnami
Expand Down
2 changes: 1 addition & 1 deletion chart/gameshelf/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ spec:
name: {{ include "gameshelf.fullname" . }}
key: admin-secret
- name: SDK_SERVICE_URL
value: "http://replicated:3000"
value: "http://gameshelf-sdk:3000"
livenessProbe:
httpGet:
path: /healthz
Expand Down
8 changes: 4 additions & 4 deletions chart/gameshelf/templates/support-bundle.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ stringData:
maxLines: 5000
maxAge: 72h
- logs:
collectorName: replicated-sdk
collectorName: gameshelf-sdk
selector:
- app=replicated
- app=gameshelf-sdk
namespace: {{ .Release.Namespace }}
limits:
maxLines: 5000
Expand Down Expand Up @@ -87,12 +87,12 @@ stringData:
- pass:
message: GameShelf deployment is running with at least one available replica.
- deploymentStatus:
name: replicated
name: gameshelf-sdk
namespace: {{ .Release.Namespace }}
outcomes:
- fail:
when: "< 1"
message: "The Replicated SDK deployment has no available replicas. License validation and entitlement checks may not work. Check the replicated pod logs."
message: "The Replicated SDK deployment has no available replicas. License validation and entitlement checks may not work. Check the gameshelf-sdk pod logs."
- pass:
message: Replicated SDK deployment is running.
- statefulsetStatus:
Expand Down
12 changes: 7 additions & 5 deletions chart/gameshelf/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ global:
imagePullSecrets: []

imageProxy:
host: proxy.replicated.com
host: proxy.adamanthony.dev
appSlug: gameshelf

image:
Expand Down Expand Up @@ -68,10 +68,10 @@ adminSecret: "changeme" # REQUIRED — set a strong secret, e.g. --set adminSec
postgresql:
enabled: true
image:
registry: proxy.replicated.com/proxy/gameshelf/index.docker.io
registry: proxy.adamanthony.dev/proxy/gameshelf/index.docker.io
volumePermissions:
image:
registry: proxy.replicated.com/proxy/gameshelf/index.docker.io
registry: proxy.adamanthony.dev/proxy/gameshelf/index.docker.io
auth:
database: gameshelf
username: gameshelf
Expand Down Expand Up @@ -99,7 +99,7 @@ externalDatabase:
redis:
enabled: true
image:
registry: proxy.replicated.com/proxy/gameshelf/index.docker.io
registry: proxy.adamanthony.dev/proxy/gameshelf/index.docker.io
architecture: standalone
auth:
enabled: false
Expand All @@ -120,8 +120,10 @@ preflight:
minMemory: 4Gi
requiredEndpoint: "https://replicated.app"

replicated:
gameshelf-sdk:
enabled: true
image:
registry: proxy.adamanthony.dev

# --- BYO Redis ---
externalRedis:
Expand Down
6 changes: 4 additions & 2 deletions helmchart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@ spec:
name: gameshelf
chartVersion: "0.0.0"
values:
replicated:
integrationLicenseID: repl{{ LicenseFieldValue `licenseID` }}
gameshelf-sdk:
integration:
licenseID: repl{{ LicenseFieldValue `licenseID` }}
enabled: true
adminSecret: repl{{ ConfigOption `admin_secret`}}
siteName: repl{{ ConfigOption `site_name`}}
builder:
Expand Down
2 changes: 2 additions & 0 deletions kots-app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,5 @@ spec:
title: GameShelf
statusInformers:
- deployment/gameshelf
- statefulset/gameshelf-postgresql
- statefulset/gameshelf-redis-master
Loading