Skip to main content

📅 Jobber på SKIP

SKIP tilbyr abstraksjonen SKIPJob for å kunne kjøre programmer én gang ("one-off") eller periodisk (kjent som "cron jobs"). Dette dokumentet hjelper deg med å ta i bruk jobber på SKIP.

Konfigurere en SKIPJob​

En SKIPJob konfigureres i stor grad likt som applikasjoner. Inbound access policy og port skal derimot ikke konfigureres for jobber. Mer info om vanlig konfiguration av applikasjoner finner du her.

One-off jobb​

apiVersion: skiperator.kartverket.no/v1alpha1
kind: SKIPJob
metadata:
name: min-jobb
spec:
container:
image: "ghcr.io/kartverket/min-jobb:latest"

Denne vil kjøre docker imaget min-jobb:latest en gang. Den vil kjøre hver gang den blir syncet i ArgoCD.

Cron jobb (periodisk)​

apiVersion: skiperator.kartverket.no/v1alpha1
kind: SKIPJob
metadata:
name: min-cron-jobb
spec:
container:
image: "ghcr.io/kartverket/min-jobb:latest"
cron:
schedule: "0 * * * *"

Denne vil kjøre docker imaget min-jobb:latest én gang hver time. For å finne et passende cron-uttrykk anbefales Crontab Guru. NB: Alle jobber vil kjøre i UTC-tidssonen, med mindre feltet timeZone er spesifisert.

Kompleks jobb​

I dette eksempelet konfigureres en jobb som har tilgang til å aksessere ressurser i GCP (f.eks. Blob Storage) og som er avhengig av å prate med applikasjonen min-applikasjon i samme namespace. Jobben kjører ukedager (mandag-fredag) kl 21:30 i gjeldende tidssone for Norge.

apiVersion: skiperator.kartverket.no/v1alpha1
kind: SKIPJob
metadata:
name: min-cron-jobb
spec:
cron:
schedule: "30 21 * * 1-5"
timeZone: "Europe/Oslo"
container:
image: "ghcr.io/kartverket/min-jobb:latest"
gcp:
auth:
serviceAccount: "min-jobb@mitt-prosjekt.iam.gserviceaccount.com"
accessPolicy:
outbound:
rules:
- application: "min-applikasjon"
env:
- name: MIN_ENV_VAR
value: "min-env-value"
envFrom:
- secret: "secret-navn"

Trigge en jobb​

Spesielt for one-off jobber er det aktuelt å trigge jobben manuelt uten at du har gjort endringer. Vi har ingen pen måte å trigge jobber på ennå, men du kan likevel trigge en jobb ved å gå inn i argo og slette Job ressursen (ikke SKIPJob). Trigge en jobb Trykk på "Delete", velg "Foreground Delete" (default) og trykk "Ok" så vil Job ressursen opprettes på nytt og jobben kjøres.

For å trigge cron jobber manuelt kan du trykke på kebab meny knappen på "cronjob" ressursen og velge "Create Job".

Ved å sette .spec.job.cron.suspend = true kan du hindre en cron jobb fra å kjøre periodisk og den kan dermed trigges manuelt via kebab meny. SKIPJoben vil da oppføre seg som en one-off jobb, men den vil ikke kjøre når den synces.