Application

June 3, 2026 · View on GitHub

License: MIT

Application

Generic Helm chart for deploying stateless applications on Kubernetes. Supports Deployments, Jobs, and CronJobs along with common companion resources (Services, Ingress, RBAC, autoscaling, monitoring, certificates, and more).

Installing the Chart

From the OCI registry

helm install my-application oci://ghcr.io/stakater/charts/application --namespace test
# or, to install a specific version
helm install my-application oci://ghcr.io/stakater/charts/application --version <version> --namespace test

From the Helm repository (deprecated)

Note: The Helm repository is deprecated in favor of the OCI registry above.

helm repo add stakater https://stakater.github.io/stakater-charts
helm repo update
helm install my-application stakater/application --namespace test
# or, to install a specific version
helm install my-application stakater/application --version <version> --namespace test

Uninstall the Chart

To uninstall the chart:

helm delete --namespace test my-application

CI scope

The CI validates the chart against upstream Kubernetes using Helm and Kind. These jobs should be configured as required status checks in branch protection rules.

Server-side API validation runs against Kubernetes v1.31, v1.33, and v1.35. The chart uses Capabilities.APIVersions fallbacks for legacy APIs (batch/v1beta1, policy/v1beta1, autoscaling/v2beta2), but these were removed from Kubernetes before v1.25. Only the stable API paths are exercised in CI.

Kind validation uses a Kubernetes-compatible values profile that excludes non-standard resources (CRDs, OpenShift routes, etc.). Resources that depend on CRDs or platform-specific APIs are only validated as template rendering (no server-side check).

Values Schema

The chart ships with a JSON Schema for values.yaml validation. When using an editor that supports JSON Schema (e.g. VS Code with the YAML extension), you get autocompletion and inline validation out of the box.

Contributing

Please refer to the Contributing Guide for details on how to set up your local environment and submit changes.

Values

Parameters

KeyTypeDefaultDescription
namespaceOverridestring, null""Override the namespace for all resources.
componentOverridestring, null""Override the component label for all resources.
partOfOverridestring, null""Override the partOf label for all resources.
applicationNamestring, null{{ .Release.Name }}Application name. Used as a prefix for all resource names.
additionalLabelsobject, nullnilAdditional labels for all resources. Keys and values are evaluated as templates.
extraObjectslist, object, nullnilExtra K8s manifests to deploy. Can be of type list or object. If object, keys are ignored and only values are used. The used values can be defined as object or string and are evaluated as templates.

CronJob Parameters

KeyTypeDefaultDescription
cronJob.enabledboolfalseDeploy CronJob resources.
cronJob.jobsobject, nullnilMap of CronJob resources. Key will be used as a name suffix for the CronJob. Value is the CronJob configuration. See values for more details.

Job Parameters

KeyTypeDefaultDescription
job.enabledboolfalseDeploy Job resources.
job.jobsobject, nullnilMap of Job resources. Key will be used as a name suffix for the Job. Value is the Job configuration. See values for more details.

Deployment Parameters

