Skip to main content

ArgoKit v2 API

Denne referansen er organisert etter hvor API-et brukes:

OmrådeImportstiBrukes til
Applicationargokit.appAndObjects.applicationSkiperator Application-ressurser
SKIPJobargokit.appAndObjects.skipjobSkiperator SKIPJob-ressurser
Felles workload-hjelpereargokit.appAndObjects.<workload>hjelpere som finnes på både application og skipjob
Frittstående ressurserargokit.k8s.*, argokit.routing, argokit.externalSecrets.*, argokit.azureAdApplicationRessurser som rendres utenfor en appAndObjects-workload

I seksjoner for felles hjelpere betyr <workload> enten application eller skipjob.

Constructors​

argokit.appAndObjects.application.new()​

Oppretter en Skiperator Application ved å bruke appAndObjects-konvensjonen.

navntypeobligatoriskstandardverdibeskrivelse
namestringtrue-navn på applikasjonen
imagestringtrue-container-image
portnumbertrue-hovedport for containeren

Eksempel: examples/application.jsonnet

argokit.appAndObjects.skipjob.new()​

Oppretter en Skiperator SKIPJob med API-versjon skiperator.kartverket.no/v1beta1.

navntypeobligatoriskstandardverdibeskrivelse
namestringtrue-navn på jobben
imagestringtrue-container-image

Eksempel: examples/skipjob.jsonnet

SKIPJob-hjelpere​

argokit.appAndObjects.skipjob.withCron()​

Gjør SKIPJob periodisk ved å sette spec.cron. Se Kubernetes cron-syntaks her.

navntypeobligatoriskstandardverdibeskrivelse
schedulestringtrue-cron-uttrykk
allowConcurrencystringfalse-Allow, Forbid eller Replace
startingDeadlineSecondsnumberfalse-frist i sekunder for å starte en forsinket jobb
suspendbooleanfalse-suspenderer cronjobben
timeZonestringfalseEurope/OsloIANA-tidssone, f.eks. Etc/UTC

argokit.appAndObjects.skipjob.withSettings()​

Setter Kubernetes Job-innstillinger under spec.job.

navntypeobligatoriskstandardverdibeskrivelse
activeDeadlineSecondsnumberfalse-maks kjøretid i sekunder
backoffLimitnumberfalse-antall retry-forsøk før jobben regnes som feilet
suspendbooleanfalse-suspenderer jobben
ttlSecondsAfterFinishednumberfalse-sekunder før ferdig jobb ryddes opp

argokit.appAndObjects.skipjob.withRestartPolicy()​

Setter restart policy for jobben.

navntypeobligatoriskstandardverdibeskrivelse
restartPolicystringtrue-OnFailure eller Never

Application-hjelpere​

argokit.appAndObjects.application.withReplicas()​

Setter replikaer for en Application, eventuelt med autoskalering.

navntypeobligatoriskstandardverdibeskrivelse
initialnumbertrue2initialt antall replikaer
maxnumberfalse-maksimalt antall replikaer. Aktiverer autoskalering når den er satt og ulik initial
targetCpuUtilizationnumberfalse-CPU-terskel i prosent
targetMemoryUtilizationnumberfalse-minne-terskel i prosent

Eksempel: examples/replicas.jsonnet

argokit.appAndObjects.application.forHostnames()​

Oppretter ingress-oppføringer for en Application.

navntypeobligatoriskstandardverdibeskrivelse
ingressarray, string eller objecttrue-hostname som string, liste med hostnames/objekter, eller { hostname, customCert }

customCert er navnet på et TLS-secret i namespacet istio-gateways. Denne secreten må provisjoneres opp av SKIP-teamet på forhånd.

Eksempel: examples/ingress.jsonnet

argokit.appAndObjects.application.withRoutingProvider()​

Velger hvilket routing-API Skiperator bruker for ingressene til en Application.

navntypeobligatoriskstandardverdibeskrivelse
routingProviderstringfalseLegacyhvilken måte som brukes for å konfigurere trafikk inn til applikasjonen

Bruk helst Standard. Legacy kommer til å bli deprecated og fjernet på et senere tidspunkt.

