# version: v3.0.0
# context defines the context of this Desired State File.
# It is used to allow Helmsman identify which releases are managed by which DSF.
# Therefore, it is important that each DSF uses a unique context.
context = "test-infra" # defaults to "default" if not provided
# metadata -- add as many key/value pairs as you want
[metadata]
org = "example.com/${ORG_PATH}/"
maintainer = "k8s-admin (me@example.com)"
description = "example Desired State File for demo purposes."
key = "${VALUE}"
# paths to the certificate for connecting to the cluster
# You can skip this if you use Helmsman on a machine with kubectl already connected to your k8s cluster.
# you have to use exact key names here : 'caCrt' for certificate and 'caKey' for the key and caClient for the client certificate
[certificates]
# caClient = "gs://mybucket/client.crt" # GCS bucket path
# caCrt = "s3://mybucket/ca.crt" # S3 bucket path
# caKey = "../ca.key" # valid local file relative path
[settings]
kubeContext = "minikube" # will try connect to this context first, if it does not exist, it will be created using the details below
# username = "admin"
# password = "$K8S_PASSWORD" # the name of an environment variable containing the k8s password
# clusterURI = "${SET_URI}" # the name of an environment variable containing the cluster API
# #clusterURI = "https://192.168.99.100:8443" # equivalent to the above
# storageBackend = "secret" # default is secret
# slackWebhook = "$slack" # or "your slack webhook url"
# reverseDelete = false # reverse the priorities on delete
#### to use bearer token:
# bearerToken = true
# clusterURI = "https://kubernetes.default"
# [settings.globalHooks]
# successCondition= "Initialized"
# deleteOnSuccess= true
# postInstall= "job.yaml"
globalMaxHistory = 5
# define your environments and their k8s namespaces
# syntax:
# [namespaces.] -- whitespace before this entry does not matter, use whatever indentation style you like
# protected = -- default to false
[namespaces]
[namespaces.production]
protected = true
[[namespaces.production.limits]]
type = "Container"
[namespaces.production.limits.default]
cpu = "300m"
memory = "200Mi"
[namespaces.production.limits.defaultRequest]
cpu = "200m"
memory = "100Mi"
[[namespaces.production.limits]]
type = "Pod"
[namespaces.production.limits.max]
memory = "300Mi"
[namespaces.staging]
protected = false
[namespaces.staging.labels]
env = "staging"
[namespaces.staging.quotas]
"limits.cpu" = "10"
"limits.memory" = "30Gi"
pods = "25"
"requests.cpu" = "10"
"requests.memory" = "30Gi"
[[namespaces.staging.quotas.customQuotas]]
name = "requests.nvidia.com/gpu"
value = "2"
# define any private/public helm charts repos you would like to get charts from
# syntax: repo_name = "repo_url"
# only private repos hosted in s3 buckets are now supported
[helmRepos]
argo = "https://argoproj.github.io/argo-helm"
jfrog = "https://charts.jfrog.io"
# myS3repo = "s3://my-S3-private-repo/charts"
# myGCSrepo = "gs://my-GCS-private-repo/charts"
# custom = "https://$user:$pass@mycustomrepo.org"
# define the desired state of your applications helm charts
# each contains the following:
[apps]
[apps.argo]
namespace = "production" # maps to the namespace as defined in namespaces above
enabled = true # change to false if you want to delete this app release [default = false]
chart = "argo/argo" # changing the chart name means delete and recreate this release
version = "0.8.5" # chart version
### Optional values below
valuesFile = "" # leaving it empty uses the default chart values
test = false # run the tests when this release is installed for the first time only
protected = true
priority = -3
wait = true
[apps.argo.hooks]
successCondition = "Complete"
successTimeout = "90s"
deleteOnSuccess = true
preInstall = "job.yaml"
# preInstall="https://github.com/jetstack/cert-manager/releases/download/v0.14.0/cert-manager.crds.yaml"
# postInstall="https://raw.githubusercontent.com/jetstack/cert-manager/release-0.14/deploy/manifests/00-crds.yaml"
# preUpgrade="job.yaml"
# postUpgrade="job.yaml"
# preDelete="job.yaml"
# postDelete="job.yaml"
# [apps.argo.setString] # values to override values from values.yaml with values from env vars or directly entered-- useful for passing secrets to charts
# AdminPassword="$SOME_PASSWORD" # $SOME_PASSWORD must exist in the environment
# MyLongIntVar="1234567890"
[apps.argo.set]
"images.tag" = "$$TAG" # $$ is escaped and $TAG is passed literally to images.tag (no env variable expansion)
[apps.artifactory]
namespace = "production" # maps to the namespace as defined in namespaces above
enabled = true # change to false if you want to delete this app release [default = false]
chart = "jfrog/artifactory" # changing the chart name means delete and recreate this release
version = "8.3.2" # chart version
### Optional values below
valuesFile = "" # leaving it empty uses the default chart values
test = false # run the tests when this release is installed for the first time only
priority = -2
noHooks = false
timeout = 300
maxHistory = 4
# additional helm flags for this release
helmFlags = [
"--devel",
]
# See https://github.com/Praqma/helmsman/blob/master/docs/desired_state_specification.md#apps for more apps options