KeyTypeDefaultDescription
deployment.enabledbooltrueEnable Deployment.
deployment.additionalLabelsobject, nullnilAdditional labels for Deployment.
deployment.podLabelsobject, nullnilAdditional pod labels which are used in Service's Label Selector.
deployment.annotationsobject, nullnilAnnotations for Deployment.
deployment.additionalPodAnnotationsobject, nullnilAdditional pod annotations.
deployment.strategy.typestring"RollingUpdate"Type of deployment strategy.
deployment.reloadOnChangebooltrueReload deployment if attached Secret/ConfigMap changes.
deployment.nodeSelectorobject, nullnilSelect the node where the pods should be scheduled.
deployment.hostAliaseslist, nullnilMapping between IP and hostnames that will be injected as entries in the pod's hosts files.
deployment.initContainersobject, nullnilAdd init containers to the pods.
deployment.fluentdConfigAnnotationsobject, nullnilConfiguration details for fluentdConfigurations. Only works for specific setup, see https://medium.com/stakater/dynamic-log-processing-with-fluentd-konfigurator-and-slack-935a5de4eddb.
deployment.replicasint, nullnilNumber of replicas.
deployment.imagePullSecretslist[]List of secrets to be used for pulling the images.
deployment.envFromobject, nullnilMount environment variables from ConfigMap or Secret to the pod. Use nameSuffix for resources managed by this chart (name will be prefixed with application name), or name to reference an existing external ConfigMap or Secret not managed by this chart. See the README "Consuming environment variable in application chart" section for more details.
deployment.envobject, nullnilEnvironment variables to be added to the pod. See the README "Consuming environment variable in application chart" section for more details.
deployment.volumesobject, nullnilVolumes to be added to the pod. Key is the name of the volume. Value is the volume definition.
deployment.volumeMountsobject, nullnilMount path for Volumes. Key is the name of the volume. Value is the volume mount definition.
deployment.priorityClassNamestring, null""Define the priority class for the pod.
deployment.runtimeClassNamestring, null""Set the runtimeClassName for the deployment's pods.
deployment.tolerationslist, nullnilTaint tolerations for the pods.
deployment.affinityobject, nullnilAffinity for the pods.
deployment.topologySpreadConstraintslist, nullnilTopology spread constraints for the pods.
deployment.revisionHistoryLimitint2Number of ReplicaSet revisions to retain.
deployment.image.repositorytpl""Repository.
deployment.image.tagtpl""Tag.
deployment.image.digesttpl""Image digest. If resolved to a non-empty value, digest takes precedence on the tag.
deployment.image.pullPolicystring"IfNotPresent"Image pull policy.
deployment.dnsConfigobject, nullnilDNS config for the pods.
deployment.dnsPolicystring, null""DNS Policy.
deployment.enableServiceLinksbooltrueEnable Kubernetes service links.
deployment.startupProbeobject, nullSee belowStartup probe. Must specify either one of the following field when enabled: httpGet, exec, tcpSocket, grpc
deployment.startupProbe.enabledboolfalseEnable Startup probe.
deployment.startupProbe.failureThresholdint30Number of retries before marking the pod as failed.
deployment.startupProbe.periodSecondsint10Time between retries.
deployment.startupProbe.successThresholdint1Number of successful probes before marking the pod as ready.
deployment.startupProbe.timeoutSecondsint1Time before the probe times out.
deployment.startupProbe.httpGetobject{}HTTP Get probe.
deployment.startupProbe.execobject{}Exec probe.
deployment.startupProbe.tcpSocketobject{}TCP Socket probe.
deployment.startupProbe.grpcobject{}gRPC probe.
deployment.readinessProbeobject, nullSee belowReadiness probe. Must specify either one of the following field when enabled: httpGet, exec, tcpSocket, grpc
deployment.readinessProbe.enabledboolfalseEnable Readiness probe.
deployment.readinessProbe.failureThresholdint30Number of retries before marking the pod as failed.
deployment.readinessProbe.periodSecondsint10Time between retries.
deployment.readinessProbe.successThresholdint1Number of successful probes before marking the pod as ready.
deployment.readinessProbe.timeoutSecondsint1Time before the probe times out.
deployment.readinessProbe.httpGetobject{}HTTP Get probe.
deployment.readinessProbe.execobject{}Exec probe.
deployment.readinessProbe.tcpSocketobject{}TCP Socket probe.
deployment.readinessProbe.grpcobject{}gRPC probe.
deployment.livenessProbeobject, nullSee belowLiveness probe. Must specify either one of the following field when enabled: httpGet, exec, tcpSocket, grpc
deployment.livenessProbe.enabledboolfalseEnable Liveness probe.
deployment.livenessProbe.failureThresholdint30Number of retries before marking the pod as failed.
deployment.livenessProbe.periodSecondsint10Time between retries.
deployment.livenessProbe.successThresholdint1Number of successful probes before marking the pod as ready.
deployment.livenessProbe.timeoutSecondsint1Time before the probe times out.
deployment.livenessProbe.httpGetobject{}HTTP Get probe.
deployment.livenessProbe.execobject{}Exec probe.
deployment.livenessProbe.tcpSocketobject{}TCP Socket probe.
deployment.livenessProbe.grpcobject{}gRPC probe.
deployment.resourcesobject{}Resource limits and requests for the pod.
deployment.containerSecurityContextobject, null{"readOnlyRootFilesystem":true,"runAsNonRoot":true}Security Context at Container Level.
deployment.openshiftOAuthProxy.enabledboolfalseEnable OpenShift OAuth Proxy.
deployment.openshiftOAuthProxy.portint8080Port on which application is running inside container.
deployment.openshiftOAuthProxy.secretNamestring"openshift-oauth-proxy-tls"Secret name for the OAuth Proxy TLS certificate.
deployment.openshiftOAuthProxy.imagestring"openshift/oauth-proxy:latest"Image for the OAuth Proxy.
deployment.openshiftOAuthProxy.disableTLSArgboolfalseIf disabled --http-address=:8081 will be used instead of --https-address=:8443. It can be useful when an ingress is enabled for the application.
deployment.securityContextobject, nullnilSecurity Context for the pod.
deployment.commandlist[]Command for the app container.
deployment.argslist[]Args for the app container.
deployment.automountServiceAccountTokenboolfalseMount Service Account token.
deployment.portslist, nullnilList of ports for the app container.
deployment.hostNetworkbool, nullnilHost network connectivity.
deployment.terminationGracePeriodSecondsint, nullnilGracefull termination period.
deployment.minReadySecondsint, nullnilMinimum number of seconds for which a newly created Pod should be ready without any of its containers crashing.
deployment.lifecycleobject{}Lifecycle configuration for the pod.
deployment.additionalContainerslist, nullnilAdditional containers besides init and app containers (without templating).
persistence.enabledboolfalseEnable persistence.
persistence.mountPVCboolfalseWhether to mount the created PVC to the deployment.
persistence.mountPathstring"/"If persistence.mountPVC is enabled, where to mount the volume in the containers.
persistence.namestring, null{{ include "application.name" $ }}-dataName of the PVC.
persistence.accessModestring"ReadWriteOnce"Access mode for volume.
persistence.storageClassstring, nullnilStorage class for volume. If defined, use that value If set to "-" or "", disable dynamic provisioning If undefined or set to null (the default), no storageClass spec is set, choosing the default provisioner.
persistence.additionalLabelsobject, nullnilAdditional labels for persistent volume.
persistence.annotationsobject, nullnilAnnotations for persistent volume.
persistence.storageSizestring"8Gi"Size of the persistent volume.
persistence.volumeModestring, null""PVC Volume Mode.
persistence.volumeNamestring, null""Name of the volume.