application.new() setter alltid routingProvider i manifestet. Verdien er Legacy hvis du ikke kaller denne funksjonen.

NB: Standard støtter ikke spec.istioSettings.retries.

Eksempel: examples/routingProvider.jsonnet

argokit.appAndObjects.application.withAzureAdApplication()​

Legger til en AzureADApplication-ressurs og konfigurerer applikasjonen til å bruke den.

navntypeobligatoriskstandardverdibeskrivelse
namestringtrue-navn på AzureADApplication-ressursen
namespacestringfalse-namespace for ressursen
groupsarrayfalse[]Azure AD-grupper for claims
secretPrefixstringfalseazureadprefix for secret-navnet
allowAllUsersbooleanfalsefalseom alle brukere skal få tilgang
logoutUrlstringfalse-logout-URL
replyUrlsarrayfalse[]reply URLs
preAuthorizedApplicationsarrayfalse[]forhåndsautoriserte applikasjoner

Eksempel: examples/withAzureAdApplication.jsonnet

argokit.appAndObjects.application.withExtraContainer()​

Legger til en ekstra container i podden for en Application.

navntypeobligatoriskstandardverdibeskrivelse
namestringtrue-container-navn
imagestringtrue-container-image
typestringfalsestandardstandard for vanlig sidecar, eller init for native sidecar init-container
commandarrayfalse-overstyrer container command
argsarrayfalse-argumenter til entrypoint
envarrayfalse-miljøvariabler for containeren
envFromarrayfalse-miljøvariabler fra Secret eller ConfigMap
filesFromarrayfalse-filmounts for containeren
additionalPortsarrayfalse[]porter eksponert av containeren
resourcesobjectfalse-ressurskrav og -grenser
livenessobjectfalse-liveness probe
readinessobjectfalse-readiness probe
startupobjectfalse-startup probe
ingressPortnumberfalse-gjør at ingress-trafikk går til denne container-porten. Porten må også finnes i additionalPorts

Eksempel: examples/extraContainers.jsonnet

argokit.appAndObjects.application.extraContainer()​

Bygger en ekstra container-spec uten å legge den til i applikasjonen. Nyttig sammen med withExtraContainers(containers).

Felles workload-hjelpere​

Disse hjelperne finnes på både argokit.appAndObjects.application og argokit.appAndObjects.skipjob.

Metadata og pod-innstillinger​

funksjonbeskrivelse
withCommand(command)setter spec.command
withLabels(labels)setter spec.labels
withTeam(team)setter spec.team
withPriority(priority)setter spec.priority til low, medium eller high
withAdditionalPort(name, port, protocol='TCP')legger til en oppføring i spec.additionalPorts
withPodSettings(...)setter spec.podSettings
withTracing(randomSamplingPercentage)setter sampling-prosent for Istio tracing

<workload>.resources.withRequests()​

Setter ressurskrav.

navntypeobligatoriskstandardverdibeskrivelse
cpustring eller numberfalse-CPU-krav, f.eks. 100m, 0.5 eller 1
memorystring eller numberfalse-minnekrav, f.eks. 128Mi eller 1Gi

Eksempel: examples/appWithResources.jsonnet

<workload>.resources.withLimits()​

Setter ressursgrenser.

navntypeobligatoriskstandardverdibeskrivelse
cpustring eller numberfalse-CPU-grense, f.eks. 500m, 1 eller 2.0
memorystring eller numberfalse-minnegrense, f.eks. 512Mi eller 2Gi

Eksempel: examples/appWithResources.jsonnet

Miljøvariabler​

funksjonbeskrivelse
withEnvironmentVariable(name, value)legger til én statisk miljøvariabel
withEnvironmentVariables(pairs)legger til flere statiske miljøvariabler fra et objekt
withEnvironmentVariableFromSecret(name, secretRef, key=name)legger til én miljøvariabel fra en Secret-nøkkel
withEnvironmentVariablesFromSecret(secretName)legger til alle miljøvariabler fra en Secret

Eksempel: examples/environment.jsonnet

Tilgangspolicyer​

