Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/apetrovya/kubernetes-stateless-chart

A generic Helm chart for a stateless Kubernetes application
https://github.com/apetrovya/kubernetes-stateless-chart

golden-chart helm helm-chart helm-chart-repository kubernetes

Last synced: about 8 hours ago
JSON representation

A generic Helm chart for a stateless Kubernetes application

Awesome Lists containing this project

README

        

# Kubernetes Stateless Chart

`kubernetes-stateless-chart` is a generic Helm chart to use for the packaging of any Kubernetes application.

## How to use this chart

This chart is formatted as an OCI package. Include it as a dependency from [Quay.io](https://quay.io/repository/andov_go/helm-library/kubernetes-stateless-chart).

Add it to your Chart.yaml file of your Helm package.

```yaml
dependencies:
- name: kubernetes-stateless-chart
repository: oci://quay.io/andov.go/helm-library
version: 1.x.x
alias: app
```

## Repository

Checkout the [release.json](./release.json) for details about where the chart is hosted.

## Prerequisites

- Kubernetes 1.24+;

- Helm 3+.

## Parameters

### Global parameters

| Name | Description | Value |
| ------------------------- | -------------------------------------------------------------- | ----- |
| `global.imageRegistry` | Specify the registry that stores the images | `""` |
| `global.imagePullSecrets` | Specify the credentials as secret names for pulling the images | `[]` |

### Common parameters

| Name | Description | Value |
| ------------------- | ----------------------------------------------------------------------------------------------- | ----- |
| `nameOverride` | Provide a prefix to partially override the lib.name in the templates | `""` |
| `fullnameOverride` | Provide a name to override completely the lib.name in the templates | `""` |
| `commonLabels` | Provide a map of key/value pairs of labels to be applied to all resources in the templates | `{}` |
| `commonAnnotations` | Provide a map of key/value pairs of annotations to be applied to all resources in the templates | `{}` |
| `namespaceOverride` | Provide a name to fully override lib.namespace in the templates | `""` |

### Application parameters

| Name | Description | Value |
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| `include` | Includes/Excludes the configurations for this application | `true` |
| `name` | Application name | `""` |
| `image.registry` | URL of the container registry | `docker.io` |
| `image.repository` | URL of the container repository | `portainer/portainer-ce` |
| `image.tag` | Image version | `2.18.4-alpine` |
| `image.pullPolicy` | Pull policy of the container image | `Always` |
| `image.pullSecrets` | Registry credentials. Specify not the credentials but the corresponding secrets | `[]` |
| `entrypoint` | Provide arguments to the entrypoint of the application. | `[]` |
| `customEntrypoint` | Overwrite in full the parameter application.entrypoint. | `[]` |
| `args` | Provide arguments to the entrypoint of the application. | `["--admin-password='$$2y$$05$$aO9DEethtRMRpmyc4p0Dn.4MUvoJ274844ej9IdUS16kpiu43d6R6'"]` |
| `customArgs` | Overwrite in full the parameter application.args. | `[]` |
| `serviceAccount.create` | Specify whether to create a service account | `false` |
| `serviceAccount.name` | Service account name | `""` |
| `serviceAccount.automountServiceAccountToken` | Specify if the account can mount the access token from the Kubernetes API | `true` |
| `serviceAccount.labels` | Key/value map of labels | `{}` |
| `serviceAccount.additionalLabels` | Additional key/value map of labels | `{}` |
| `serviceAccount.annotations` | Key/value map of annotations | `{}` |
| `serviceAccount.additionalAnnotations` | Additional key/value map of annotations | `{}` |
| `serviceAccount.namespacePermissions` | List of permissions to attach to the ServiceAccount within the in use namespace | `[]` |
| `serviceAccount.additionalNamespacePermissions` | Additional list of permissions to attach to the ServiceAccount within the in use namespace | `[]` |
| `serviceAccount.clusterPermissions` | List of permissions to attach to the ServiceAccount within the in use Kubernetes cluster | `[]` |
| `serviceAccount.additionalClusterPermissions` | Additional list of permissions to attach to the ServiceAccount within the in use Kubernetes cluster | `[]` |
| `autoscaling.enabled` | Enables/disables autoscaling | `false` |
| `autoscaling.minReplicas` | Minimum number of pods | `1` |
| `autoscaling.maxReplicas` | Maximum number of pods | `5` |
| `autoscaling.metrics.targetCPU` | CPU utilization threshold | `""` |
| `autoscaling.metrics.targetMemory` | Memory utilization threshold | `""` |
| `replicaCount` | Initial number of pods for the application | `1` |
| `minReadySeconds` | Specify the minimum number of seconds for which a newly created pod should be ready without any of its container crashing, for it to be considered available | `0` |
| `progressDeadlineSeconds` | Specify the maximum time in seconds for a deployment to make progress before it is considered to be failed. The deployment controller will continue to process failed deployments and a condition with a ProgressDeadlineExceeded reason will be surfaced in the deployment status. Note that progress will not be estimated during the time a deployment is paused | `600` |
| `revisionHistoryLimit` | Specify the number of old ReplicaSets to retain to allow rollback. This is a pointer to distinguish between explicit zero and not specified | `10` |
| `deploymentStrategyType` | Specify the strategy of how to replace existing pods with new ones. Supports: Recreate or RollingUpdate | `RollingUpdate` |
| `rollingUpdateStrategyConfig.maxSurge` | Specify the maximum number of pods that can be scheduled above the desired number of pods | `25%` |
| `rollingUpdateStrategyConfig.maxUnavailable` | Specify the maximum number of pods that can be unavailable during the update | `25%` |
| `podLabels` | Specify labels to apply at PodSpec level | `{}` |
| `additionalPodLabels` | Additional labels to apply at PodSpec level | `{}` |
| `podAnnotations` | Specify annotations to apply at PodSpec level | `{}` |
| `additionalPodAnnotations` | Additional annotations to apply at PodSpec level | `{}` |
| `resources.requests.cpu` | Max CPU available for a pod (resource request) | `2000m` |
| `resources.requests.memory` | Max memory available for a pod (resource request) | `2048Mi` |
| `resources.limits.cpu` | Min CPU available for a pod (resource limit) | `2000m` |
| `resources.limits.memory` | Min memory available for a pod (resource limit) | `2048Mi` |
| `service.name` | Service name | `""` |
| `service.ports` | Service ports | `undefined` |
| `service.additionalPorts` | Additional service ports | `[]` |
| `service.type` | Service type. Valid values are: ClusterIP, NodePort, LoadBalancer | `""` |
| `service.annotations` | Service annotations | `{}` |
| `service.additionalAnnotations` | Additional service annotations | `{}` |
| `service.labels` | Service labels | `{}` |
| `service.additionalLabels` | Additional service labels | `{}` |
| `podSecurityContext.fsGroup` | Group ID that has access to the filesystem at run-time | `10001` |
| `containerSecurityContext.runAsUser` | ID of the user who runs the process | `10001` |
| `containerSecurityContext.runAsNonRoot` | Specify if the process can run under the root user | `true` |
| `containerSecurityContext.allowPrivilegeEscalation` | Specify if the process can get more permissions at run-time | `false` |
| `containerSecurityContext.readOnlyRootFilesystem` | Specify if the root filesystem of the process is read-only | `true` |
| `customContainerSecurityContext` | Overwrite partially the application.containerSecurityContext property | `{}` |
| `application.livenessProbe` | Specify the default liveness probe | |
| `livenessProbe.httpGet.path` | Application side HTTP URI that outlines how it performs | `/` |
| `livenessProbe.httpGet.port` | Application port that is open for probing type of requests | `http` |
| `livenessProbe.initialDelaySeconds` | Specify the waiting time for kubelet before it launches the first probe | `30` |
| `livenessProbe.periodSeconds` | Specify the time interval kubelet can launch the probe | `15` |
| `livenessProbe.timeoutSeconds` | Specify the timeout kubelet can wait before signaling if a probe fails | `10` |
| `livenessProbe.successThreshold` | Specify how many requests kubelet needs to probe to mark the livenessProbe as success | `1` |
| `livenessProbe.failureThreshold` | Specify how many requests kubelet needs to probe to mark the livenessProbe as failure | `3` |
| `customLivenessProbe` | Overwrite partially the application.livenessProbe property | `{}` |
| `application.readinessProbe` | Specify the default readiness probe | |
| `readinessProbe.httpGet.path` | Application side HTTP URI that outlines if it is ready | `/` |
| `readinessProbe.httpGet.port` | Application port that is open for probing type of requests | `http` |
| `readinessProbe.initialDelaySeconds` | Specify the waiting time for kubelet before it launches the first probe | `30` |
| `readinessProbe.periodSeconds` | Specify the time interval kubelet can launch the probe | `15` |
| `readinessProbe.timeoutSeconds` | Specify the timeout kubelet can wait before signaling if a probe fails | `10` |
| `readinessProbe.successThreshold` | Specify how many requests kubelet needs to probe to mark the readinessProbe as success | `1` |
| `readinessProbe.failureThreshold` | Specify how many requests kubelet needs to probe to mark the readinessProbe as failure | `3` |
| `customReadinessProbe` | Overwrite partially the application.readinessProbe property | `{}` |
| `application.startupProbe` | Specify the default startup probe | |
| `startupProbe.httpGet.path` | Application side HTTP URI that outlines if it is started | `/` |
| `startupProbe.httpGet.port` | Application port that is open for probing type of requests | `http` |
| `startupProbe.initialDelaySeconds` | Specify the waiting time for kubelet before it launches the first probe | `30` |
| `startupProbe.periodSeconds` | Specify the time interval kubelet can launch the probe | `15` |
| `startupProbe.timeoutSeconds` | Specify the timeout kubelet can wait before signaling if a probe fails | `10` |
| `startupProbe.successThreshold` | Specify how many requests kubelet needs to probe to mark the startupProbe as success | `1` |
| `startupProbe.failureThreshold` | Specify how many requests kubelet needs to probe to mark the startupProbe as failure | `3` |
| `customStartupProbe` | Overwrite partially the application.startupProbe property | `{}` |
| `customAffinity` | Overwrite in full the default affinity rules | `{}` |
| `nodeName` | Specify the NodeName where to schedule a pod. Leave empty for auto scheduling decision | `""` |
| `nodeSelector` | Specify the selector which must be true for the pod to fit on a node | `{}` |
| `ingress.enabled` | Enables/disables Ingress for routing inbound traffic | `true` |
| `ingress.name` | Ingress name | `""` |
| `ingress.pathType` | Ingress path type | `ImplementationSpecific` |
| `ingress.hostname` | Ingress hostname | `containers.app` |
| `ingress.tls` | Enables/disables TLS for the hostname | `false` |
| `ingress.alternateDnsNames` | Specify whether to add a list of alternative DNS names to the self-signed certificate | `[]` |
| `ingress.certValidityDuration` | Specify how many days the self-signed certificate should remain valid | `""` |
| `ingress.path` | Ingress path array | `/` |
| `ingress.additionalPaths` | Ingress extra paths | `[]` |
| `ingress.additionalTLS` | Additional TLS configuration | `[]` |
| `ingress.secret` | Name of the external secret for $parent.hostname | `""` |
| `ingress.ingressClassName` | IngressClass name | `""` |
| `ingress.additionalRules` | Additional Ingress rules | `[]` |
| `ingress.backendService.portName` | Specify the application port name of the backend service | `http` |
| `ingress.annotations` | Key/value map with annotations | `{}` |
| `ingress.additionalAnnotations` | Additional key/value map with annotations | `{}` |
| `ingress.labels` | Key/value map with labels | `{}` |
| `ingress.additionalLabels` | Additional key/value map with labels | `{}` |
| `ports` | Specify a list of application ports | `undefined` |
| `volumes` | Specify named volumes to be attached to the pod | `undefined` |
| `additionalVolumes` | Specify additional mutual exclusive with application.volumes value named volumes to be attached to the main container and pod | `[]` |
| `sidecars` | Specify containers to run alongside the main container | `[]` |
| `additionalSidecars` | Specify additional containers to run alongside the main container | `[]` |
| `initContainers` | Specify a list of initialization containers belonging to the pod | `[]` |
| `additionalInitContainers` | Specify a list of additional initialization containers belonging to the pod | `[]` |

### Application configuration file

| Name | Description | Value |
| ---------------------------- | ------------------------------------------------------------------------------------------------- | ----- |
| `config` | Overwrites the configuration in application.defaultConfig.config | `""` |
| `defaultConfig.name` | Specify the default application configuration file name | `""` |
| `defaultConfig.mountPath` | Specify the default application configuration file system path where the file is located | `""` |
| `defaultConfig.config` | Specify the default application configuration | `""` |
| `defaultConfig.customValues` | Specify a map of custom values to be referenced by the application.defaultConfig.config parameter | `{}` |

### Application environment variables

| Name | Description | Value |
| ------------------- | --------------------------------------------------------------------------- | ----- |
| `envs` | Environment variables | `{}` |
| `additionalEnvs` | Additional environment variables | `{}` |
| `internalEnvSecret` | Specify the internal secret name that contains system environment variables | `""` |
| `externalEnvSecret` | Specify the external secret name that contains system environment variables | `""` |

### Application Kubernetes resources

| Name | Description | Value |
| ----------------------------------- | ------------------------------------------------------------------- | ----- |
| `kubernetesYamlResources` | Kubernetes objects to add to the application package | `[]` |
| `additionalKubernetesYamlResources` | Add additional Kubernetes objects to add to the application package | `[]` |