Service Parameters

KeyTypeDefaultDescription
service.enabledbooltrueEnable Service.
service.additionalLabelsobject, nullnilAdditional labels for service.
service.annotationsobject, nullnilAnnotations for service.
service.portslist[{"name":"http","port":8080,"protocol":"TCP","targetPort":8080}]Ports for applications service.
service.ports[0].targetPortint, string, null8080Target port on pods. Accepts port number or port name (IANA_SVC_NAME).
service.typestring"ClusterIP"Type of service.
service.clusterIPstring, nullnilFixed IP for a ClusterIP service. Set to None for an headless service
service.loadBalancerClassstring, nullnilLoadBalancer class name for LoadBalancer type services.

Ingress Parameters

KeyTypeDefaultDescription
ingress.enabledboolfalseEnable Ingress.
ingress.ingressClassNamestring, null""Name of the ingress class.
ingress.hosts[0].hosttpl"chart-example.local"Hostname.
ingress.hosts[0].paths[0].pathstring"/"Path.
ingress.hosts[0].paths[0].pathTypestring, nullImplementationSpecificPath type.
ingress.hosts[0].paths[0].serviceNamestring, null{{ include "application.name" $ }}Service name.
ingress.hosts[0].paths[0].servicePortstring, nullhttpService port.
ingress.additionalLabelsobject, nullnilAdditional labels for ingress.
ingress.annotationsobject, nullnilAnnotations for ingress.
ingress.tlslist, nullnilTLS configuration for ingress. Secrets must exist in the namespace. You may also configure Certificate resource to generate the secret.

HTTPRoute Parameters