funksjonbeskrivelse
withOutboundPostgres(host, ip)tillater utgående PostgreSQL-trafikk
withOutboundOracle(host, ip)tillater utgående Oracle-trafikk
withOutboundSsh(host, ip)tillater utgående SSH-trafikk
withOutboundLdaps(host, ip)tillater utgående LDAPS-trafikk
withOutboundHttp(host, portname='', port=443, protocol='')tillater utgående HTTP/HTTPS-trafikk
withOutboundSkipApp(appname, namespace='')tillater utgående trafikk til en annen SKIP Application
withInboundSkipApp(appname, namespace='')tillater inngående trafikk fra en annen SKIP Application

Eksempel: examples/accessPolicies.jsonnet

Prober​

funksjonbeskrivelse
probe(path, port, failureThreshold=3, timeout=1, initialDelay=0)bygger et probe-objekt
withReadiness(probe)setter spec.readiness
withLiveness(probe)setter spec.liveness
withStartup(probe)setter spec.startup

Eksempel: examples/probes.jsonnet

withPrometheus()​

Konfigurerer scraping av Prometheus-kompatible metrics.

navntypeobligatoriskstandardverdibeskrivelse
pathstringtrue-sti for metrics, f.eks. /metrics
portnumbertrue-port for metrics
allowAllMetricsbooleanfalsefalsehvis true, blir alle eksponerte metrics skrapet
scrapeIntervalstringfalse60sscrape-intervall, f.eks. 30s eller 1m; bruk tom string for å utelate feltet

Eksempel: examples/application-with-prometheus.jsonnet

GCP​

funksjonbeskrivelse
withGcpServiceAccount(serviceAccount)setter Workload Identity service account under spec.gcp.auth
withCloudSqlProxy(connectionName, serviceAccount, ip, publicIP=null, version=null)konfigurerer Cloud SQL Auth Proxy under spec.gcp.cloudSqlProxy

ConfigMap-hjelpere​

funksjonbeskrivelse
withConfigMapAsEnv(name, data, addHashToName=false)oppretter en ConfigMap og legger den til via spec.envFrom
withConfigMapAsMount(name, mountPath, data, addHashToName=false, defaultMode=null, subPath=null)oppretter en ConfigMap og monterer den som filer

Eksempel: examples/withConfigMap.jsonnet

ExternalSecret-hjelper​

funksjonbeskrivelse
withEnvironmentVariablesFromExternalSecret(name, creationPolicy=null, secrets=[], allKeysFrom=[], secretStoreRef='gsm')oppretter en ExternalSecret og legger til miljøvariabler fra den resulterende Secret-en

Eksempel: examples/withExternalSecret.jsonnet

Mounts​

funksjonbeskrivelse
withSecretAsMount(secretName, mountPath, defaultMode=null, subPath=null)monterer en eksisterende Secret som filer
withPersistentVolumeClaimAsMount(pvcName, mountPath, subPath=null)monterer en PVC
withEmptyDirAsMount(mountPath, emptyDir, subPath=null)monterer et emptyDir-volum

Eksempel: examples/mounts.jsonnet

Ekstra objekter​

funksjonbeskrivelse
withObjects(objects)legger til ett objekt eller en liste med objekter i rendret List

Eksempel: examples/additionalObjects.jsonnet

Frittstående ressurser​

argokit.routing.new()​

Bygger et Routing-objekt.

navntypeobligatoriskstandardverdibeskrivelse
namestringtrue-navn på routing-objektet
hostnamestringtrue-hostname
redirectToHTTPSbooleanfalsetrueom trafikk skal videresendes til HTTPS
routingProviderstringfalseLegacyStandard (anbefalt) bruker Kubernetes Gateway API. Legacy bruker Istio Gateway og VirtualService, og blir fjernet senere
ownershipstringfalseStandaloneStandalone eier hele hostnavnet. Shared legger til paths på et hostnavn som andre Routing-objekter kan bruke, f.eks. api.example.com.

For routingProvider, bruk helst Standard, da Legacy vil bli deprecated og fjernet på et senere tidspunkt.

ownership=Shared krever routingProvider lik Standard. Shared kan ikke bruke et eget sertifikat i hostnavnet.

ownership=Standalone kan bruke et custom sertifikat. Skriv det som hostnavn+secret-navn. Secreten må provisjoneres opp manuelt av SKIP.

Eksempel: examples/routingShared.jsonnet

