Skip to main content

ArgoKit

ArgoKit Logo

ArgoKit er et sett med gjenbrukbare jsonnet templates som gjør det enklere å rulle ut ArgoCD-applikasjoner på SKIP. Hvis du har spørsmål, ta kontakt med #gen-argocd kanalen på Slack. Du finner koden her.

Installasjon

Forutsatt at du har fulgt Komme i gang-guiden, kan du bruke ArgoKit i ditt apps-repo. Første steg er å inkludere ArgoKit-biblioteket ved å kjøre følgende kommando:

$ git submodule add https://github.com/kartverket/argokit.git

Alternativt kan du bruke jsonnet-bundler hvis du foretrekker å bruke en package manager fremfor submoduler. For å gjøre dette, installer CLI-en ved å følge instruksjonene i jsonnet-bundler repoet og kjør følgende kommando:

$ jb install https://github.com/kartverket/argokit@main

Automatiske versjonsoppdateringer

Det anbefales sterkt å bruke dependabot for å automatisk oppdatere ArgoKit-versjonen når en ny versjon blir utgitt. For å gjøre dette, legg til følgende i din .github/dependabot.yml fil:

version: 2
updates:
- package-ecosystem: git-submodules
directory: /
schedule:
interval: daily

Med denne konfigurasjonen vil dependabot sjekke én gang om dagen om det finnes en ny versjon av ArgoKit. Hvis den finner en ny versjon, oppretter den automatisk en PR for å oppdatere versjonen.

Bruk med jsonnet

For grunnleggende informasjon om jsonnet, se Gjenbruke konfigurasjon.

Hvis du bruker jsonnet i ditt apps-repo, kan du bruke ArgoKit-biblioteket til å rulle ut ArgoCD-applikasjoner ved å inkludere argokit.libsonnet-filen i din jsonnet-fil og kalle argokit.Application-funksjonen. For eksempel, for å rulle ut en applikasjon, kan du bruke følgende jsonnet-fil:

local argokit = import 'argokit/jsonnet/argokit.libsonnet';

local Probe = {
path: "/healthz",
port: 8080,
failureThreshold: 3,
timeout: 1,
initialDelay: 0,
};

local BaseApp = {
spec: {
port: 8080,
replicas: {
min: 2,
max: 5,
targetCPUUtilization: 80,
},
liveness: Probe,
readiness: Probe,
},
};

[
BaseApp + argokit.Application("foo-backend") {
spec+: {
image: "hello-world",
ingresses: ["foo.bar.com"],
accessPolicy: {
inbound: {
rules: [{
application: "foo-frontend",
}],
},
},
},
},
]

jsonnet argokit API

Følgende templates er tilgjengelige for bruk i argokit.libsonnet-filen:

TemplateBeskrivelseEksempel
argokit.ApplicationOppretter en Skiperator-applikasjonSe ovenfor
argokit.GSMSecretStoreOppretter en Google Secret Manager External Secrets SecretStoreexamples/jsonnet/secretstore-gsm.jsonnet
argokit.GSMSecretOppretter en Google Secret Manager External Secrets Secretexamples/jsonnet/secretstore-gsm.jsonnet
argokit.RolesOppretter et sett med RBAC-roller for dette navnerommetexamples/jsonnet/roles.jsonnet

Følgende templates er tilgjengelige for bruk i dbArchive.libsonnet-filen:

TemplateBeskrivelseEksempel
dbArchive.dbArchiveJobOppretter en SKIPJob som lager en sql-dump og lagrer den i S3examples/jsonnet/dbArchive.jsonnet

Input parametre

dbArchiveJob

ParameterTypeStandardverdiBeskrivelse
instanceNameString-Påkrevd. Et unikt navn for jobben og relaterte ressurser. Dette navnet brukes som base for SKIPJob og hemmeligheter.
scheduleString-Påkrevd. En cron uttrykk som definerer når jobben skal kjøre (f.eks. "0 2 * * *" for å kjøre kl. 02:00 hver natt).
databaseIPString-Påkrevd. IP-adressen til PostgreSQL-databasen som skal arkiveres.
gcpS3CredentialsSecretString-Påkrevd. Navn på hemmeligheten i GSM som inneholder S3-hemmeligheter (AWS_ACCESS_KEY_ID og AWS_SECRET_ACCESS_KEY).
databaseNameString-Påkrevd. Navn på databasen som skal arkiveres.
archiveUserString'postgres'Databasebrukeren jobben skal bruke for å koble til.
serviceAccountString'dummyaccount@gcp.iam'GCP Service Account som brukes av Kubernetes-jobben for å autentisere mot Google Cloud (f.eks. for å hente hemmeligheter fra GSM).
cloudsqlInstanceConnectionNameString-Påkrevd. Tilkoblingsnavnet til Cloud SQL-instansen (format: project:region:instance). Nødvendig for Cloud SQL Auth Proxy.
portInteger5432Portnummeret til PostgreSQL-databasen.
S3HostString's3-rin.statkart.no'Hostnavnet til S3-endepunktet hvor arkivet skal lagres.
S3DestinationPathString-Påkrevd. Full S3-sti hvor databasearkivet skal plasseres (f.eks. s3://my-bucket/archive/database/).
fullDumpBoolfalseFlagg for å inkludere databaseroller uten passord i dumpen.

Bidrag

Bidrag er velkomne! Vennligst åpne et issue eller PR hvis du ønsker å se noe endret eller lagt til.