KeyTypeDefaultDescription
httpRoute.enabledboolfalseEnable HTTPRoute (Gateway API).
httpRoute.parentRefslist, nullnilParent references for the HTTPRoute. Keys and values are evaluated as templates.
httpRoute.useDefaultGatewaysstring, nullnilThe default Gateway scope to use for this Route. If unset (the default) or set to None, the Route will not be attached to any default Gateway; if set, it will be attached to any default Gateway supporting the named scope, subject to the usual rules about which Routes a Gateway is allowed to claim.
httpRoute.gatewayNamespacestring, null""Namespace of the Gateway to attach this HTTPRoute to. If not set, the HTTPRoute will be attached to the Gateway in the same namespace as the HTTPRoute.
httpRoute.hostnameslist, nullnilHostnames for the HTTPRoute. Values are evaluated as templates.
httpRoute.additionalLabelsobject{}Additional labels for HTTPRoute.
httpRoute.annotationsobject{}Annotations for HTTPRoute.
httpRoute.ruleslist[{"backendRefs":[{"name":"{{ include \"application.name\" $ }}","port":"{{ (first $.Values.service.ports).port }}"}],"matches":[{"path":{"type":"PathPrefix","value":"/"}}]}]Rules for HTTPRoute. Keys and values are evaluated as templates.
httpRoute.rules[0].backendRefs[0].portint, tpl, null"{{ (first $.Values.service.ports).port }}"Port number or template expression for the backend service.

Route Parameters

KeyTypeDefaultDescription
route.enabledboolfalseDeploy a Route (OpenShift) resource.
route.additionalLabelsobject, nullnilAdditional labels for Route.
route.annotationsobject, nullnilAnnotations for Route.
route.hoststring, nullnilExplicit host. If no host is added then openshift inserts the default hostname.
route.pathstring, nullnilPath.
route.portobject, null{"targetPort":"http"}Service port.
route.to.weightint100Service weight.
route.wildcardPolicystring"None"Wildcard policy.
route.tls.terminationstring"edge"TLS termination strategy.
route.tls.insecureEdgeTerminationPolicystring"Redirect"TLS insecure termination policy.
route.alternateBackendsobject, nullnilAlternate backend with it's weight.

SecretProviderClass Parameters

KeyTypeDefaultDescription
secretProviderClass.enabledboolfalseDeploy a Secrets Store CSI Driver SecretProviderClass resource.
secretProviderClass.namestring, null""Name of the SecretProviderClass. Required if secretProviderClass.enabled is set to true.
secretProviderClass.providerstring, null""Name of the provider. Required if secretProviderClass.enabled is set to true.
secretProviderClass.vaultAddressstring, null""Vault Address. Required if secretProviderClass.provider is set to vault.
secretProviderClass.roleNametpl""Vault Role Name. Required if secretProviderClass.provider is set to vault.
secretProviderClass.objectsstring, nullnilObjects definitions.
secretProviderClass.secretObjectslist, nullnilObjects mapping.

ForecastleApp Parameters

KeyTypeDefaultDescription
forecastle.enabledboolfalseDeploy a ForecastleApp resource.
forecastle.additionalLabelsobject, nullnilAdditional labels for ForecastleApp.
forecastle.iconstring"https://raw.githubusercontent.com/stakater/ForecastleIcons/master/stakater-big.png"Icon URL.
forecastle.displayNamestring, null""Application Name. Required if forecastle.enabled is set to true.
forecastle.groupstring, null{{ .Release.Namespace }}Application Group.
forecastle.propertiesobject, nullnilCustom properties.
forecastle.networkRestrictedboolfalseIs application network restricted?.

RBAC Parameters

KeyTypeDefaultDescription
rbac.enabledbooltrueEnable RBAC.
rbac.serviceAccount.createboolfalseSpecifies whether to create a dedicated service account. If set to true, a new service account will be created.
rbac.serviceAccount.namestring, null""The name of the service account. Behavior based on its value and rbac.serviceAccount.create: If rbac.serviceAccount.create is false and name is empty, the default service account ("default") is used. If rbac.serviceAccount.create is false and name is set, the provided name is used. If rbac.serviceAccount.create is true and name is empty, a name is auto-generated using the fullname template. If rbac.serviceAccount.create is true and name is set, the provided name is used for creation.
rbac.serviceAccount.additionalLabelsobject, nullnilAdditional labels for Service Account. If rbac.serviceAccount.create is set to true, these labels are appended to the service account.
rbac.serviceAccount.annotationsobject, nullnilAnnotations for Service Account. If rbac.serviceAccount.create is set to true, these annotations are appended to the service account.
rbac.roleslist, nullnilRole definitions scoped to a single namespace.
rbac.clusterRoleslist, nullnilClusterRole definitions with cluster-wide permissions.
rbac.additionalLabelsobject, nullnilAdditional labels for the Role, RoleBinding, ClusterRole, and ClusterRoleBinding resources.
rbac.annotationsobject, nullnilAnnotations for the Role, RoleBinding, ClusterRole, and ClusterRoleBinding resources.