argokit.routing.withRoute()​

Legger til en route i et Routing-objekt.

navntypeobligatoriskstandardverdibeskrivelse
pathPrefixstringtrue-route-prefix
targetAppstringtrue-mål-Application
rewriteUribooleantrue-om URI skal skrives om
portnumberfalsenullmålport

Eksempel: examples/routing.jsonnet

argokit.k8s.rolebinding.new()​

Oppretter en RoleBinding-ressurs. Utvid den med enten withUsers() eller withNamespaceAdminGroup().

argokit.k8s.rolebinding.withUsers()​

Legger til brukere som subjects.

navntypeobligatoriskstandardverdibeskrivelse
usersarraytrue-brukernavn

argokit.k8s.rolebinding.withNamespaceAdminGroup()​

Legger til en namespace-admin-gruppe som subject.

navntypeobligatoriskstandardverdibeskrivelse
groupNamestringtrue-gruppenavn

Eksempel: examples/rolebinding.jsonnet

argokit.externalSecrets.secret.new()​

Oppretter en ExternalSecret.

navntypeobligatoriskstandardverdibeskrivelse
namestringtrue-navn på secret
creationPolicystringfalsenullstyrer spec.target.creationPolicy; utelates når den er null
secretsarrayfalse[]oppføringer med toKey, fromSecret og valgfrie conversion-/metadata-felt
allKeysFromarrayfalse[]oppføringer med fromSecret for import av alle nøkler
secretStoreRefstringfalsegsmnavn på SecretStore

Enten secrets eller allKeysFrom må inneholde minst ett element.

argokit.externalSecrets.store.new()​

Oppretter en ekstern SecretStore.

navntypeobligatoriskstandardverdibeskrivelse
namestringfalsegsmnavn på store
gcpProjectstringtrue-GCP prosjekt-ID

Eksempel: examples/externalSecrets.jsonnet

argokit.k8s.configMap.new()​

Oppretter en ConfigMap.

navntypeobligatoriskstandardverdibeskrivelse
namestringtrue-navn på ConfigMap
dataobjecttrue-data i ConfigMap
addHashToNamebooleanfalsefalseom hash-suffiks skal legges til navnet

Eksempel: examples/configMap.jsonnet

argokit.azureAdApplication.new()​

Oppretter en frittstående AzureADApplication-ressurs.

navntypeobligatoriskstandardverdibeskrivelse
namestringtrue-navn på AzureADApplication-ressursen
namespacestringfalse-namespace for ressursen
groupsarrayfalse[]Azure AD-grupper for claims
secretPrefixstringfalseazureadprefix for secret-navnet
allowAllUsersbooleanfalsefalseom alle brukere skal få tilgang
logoutUrlstringfalse-logout-URL
replyUrlsarrayfalse[]reply URLs
preAuthorizedApplicationsarrayfalse[]forhåndsautoriserte applikasjoner

Eksempel: examples/newAzureAdApplication.jsonnet

Ferdige komponenter​

argokit.dbArchiveJob()​

Oppretter en SKIPJob v1beta1 som tar PostgreSQL-dump og lagrer den i S3, sammen med ExternalSecrets for database- og S3-hemmeligheter.

navntypeobligatoriskstandardverdibeskrivelse
instanceNamestringtrue-navn på databaseinstansen og SKIPJob-ressursen
schedulestringtrue-cron-uttrykk for arkiveringsjobben
databaseIPstringtrue-IP-adresse til databasen
gcpS3CredentialsSecretstringtrue-navn på hemmelighet med S3-credentials
databaseNamestringtrue-databasen som skal arkiveres
archiveUserstringfalsepostgresdatabasebrukeren jobben kobler til med
serviceAccountstringfalsedummyaccount@iam.gserviceaccount.comGCP service account for Workload Identity
cloudsqlInstanceConnectionNamestringtrue-Cloud SQL connection name
portnumberfalse5432databaseport
S3Hoststringfalses3-rin.statkart.noS3-endepunkt
S3DestinationPathstringtrue-S3-sti der dumpen skal lagres
fullDumpbooleanfalsefalseom jobben også skal dumpe roller

Eksempel: examples/dbArchive.jsonnet