Enable deploying feature branches into isolated environments on the same k3s cluster. Each branch gets its own namespace (cam-<slug>), PostgreSQL schema, and OpenSearch index prefix for data isolation while sharing the underlying infrastructure. - Make OpenSearch index prefix and DB schema configurable via env vars (defaults preserve existing behavior) - Restructure deploy/ into Kustomize base + overlays (main/feature) - Extend CI to build Docker images for all branches, not just main - Add deploy-feature job with namespace creation, secret copying, Traefik Ingress routing (<slug>-api/ui.cameleer.siegeln.net) - Add cleanup-branch job to remove namespace, PG schema, OS indices on branch deletion - Install required tools (git, jq, curl) in CI deploy containers Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
45 lines
1.3 KiB
YAML
45 lines
1.3 KiB
YAML
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
kind: Kustomization
|
|
namespace: BRANCH_NAMESPACE
|
|
resources:
|
|
- ../../base
|
|
- ingress.yaml
|
|
- init-job.yaml
|
|
images:
|
|
- name: gitea.siegeln.net/cameleer/cameleer3-server
|
|
newTag: BRANCH_SHA
|
|
- name: gitea.siegeln.net/cameleer/cameleer3-server-ui
|
|
newTag: BRANCH_SHA
|
|
patches:
|
|
# Server Deployment: branch-specific schema, index prefix, UI origin, OIDC disabled
|
|
- patch: |
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: cameleer3-server
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- name: server
|
|
env:
|
|
- name: CAMELEER_DB_SCHEMA
|
|
value: "BRANCH_SCHEMA"
|
|
- name: CAMELEER_OPENSEARCH_INDEX_PREFIX
|
|
value: "cam-BRANCH_SLUG-executions-"
|
|
- name: CAMELEER_UI_ORIGIN
|
|
value: "http://BRANCH_SLUG.cameleer.siegeln.net"
|
|
- name: CAMELEER_OIDC_ENABLED
|
|
value: "false"
|
|
# UI ConfigMap: branch-specific API URL
|
|
- target:
|
|
kind: ConfigMap
|
|
name: cameleer3-ui-config
|
|
patch: |
|
|
- op: replace
|
|
path: /data/config.js
|
|
value: |
|
|
window.__CAMELEER_CONFIG__ = {
|
|
apiBaseUrl: 'http://BRANCH_SLUG-api.cameleer.siegeln.net/api/v1',
|
|
};
|