ConfigMap Parameters

KeyTypeDefaultDescription
configMap.enabledboolfalseDeploy additional ConfigMaps.
configMap.additionalLabelsobject, nullnilAdditional labels for ConfigMaps.
configMap.annotationsobject, nullnilAnnotations for ConfigMaps.
configMap.filesobject, nullnilList of ConfigMap entries. Key will be used as a name suffix for the ConfigMap. Value is the ConfigMap content.

SealedSecret Parameters

KeyTypeDefaultDescription
sealedSecret.enabledboolfalseDeploy SealedSecret resources.
sealedSecret.additionalLabelsobject, nullnilAdditional labels for SealedSecret.
sealedSecret.annotationsobject, nullnilAnnotations for SealedSecret.
sealedSecret.filesobject, nullnilList of SealedSecret entries. Key will be used as a name suffix for the SealedSecret. Value is the SealedSecret content.

Secret Parameters

KeyTypeDefaultDescription
secret.enabledboolfalseDeploy additional Secret resources.
secret.additionalLabelsobject, nullnilAdditional labels for Secret.
secret.annotationsobject, nullnilAnnotations for Secret.
secret.filesobject, nullnilList of Secrets entries. Key will be used as a name suffix for the Secret. There a three allowed modes: - data: Data is base64 encoded by the chart - encodedData: Use raw values (already base64ed) inside the data map - stringData: Use raw values inside the stringData map

ServiceMonitor Parameters

KeyTypeDefaultDescription
serviceMonitor.enabledboolfalseDeploy a ServiceMonitor (Prometheus Operator) resource.
serviceMonitor.additionalLabelsobject, nullnilAdditional labels for ServiceMonitor.
serviceMonitor.annotationsobject, nullnilAnnotations for ServiceMonitor.
serviceMonitor.endpointslist[{"interval":"5s","path":"/actuator/prometheus","port":"http"}]Service endpoints from which prometheus will scrape data.

Autoscaling - Horizontal Pod Autoscaling Parameters

KeyTypeDefaultDescription
autoscaling.enabledboolfalseEnable Horizontal Pod Autoscaling.
autoscaling.additionalLabelsobject, nullnilAdditional labels for HPA.
autoscaling.annotationsobject, nullnilAnnotations for HPA.
autoscaling.minReplicasint1Minimum number of replicas.
autoscaling.maxReplicasint10Maximum number of replicas.
autoscaling.metricslist[{"resource":{"name":"cpu","target":{"averageUtilization":60,"type":"Utilization"}},"type":"Resource"},{"resource":{"name":"memory","target":{"averageUtilization":60,"type":"Utilization"}},"type":"Resource"}]Metrics used for autoscaling.

VPA - Vertical Pod Autoscaler Parameters

KeyTypeDefaultDescription
vpa.enabledboolfalseEnable Vertical Pod Autoscaling.
vpa.additionalLabelsobject, nullnilAdditional labels for VPA.
vpa.annotationsobject, nullnilAnnotations for VPA.
vpa.containerPolicieslist[]Container policies for individual containers.
vpa.updatePolicyobject, null{"updateMode":"Auto"}Update policy.

EndpointMonitor Parameters

KeyTypeDefaultDescription
endpointMonitor.enabledboolfalseDeploy an IMC EndpointMonitor resource.
endpointMonitor.additionalLabelsobject, nullnilAdditional labels for EndpointMonitor.
endpointMonitor.annotationsobject, nullnilAnnotations for EndpointMonitor.

cert-manager Certificate Parameters

