Working with t11: repositories and local overrides#
What you need |
Recommended way to work |
|---|---|
Deploy t11 |
Always use upstream |
Run the services |
Prefer upstream |
Change deployment settings or quickly try Helm values |
Edit |
Modify ConfigMap contents |
Use a personal fork of |
Customize Helm templates |
Use a personal fork of |
Generate your local application#
You need uv, kubectl, and a namespace/project managed by Argo CD. Clone
upstream t11-deployment, or use your existing checkout on main:
git clone --branch main https://github.com/epics-containers/t11-deployment.git
cd t11-deployment
# At DLS, load the tools and Argo CD cluster connection:
module load uv
module load argus
scripts/make-apps-test.py
The generator asks for your namespace, Argo CD and workload clusters, services
repository, deployment revision and UID/GID. Always keep the deployment
repository on upstream main. For the services repository, choose:
Upstream (recommended default): accept
https://github.com/epics-containers/t11-services. You can override Helm values in your local application without a fork, as shown below.Your personal fork: supply its URL when you need configuration-file or Helm-template changes. The generator selects it for all services through
spec.source.helm.valuesObject.source.repoURL. If you already use a fork, it is simpler to edit itsservices/<service>/values.yamldirectly too.
The generator writes apps-test.local.yaml with the services revision set to
main. To use a branch of your fork, change
spec.source.helm.valuesObject.source.targetRevision to that branch. Commit
and push changes in the fork so Argo CD can fetch them; Argo CD must be allowed
to read it. To return to upstream, restore the upstream services URL and
revision main in those same fields.
Edit that file for the changes you need, then apply it to the cluster running Argo CD:
kubectl apply -f apps-test.local.yaml
Repeat the apply command after changing the file. The personal beamline tutorial covers cluster prerequisites and checking the running beamline in more detail.
Quickly change service values without a fork#
Use apps-test.local.yaml to try Helm value changes while all services stay
on upstream main. This example changes only the CPU resources of
bl11t-ea-test-01.
In apps-test.local.yaml, deployment settings such as namespace, UID/GID and
idle timeout live under spec.source.helm.valuesObject. Per-service Helm
values go under spec.source.helm.valuesObject.services.<service>.valuesObject.
Here is a complete minimal apps-test.local.yaml for Argus. Replace
YOUR-FEDID, YOUR-UID and YOUR-GID with your own values;
retain the namespace and IDs from the generator
(or find your IDs with id -u and id -g). Your namespace and Argo CD project
must already exist.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: t11
namespace: YOUR-FEDID
finalizers:
- resources-finalizer.argocd.argoproj.io/background
spec:
project: YOUR-FEDID
destination:
name: argus
namespace: YOUR-FEDID
source:
path: apps
repoURL: https://github.com/epics-containers/t11-deployment
targetRevision: main
helm:
version: v3
valuesObject:
project: YOUR-FEDID
destination:
name: argus
namespace: YOUR-FEDID
source:
# All services stay on upstream main; no fork is needed.
repoURL: https://github.com/epics-containers/t11-services
targetRevision: main
testBeamline:
enabled: true
uid: "YOUR-UID"
gid: "YOUR-GID"
idleTeardown:
enabled: true
idleHours: 24
services:
bl11t-ea-test-01:
# Override only test-01's CPU resources from the upstream values.
valuesObject:
ioc-instance:
resources:
requests:
cpu: 50m # Was 25m; keep within DLS's 10:1 limit/request ratio.
limits:
cpu: 500m # Was 250m; memory settings remain unchanged.
syncPolicy:
automated:
prune: true
selfHeal: true
Apply the file to try the new resource settings. To restore the upstream
values, remove the services.bl11t-ea-test-01 override and apply again:
kubectl apply -f apps-test.local.yaml
apps-test.local.yaml is applied directly to Kubernetes and ignored by Git.
These overrides take effect when you apply the file; they do not change the
upstream repository.
Repository responsibilities#
t11-deployment chooses what runs and where. Its root Argo CD application
creates child applications with a target cluster, namespace, repository,
revision and any Helm value overrides.
t11-services defines how each service runs. Each services/<name>/
directory contains its chart, values and configuration files. IOC charts
turn their config/ files into ConfigMaps.
flowchart TB
root["Root application<br/>apps.yaml or apps-test.local.yaml"]
deploy["t11-deployment<br/>apps chart"]
child["Child applications<br/>one per service"]
services["t11-services<br/>service charts and config"]
runtime["Pods, Services<br/>and ConfigMaps"]
root --> deploy --> child --> services --> runtime