A Helm chart to deploy konstellation-base for Kubernetes
konstellation-base
Helm chart is designed to facilitate the deployment of applications that lack their own Helm charts or have deprecated ones. It also serves as a foundation for deploying custom-developed applications.
- Replica management: configure the number of replicas for your service to ensure scalability and reliability.
- Image configuration: specify repository, tag and pull policy to control the application's container image.
- Service account management: option to create and configure a Kubernetes
serviceaccount
, including settingannotations
and specifying whether to automatically mount api credentials. - Environment variables: define environment variables directly or source them from existing Kubernetes
Secrets
orConfigMaps
. - Probes and lifecycle hooks: set up
liveness
,readiness
andstartup probes
to monitor the application's health and define lifecycle hooks for graceful startup and shutdown processes. - Resource management: allocate
cpu
andmemory
resources, set upautoscaling
based on utilization metrics and definepod disruption budgets
to maintain application availability during maintenance events. - Storage configuration: manage persistent storage needs by configuring
PVC
, specifying access modes, storage classes and other relevant parameters. - Networking and exposure: configure Kubernetes services to expose your application, with options for service types like
ClusterIP
,NodePort
orLoadBalancer
. Additionally, set upIngress
resources to manage external access to the application. - Security contexts: define security contexts at both the pod and container levels to enforce security policies, such as running containers as non-root users or setting read-only root filesystems.
- Node scheduling: control pod placement using
node selectors
,tolerations
,affinities
andtopology spread constraints
to optimize resource utilization and maintain high availability.
Name | Url | |
---|---|---|
ialejandro | [email protected] |
- Helm 3+
- Kubernetes 1.24+
helm repo add konstellation-io https://charts.konstellation.io
helm repo update
helm install [RELEASE_NAME] konstellation-io/konstellation-base
This install all the Kubernetes components associated with the chart and creates the release.
See helm install for command documentation.
helm uninstall [RELEASE_NAME]
This removes all the Kubernetes components associated with the chart and deletes the release.
See helm uninstall for command documentation.
See Customizing the chart before installing. To see all configurable options with comments:
helm show values konstellation-io/konstellation-base
Go to examples directory to see some examples of how to use this chart.
# local chart
helm template test . -f examples/XX-example.yaml
# remote chart
helm template test konstellation-io/konstellation-base -f examples/XX-example.yaml
Key | Type | Default | Description |
---|---|---|---|
affinity | object | {} |
Affinity for pod assignment Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity |
args | list | [] |
Configure args Ref: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/ |
autoscaling | object | {"enabled":false,"maxReplicas":100,"minReplicas":1,"targetCPUUtilizationPercentage":80} |
Autoscaling with CPU or memory utilization percentage Ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/ |
command | list | [] |
Configure command Ref: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/ |
configMaps | list | [] |
ConfigMap values to create configuration files Generate ConfigMap with following name: - Ref: https://kubernetes.io/docs/concepts/configuration/configmap/ |
env | object | {} |
Environment variables to configure application |
envFromConfigMap | object | {} |
Variables from configMap |
envFromFiles | list | [] |
Variables from files managed by you Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables |
envFromSecrets | object | {} |
Variables from secrets |
fullnameOverride | string | "" |
String to fully override konstellation-base.fullname template |
image | object | {"pullPolicy":"IfNotPresent","repository":"nginx","tag":""} |
Image registry The image configuration for the base service |
imagePullSecrets | list | [] |
Docker registry secret names as an array |
ingress | object | {"annotations":{},"className":"","enabled":false,"hosts":[{"host":"chart-example.local","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}],"tls":[]} |
Ingress configuration to expose app Ref: https://kubernetes.io/docs/concepts/services-networking/ingress/ |
initContainers | list | [] |
Configure additional containers Ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ |
lifecycle | object | {} |
Configure lifecycle hooks Ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/ Ref: https://learnk8s.io/graceful-shutdown |
livenessProbe | object | {"enabled":false,"failureThreshold":3,"initialDelaySeconds":180,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":5} |
Configure liveness checker Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-startup-probes |
livenessProbeCustom | object | {} |
Custom livenessProbe |
nameOverride | string | "" |
String to partially override konstellation-base.fullname template (will maintain the release name) |
networkPolicy | object | {"egress":[],"enabled":false,"ingress":[],"policyTypes":[]} |
NetworkPolicy configuration Ref: https://kubernetes.io/docs/concepts/services-networking/network-policies/ |
networkPolicy.enabled | bool | false |
Enable or disable NetworkPolicy |
networkPolicy.policyTypes | list | [] |
Policy types |
nodeSelector | object | {} |
Node labels for pod assignment Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector |
persistentVolume | object | {"accessModes":["ReadWriteOnce"],"annotations":{},"enabled":false,"labels":{},"selector":{},"size":"8Gi","storageClass":"","volumeBindingMode":"","volumeName":""} |
Persistent Volume configuration Ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/ |
persistentVolume.accessModes | list | ["ReadWriteOnce"] |
Persistent Volume access modes Must match those of existing PV or dynamic provisioner Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ |
persistentVolume.annotations | object | {} |
Persistent Volume annotations |
persistentVolume.enabled | bool | false |
Enable or disable persistence |
persistentVolume.labels | object | {} |
Persistent Volume labels |
persistentVolume.selector | object | {} |
Persistent Volume Claim Selector Useful if Persistent Volumes have been provisioned in advance Ref: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#selector |
persistentVolume.size | string | "8Gi" |
Persistent Volume size |
persistentVolume.storageClass | string | "" |
Persistent Volume Storage Class If defined, storageClassName: If set to "-", storageClassName: "", which disables dynamic provisioning If undefined (the default) or set to null, no storageClassName spec is set, choosing the default provisioner. (gp2 on AWS, standard on GKE, AWS & OpenStack) |
persistentVolume.volumeBindingMode | string | "" |
Persistent Volume Binding Mode If defined, volumeBindingMode: If undefined (the default) or set to null, no volumeBindingMode spec is set, choosing the default mode. |
persistentVolume.volumeName | string | "" |
Persistent Volume Name Useful if Persistent Volumes have been provisioned in advance and you want to use a specific one |
podAnnotations | object | {} |
Configure annotations on Pods |
podDisruptionBudget | object | {"enabled":false,"maxUnavailable":1,"minAvailable":null} |
Pod Disruption Budget Ref: https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1/ |
podLabels | object | {} |
Configure labels on Pods |
podSecurityContext | object | {} |
Defines privilege and access control settings for a Pod Ref: https://kubernetes.io/docs/concepts/security/pod-security-standards/ Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ |
readinessProbe | object | {"enabled":false,"failureThreshold":3,"initialDelaySeconds":10,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1} |
Configure readinessProbe checker Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-startup-probes |
readinessProbeCustom | object | {} |
Custom readinessProbe |
replicaCount | int | 1 |
Number of replicas Specifies the number of replicas for the service |
resources | object | {} |
Resources limits and requested Ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ |
secrets | list | [] |
Secrets values to create credentials and reference by envFromSecrets Generate Secret with following name: - Ref: https://kubernetes.io/docs/concepts/configuration/secret/ |
securityContext | object | {} |
Defines privilege and access control settings for a Container Ref: https://kubernetes.io/docs/concepts/security/pod-security-standards/ Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ |
service | object | {"port":80,"type":"ClusterIP"} |
Kubernetes service to expose Pod Ref: https://kubernetes.io/docs/concepts/services-networking/service/ |
service.port | int | 80 |
Kubernetes Service port |
service.type | string | "ClusterIP" |
Kubernetes Service type. Allowed values: NodePort, LoadBalancer or ClusterIP |
serviceAccount | object | {"annotations":{},"automount":true,"create":true,"name":""} |
Enable creation of ServiceAccount Ref: https://kubernetes.io/docs/concepts/security/service-accounts/ |
serviceMonitor | object | {"enabled":false,"interval":"30s","metricRelabelings":[],"relabelings":[],"scrapeTimeout":"10s"} |
Enable ServiceMonitor to get metrics Ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitor |
serviceMonitor.enabled | bool | false |
Enable or disable |
startupProbe | object | {"enabled":false,"failureThreshold":30,"initialDelaySeconds":180,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":5} |
Configure startupProbe checker Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-startup-probes |
startupProbeCustom | object | {} |
Custom startupProbe |
terminationGracePeriodSeconds | int | 30 |
Configure Pod termination grace period Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination |
testConnection | object | {"enabled":false,"repository":"busybox","tag":""} |
Enable or disable test connection |
tolerations | list | [] |
Tolerations for pod assignment Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ |
topologySpreadConstraints | list | [] |
Control how Pods are spread across your cluster Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/#example-multiple-topologyspreadconstraints |
volumeMounts | list | [] |
Additional volumeMounts on the output Deployment definition |
volumes | list | [] |
Additional volumes on the output Deployment definition Ref: https://kubernetes.io/docs/concepts/storage/volumes/ Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/ Ref: https://kubernetes.io/docs/tasks/inject-data-application/distribute-credentials-secure/#create-a-pod-that-has-access-to-the-secret-data-through-a-volume |