KeyTypeDefaultDescription
certificate.enabledboolfalseDeploy a cert-manager Certificate resource.
certificate.additionalLabelsobject, nullnilAdditional labels for Certificate.
certificate.annotationsobject, nullnilAnnotations for Certificate.
certificate.secretNametpl"tls-cert"Name of the secret resource that will be automatically created and managed by this Certificate resource.
certificate.durationstring"8760h0m0s"The requested "duration" (i.e. lifetime) of the Certificate.
certificate.renewBeforestring"720h0m0s"The amount of time before the currently issued certificate's notAfter time that cert-manager will begin to attempt to renew the certificate.
certificate.subjectobject, nullnilFull X509 name specification for certificate. Keys and values are evaluated as templates.
certificate.commonNametpl, nullnilCommon name as specified on the DER encoded CSR. This field is not recommended in cases when this certificate is an end-entity certificate. More information can be found in the cert-manager documentation.
certificate.keyAlgorithmstring"RSA"Private key algorithm of the corresponding private key for this certificate.
certificate.keyEncodingstring"PKCS1"Private key cryptography standards (PKCS) for this certificate's private key to be encoded in.
certificate.keySizeint2048Key bit size of the corresponding private key for this certificate.
certificate.isCAboolfalseMark this Certificate as valid for certificate signing.
certificate.usageslist, nullnilSet of x509 usages that are requested for the certificate.
certificate.dnsNameslist, nullnilList of DNS subjectAltNames to be set on the certificate. Keys and values are evaluated as templates.
certificate.ipAddresseslist, nullnilList of IP address subjectAltNames to be set on the certificate.
certificate.uriSANslist, nullnilList of URI subjectAltNames to be set on the certificate.
certificate.emailSANslist, nullnilList of email subjectAltNames to be set on the Certificate.
certificate.privateKey.enabledboolfalseEnable Private Key for the certificate.
certificate.privateKey.rotationPolicystring"Always"Denotes how private keys should be generated or sourced when a certificate is being issued.
certificate.issuerRef.namestring"ca-issuer"Reference to the issuer for this certificate.
certificate.issuerRef.kindstring"ClusterIssuer"Kind of the issuer being referred to.
certificate.issuerRef.groupstring"cert-manager.io"Group of the issuer resource being refered to.
certificate.keystores.enabledboolfalseEnables keystore configuration. Keystores configures additional keystore output formats stored in the spec.secretName Secret resource.
certificate.keystores.pkcs12.createbooltrueEnables PKCS12 keystore creation for the Certificate. PKCS12 configures options for storing a PKCS12 keystore in the spec.secretName Secret resource.
certificate.keystores.pkcs12.keystring"test_key"Key of the entry in the Secret resource's data field to be used.
certificate.keystores.pkcs12.namestring"test-creds"Name of the Secret resource being referred to.
certificate.keystores.jks.createboolfalseEnables jks keystore creation for the Certificate. JKS configures options for storing a JKS keystore in the spec.secretName Secret resource.
certificate.keystores.jks.keytpl"test_key"Key of the entry in the Secret resource's data field to be used.
certificate.keystores.jks.namestring"test-creds"Name of the Secret resource being referred to.

AlertmanagerConfig Parameters

