Quick start
← Welcome · In-depth: Documentation
Let's get your app running. By the end of this page it's live in your namespace - roughly 10 minutes. Every step links to a documentation page if you need more depth.
Before you start
- You're a member of your app's deploy group (if not, ask your ITC, or open a ticket at support@inf.ethz.ch).
- You have
git,kubectl,sopsandageinstalled locally (for the latter two see Secrets & encryption).
1. Log in to the cluster
Log in to k8s-isg-dev, the cluster your dev/ folder syncs to:
curl -fsSL https://home.k8s-isg-dev.inf.ethz.ch/login.sh | bash
It installs anything missing, adds the context oidc@k8s-isg-dev to your
kubeconfig and logs you in with your ETH account. The downloadable kubeconfig and
the ArgoCD link are on Cluster login.
2. Get your repo
git clone https://gitlab.inf.ethz.ch/k8s/<customer>/<app>
cd <app>
Depending on what you've ordered, you'll find a prod/ and maybe a test/
and/or a dev/ folder - each is synced to its own cluster.
If the folders contain a kustomization.yaml, ArgoCD parses this file with
kustomize (files not referenced in kustomization.yaml are ignored).
Otherwise, *.yaml (all yaml files in the root of the folder) are loaded and
expected to be Kubernetes manifests.
3. Create your manifests
Start by copying the required manifests from
isg-example (at minimum
deployment.yaml, service.yaml and ingress.yaml). Then adjust them to
use your container image (deployment.yaml), define the port as a service
(service.yaml), expose it with a hostname (ingress.yaml) and potentially
more (e.g. configmap.yaml for the configuration, pvc.yaml for persistent
storage - see Storage, ...). The comments walk you through
each field.
Leave the
securityContextand resourcerequests/limitsin place - they're what keeps your pods within the platform's cluster policies and resource quotas.
4. Add your secrets - encrypted
Never commit plaintext secrets.
If your app needs secrets, follow the steps in Secrets & encryption.
5. Commit and push
git add test/
git commit -m "feat: Configured my app for test"
git push
6. Watch it deploy
ArgoCD picks up your commit within a minute and syncs it into your namespace. Watch it either way:
- ArgoCD UI - log in at https://argocd.k8s-isg-dev.inf.ethz.ch and open your app; you'll see each resource go healthy.
- kubectl -
kubectl get pods -n <your-namespace> -w
When your pods are Running and the Ingress shows your hostname, you're live. 🎉
7. Promote to production
Happy with test/? Repeat the same edits in prod/ and push - ArgoCD on
k8s-isg syncs it from there.
If a deploy is blocked
A failed sync or a rejected resource is almost always one of the platform's guardrails:
- a resource kind or
securityContextoutside the cluster policies, - a resource quota you've hit, or
- an isolation rule that needs an exception.
Fix the manifest, or open a ticket at support@inf.ethz.ch (what to include).