KeyTypeDefaultDescription
alertmanagerConfig.enabledboolfalseDeploy an AlertmanagerConfig (Prometheus Operator) resource.
alertmanagerConfig.selectionLabelsobject, null{"alertmanagerConfig":"workload"}Labels to be picked up by Alertmanager to add it to base config. Read more about it at [https://docs.openshift.com/container-platform/4.7/rest_api/monitoring_apis/alertmanager-monitoring-coreos-com-v1.html](OpenShift's AlermanagerConfig documentation) under .spec.alertmanagerConfigSelector.
alertmanagerConfig.specobject, null{"inhibitRules":[],"receivers":[],"route":null}AlertmanagerConfig spec. Read more about it at [https://docs.openshift.com/container-platform/4.7/rest_api/monitoring_apis/alertmanagerconfig-monitoring-coreos-com-v1alpha1.html](OpenShift's AlermanagerConfig documentation).
alertmanagerConfig.spec.routeobject, nullnilRoute definition for alerts matching the resource’s namespace. It will be added to the generated Alertmanager configuration as a first-level route.
alertmanagerConfig.spec.receiverslist[]List of receivers.
alertmanagerConfig.spec.inhibitRuleslist[]Inhibition rules that allows to mute alerts when other alerts are already firing.

PrometheusRule Parameters

KeyTypeDefaultDescription
prometheusRule.enabledboolfalseDeploy a PrometheusRule (Prometheus Operator) resource.
prometheusRule.additionalLabelsobject, nullnilAdditional labels for PrometheusRule.
prometheusRule.groupslist[]Groups with alerting rules. Read more about it at [https://docs.openshift.com/container-platform/4.7/rest_api/monitoring_apis/prometheusrule-monitoring-coreos-com-v1.html](OpenShift's PrometheusRule documentation).

ExternalSecret Parameters

KeyTypeDefaultDescription
externalSecret.enabledboolfalseDeploy ExternalSecret resources.
externalSecret.additionalLabelsobject, nullnilAdditional labels for ExternalSecret.
externalSecret.annotationsobject, nullnilAnnotations for ExternalSecret.
externalSecret.secretStoreobject, null{"kind":"SecretStore","name":"tenant-vault-secret-store"}Default values for the SecretStore. Can be overriden per ExternalSecret in the externalSecret.files object.
externalSecret.secretStore.namestring"tenant-vault-secret-store"Name of the SecretStore to use.
externalSecret.secretStore.kindstring"SecretStore"Kind of the SecretStore being refered to.
externalSecret.refreshIntervalstring"1m"RefreshInterval is the amount of time before the values are read again from the SecretStore provider.
externalSecret.filesobject, nullnilList of ExternalSecret entries. Key will be used as a name suffix for the ExternalSecret. There a two allowed modes: - data: Data defines the connection between the Kubernetes Secret keys and the Provider data - dataFrom: Used to fetch all properties from the Provider key

NetworkPolicy Parameters

KeyTypeDefaultDescription
networkPolicy.enabledboolfalseEnable Network Policy.
networkPolicy.additionalLabelsobject, nullnilAdditional labels for Network Policy.
networkPolicy.annotationsobject, nullnilAnnotations for Network Policy.
networkPolicy.ingresslist, nullnilIngress rules for Network Policy.
networkPolicy.egresslist, nullnilEgress rules for Network Policy.

PodDisruptionBudget Parameters

KeyTypeDefaultDescription
pdb.enabledboolfalseEnable Pod Disruption Budget.
pdb.minAvailableint, string, null1Minimum number of pods that must be available after eviction. Accepts both integers and percentage strings (e.g. "25%").
pdb.maxUnavailableint, string, nullnilMaximum number of unavailable pods during voluntary disruptions. Accepts both integers and percentage strings (e.g. "25%").

GrafanaDashboard Parameters

KeyTypeDefaultDescription
grafanaDashboard.enabledboolfalseDeploy GrafanaDashboard resources.
grafanaDashboard.additionalLabelsobject, nullnilAdditional labels for GrafanaDashboard.
grafanaDashboard.annotationsobject, nullnilAnnotations for GrafanaDashboard.
grafanaDashboard.contentsobject, nullnilList of GrafanaDashboard entries. Key will be used as a name suffix for the GrafanaDashboard. Value is the GrafanaDashboard content. According to GrafanaDashboard behavior, url field takes precedence on the json field.

Backup Parameters

KeyTypeDefaultDescription
backup.enabledboolfalseDeploy a Velero/OADP Backup resource.
backup.namespacestring, null{{ .Release.Namespace }}Namespace for Backup.
backup.additionalLabelsobject, nullnilAdditional labels for Backup.
backup.annotationsobject, nullnilAnnotations for Backup.
backup.defaultVolumesToFsBackupbooltrueWhether to use filesystem backup to take snapshots of all pod volumes by default.
backup.defaultVolumesToResticbool, nullnilWhether to use Restic to take snapshots of all pod volumes by default. Deprecated: Use defaultVolumesToFsBackup instead.
backup.snapshotVolumesbooltrueWhether to take snapshots of persistent volumes as part of the backup.
backup.snapshotMoveDatabool, nullnilWhether to move the data of the snapshot after it's taken.
backup.csiSnapshotTimeoutstring, nullnilTime to wait for CSI VolumeSnapshot status to turn ReadyToUse during creation (e.g., "10m").
backup.datamoverstring, nullnilData mover to be used by the backup. If empty or "velero", the built-in data mover will be used.
backup.itemOperationTimeoutstring, nullnilTime to wait for asynchronous BackupItemAction operations (e.g., "1h").
backup.storageLocationstring, nullnilName of the backup storage location where the backup should be stored.
backup.ttlstring"1h0m0s"How long the Backup should be retained for.
backup.volumeSnapshotLocationslist, nullnilNames of VolumeSnapshotLocations associated with this backup.
backup.includedNamespaceslist, null[ {{ include "application.namespace" $ }} ]List of namespaces to include objects from. Values are evaluated as templates.
backup.includedResourceslist, nullnilList of resource types to include in the backup.
backup.excludedResourceslist, nullnilList of resource types to exclude from the backup.
backup.includedNamespaceScopedResourceslist, nullnilList of namespace-scoped resource types to include in the backup.
backup.excludedNamespaceScopedResourceslist, nullnilList of namespace-scoped resource types to exclude from the backup.
backup.orderedResourcesobject, nullnilSpecifies the backup order of resources of specific Kind. The map key is the resource name and the value is a list of object names in the order they should be backed up.

Naming convention for ConfigMap, Secret, SealedSecret and ExternalSecret

Name format of ConfigMap, Secret, SealedSecret and ExternalSecret is {{ template "application.name" $ }}-{{ $nameSuffix }} then:

  • {{ template "application.name" }} is a helper function that outputs .Values.applicationName if exist else return chart name as output
  • nameSuffix is the each key in secret.files, configMap.files, sealedSecret.files and externalSecret.files

For example if we have following values file:

applicationName: helloworld # {{ template "application.name" $ }}

configMap:
  files:
    config: # {{ $nameSuffix }}
      key: value

then the configmap name will be named helloworld-config.

Consuming environment variable in application chart

In order to use environment variable in deployment or cronjob, you will have to provide environment variable in key/value pair in env value. where key being environment variable key and value varies in different scenarios

  • For simple key/value environment variable, just provide value: <value>

    env:
      KEY:
        value: MY_VALUE
    
  • To get environement variable value from ConfigMap

    Suppose we have a configmap created from application chart

    applicationName: my-application
    configMap:
      enabled: true
      files:
        application-config:
          LOG: DEBUG
          VERBOSE: v1
    

    To get environment variable value from above created configmap, we will need to add following

    env:
     APP_LOG_LEVEL:
      valueFrom:
        configMapKeyRef:
          name: my-application-application-config
          key: LOG
    

    To get all environment variables key/values from ConfigMap, where configmap key being key of environment variable and value being value

    envFrom:
      application-config-env:
        type: configmap
        nameSuffix: application-config
    

    You can either provide nameSuffix which means name added after prefix <applicationName>- or static name with name of configmap.

    You can specify whether the configmap is mandatory or optional for the pod to start with the optional: true/false value.

    Note: first key after envFrom is just used to uniquely identify different objects in envFrom block. Make sure to keep it unique and relevant.

    To reference an existing external ConfigMap not managed by this chart, use name instead of nameSuffix:

    envFrom:
      external-configmap:
        type: configmap
        name: my-existing-configmap
    
  • To get environment variable value from Secret

    Suppose we have secret created from application chart

    applicationName: my-application
    secret:
     enabled: true
     files:
        db-credentials:
          PASSWORD: skljd#2Qer!!
          USER: postgres
    

    To get environment variable value from above created secret, we will need to add following

    env:
     KEY:
       valueFrom:
       secretKeyRef:
         name: my-application-db-credentials
         key: USER
    

    To get environement variable value from Secret, where secret key being key of environment variable and value being value

    envFrom:
     database-credentials:
        type: secret
        nameSuffix: db-credentials
    

    You can either provide nameSuffix which means name added after prefix <applicationName>- or static name with name of secret.

    You can specify whether the secret is mandatory or optional for the pod to start with the optional: true/false value.

    Note: first key after envFrom is just used to uniquely identify different objects in envFrom block. Make sure to keep it unique and relevant.

    To reference an existing external Secret not managed by this chart, use name instead of nameSuffix:

    envFrom:
      external-secret:
        type: secret
        name: my-existing-secret
    

Configuring probes

To disable liveness or readiness probe, set value of enabled to false.

livenessProbe:
  enabled: false

By default probe handler type is httpGet. You just need to override port and path as per your need.

livenessProbe:
  enabled: true
  httpGet:
    path: '/path'
    port: 8080

In order to use exec handler, you can define field livenessProbe.exec in your values.yaml.

livenessProbe:
  enabled: true
  exec:
    command:
      - cat
      - /tmp/healthy