From 18ce59165a1693452ec8368821d533d9ca29cdfb Mon Sep 17 00:00:00 2001 From: Simon Kagwi Date: Tue, 18 Mar 2025 18:05:47 +0300 Subject: [PATCH 1/4] Add README and CHANGELOG. --- charts/odk-publish/CHANGELOG.md | 16 ++++ charts/odk-publish/Chart.yaml | 2 +- charts/odk-publish/README.md | 142 ++++++++++++++++++++++++++++++++ 3 files changed, 159 insertions(+), 1 deletion(-) create mode 100644 charts/odk-publish/CHANGELOG.md create mode 100644 charts/odk-publish/README.md diff --git a/charts/odk-publish/CHANGELOG.md b/charts/odk-publish/CHANGELOG.md new file mode 100644 index 0000000..e1998ac --- /dev/null +++ b/charts/odk-publish/CHANGELOG.md @@ -0,0 +1,16 @@ +# Changelog + +This file documents all notable changes to the ODK Publish Helm Chart. +The release numbering uses [semantic versioning](http://semver.org). + +## 0.1.2 + +- Add the ability to run separate ASGI and WSGI deployments. (#9) + +## 0.1.1 + +- Add `image.tag` in values.yaml. (e98539e036a120855dd39db73ee0c398725edeeb) + +## 0.1.0 + +- Initial release (#1) diff --git a/charts/odk-publish/Chart.yaml b/charts/odk-publish/Chart.yaml index fc5d33e..00546a8 100644 --- a/charts/odk-publish/Chart.yaml +++ b/charts/odk-publish/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: odk-publish -description: A Helm chart for Kubernetes +description: A Helm chart for ODK Publish # A chart can be either an 'application' or a 'library' chart. # diff --git a/charts/odk-publish/README.md b/charts/odk-publish/README.md new file mode 100644 index 0000000..666d80b --- /dev/null +++ b/charts/odk-publish/README.md @@ -0,0 +1,142 @@ +# ODK Publish + +[ODK Publish](https://github.com/caktus/odk-publish/) is a proof-of-concept open-source tool to publish XLSForm templates from Google Sheets to [ODK Central](https://docs.getodk.org/). + +## TL;DR + +```bash +helm repo add caktus https://caktus.github.io/helm-charts +helm install caktus/odk-publish +``` + +## Introduction + +This chart deploys the ODK Publish Django project. By default, the PostgreSQL database +for the project is assumed to be an external service, but it can be installed as a subchart. +The database can be configured using the `DATABASE_URL` environment variable. + +The chart can set up separate deployments for WSGI (using Gunicorn) and ASGI (using Daphne), but +the default is one Daphne-based deployment for both WSGI and ASGI. + +## Prerequisites + +* Kubernetes 1.28+ + +## Installing the Chart + +To install the chart + +```bash +helm repo add caktus https://caktus.github.io/helm-charts +helm install caktus/odk-publish +``` + +## Uninstalling the Chart + +To uninstall/delete the deployment: + +```bash +helm delete +``` + +The command removes all the Kubernetes components associated with the chart and deletes the release. + +## Configuration + +The following table lists the configurable parameters of the ODK Publish chart and their default values. +If `asgi.enabled` is `false`, the chart will create only one deployment for both WSGI and ASGI, using a Daphne web server. +Else, it will create a Gunicorn-based WSGI deployment and a Daphne-based ASGI deployment. +The `asgi.*` parameters below are similar to their `odk-publish` counterparts, but will only apply to the +ASGI deployment (when separate deployments are enabled). + +| Parameter | Description | Default | +|:---------------------------------------------------------|:-------------------------------------------------------|:----------------------------------------------------------------------------------------------------| +| `odk-publish.publishDomain` | The domain name for the ODK Publish deployment. | `"www.example.com"` | +| `odk-publish.environmentVariables` | Environment variables for the deployment. | `{"DATABASE_URL": "postgresql://postgres@172.17.0.1:9062/odk_publish"}` | +| `odk-publish.replicaCount` | Number of replicas for the deployment. | `1` | +| `odk-publish.image.repository` | Repository for the ODK Publish image. | `"ghcr.io/caktus/odk-publish"` | +| `odk-publish.image.pullPolicy` | Image pull policy. | `"IfNotPresent"` | +| `odk-publish.image.tag` | ODK Publish image tag. | `"latest"` | +| `odk-publish.imagePullSecrets` | Pull secrets for the image repository. | `[]` | +| `odk-publish.nameOverride` | Release name override. | `""` | +| `odk-publish.fullnameOverride` | Full name override for release. | `""` | +| `odk-publish.serviceAccount.create` | Specifies whether a ServiceAccount should be created. | `true` | +| `odk-publish.serviceAccount.automount` | Whether to automount the ServiceAccount. | `true` | +| `odk-publish.serviceAccount.annotations` | ServiceAccount annotations. | `{}` | +| `odk-publish.serviceAccount.name` | The name of the ServiceAccount to create. | `""` | +| `odk-publish.podAnnotations` | Pod annotations. | `{}` | +| `odk-publish.podLabels` | Pod labels. | `{}` | +| `odk-publish.podSecurityContext` | Pod security context. | `{}` | +| `odk-publish.securityContext` | Security context for the deployment. | `{}` | +| `odk-publish.service.type` | Service Type. | `"ClusterIP"` | +| `odk-publish.service.port` | Kubernetes service port. | `8000` | +| `odk-publish.ingress.enabled` | Whether to enable Ingress. | `true` | +| `odk-publish.ingress.className` | Ingress class. | `"nginx"` | +| `odk-publish.ingress.annotations` | Ingress annotations. | `{}` | +| `odk-publish.ingress.hosts` | Ingress hosts. | `[{"host": "chart-example.local", "paths": [{"path": "/", "pathType": "ImplementationSpecific"}]}]` | +| `odk-publish.ingress.tls` | Ingress TLS hosts. | `[]` | +| `odk-publish.ingressApp.enabled` | Whether to enable a second Ingress. | `false` | +| `odk-publish.ingressApp.className` | Ingress class for second Ingress. | `"nginx"` | +| `odk-publish.ingressApp.annotations` | Ingress annotations for second Ingress. | `{}` | +| `odk-publish.ingressApp.hosts` | Ingress hosts for second Ingress. | `[{"host": "chart-example.local", "paths": [{"path": "/", "pathType": "ImplementationSpecific"}]}]` | +| `odk-publish.ingressApp.tls` | Ingress TLS hosts for second Ingress. | `[]` | +| `odk-publish.resources` | Kubernetes pod resources. | `{}` | +| `odk-publish.autoscaling.enabled` | Whether to enable autoscaling. | `false` | +| `odk-publish.autoscaling.minReplicas` | Minimum replicas for autoscaling. | `1` | +| `odk-publish.autoscaling.maxReplicas` | Maximum replicas for autoscaling. | `100` | +| `odk-publish.autoscaling.targetCPUUtilizationPercentage` | The target CPU utilization percentage for autoscaling. | `80` | +| `odk-publish.volumes` | Kubernetes volumes. | `[]` | +| `odk-publish.volumeMounts` | Kubernetes volumes mounts. | `[]` | +| `odk-publish.nodeSelector` | Pod node selector. | `{}` | +| `odk-publish.tolerations` | Kubernetes tolerations. | `[]` | +| `odk-publish.affinity` | Affinity for the deployment. | `{}` | +| `asgi.enabled` | Whether to set up separate WSGI and ASGI deployments. | `false` | +| `asgi.publishDomain` | | `"www.example.com"` | +| `asgi.environmentVariables` | | `{"DATABASE_URL": "postgresql://postgres@172.17.0.1:9062/odk_publish"}` | +| `asgi.replicaCount` | | `1` | +| `asgi.image.repository` | | `"ghcr.io/caktus/odk-publish"` | +| `asgi.image.pullPolicy` | | `"IfNotPresent"` | +| `asgi.image.tag` | | `"latest"` | +| `asgi.imagePullSecrets` | | `[]` | +| `asgi.nameOverride` | | `""` | +| `asgi.fullnameOverride` | | `""` | +| `asgi.serviceAccount.create` | | `true` | +| `asgi.serviceAccount.automount` | | `true` | +| `asgi.serviceAccount.annotations` | | `{}` | +| `asgi.serviceAccount.name` | | `""` | +| `asgi.podAnnotations` | | `{}` | +| `asgi.podLabels` | | `{}` | +| `asgi.podSecurityContext` | | `{}` | +| `asgi.securityContext` | | `{}` | +| `asgi.service.type` | | `"ClusterIP"` | +| `asgi.service.port` | | `8000` | +| `asgi.ingress.enabled` | | `true` | +| `asgi.ingress.className` | | `"nginx"` | +| `asgi.ingress.annotations` | | `{}` | +| `asgi.ingress.hosts` | | `[{"host": "chart-example.local", "paths": [{"path": "/ws", "pathType": "Prefix"}]}]` | +| `asgi.ingress.tls` | | `[]` | +| `asgi.ingressApp.enabled` | | `false` | +| `asgi.ingressApp.className` | | `"nginx"` | +| `asgi.ingressApp.annotations` | | `{}` | +| `asgi.ingressApp.hosts` | | `[{"host": "chart-example.local", "paths": [{"path": "/", "pathType": "ImplementationSpecific"}]}]` | +| `asgi.ingressApp.tls` | | `[]` | +| `asgi.resources` | | `{}` | +| `asgi.autoscaling.enabled` | | `false` | +| `asgi.autoscaling.minReplicas` | | `1` | +| `asgi.autoscaling.maxReplicas` | | `100` | +| `asgi.autoscaling.targetCPUUtilizationPercentage` | | `80` | +| `asgi.volumes` | | `[]` | +| `asgi.volumeMounts` | | `[]` | +| `asgi.nodeSelector` | | `{}` | +| `asgi.tolerations` | | `[]` | +| `asgi.affinity` | | `{}` | +| `asgi.healthChecksPath` | The path for liveness and readiness checks. | `"/ws/health/"` | + +To override the defaults, specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, + +```bash +helm repo add caktus https://caktus.github.io/helm-charts +helm install \ + --set publishDomain=example.net \ + caktus/odk-publish +``` From 1bb957bcaf445273cc205bb72a825716f5a7fddc Mon Sep 17 00:00:00 2001 From: Simon Kagwi Date: Tue, 18 Mar 2025 18:12:19 +0300 Subject: [PATCH 2/4] Fix --set example. --- charts/odk-publish/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/odk-publish/README.md b/charts/odk-publish/README.md index 666d80b..684ad7c 100644 --- a/charts/odk-publish/README.md +++ b/charts/odk-publish/README.md @@ -137,6 +137,6 @@ To override the defaults, specify each parameter using the `--set key=value[,key ```bash helm repo add caktus https://caktus.github.io/helm-charts helm install \ - --set publishDomain=example.net \ + --set odk-publish.publishDomain=example.net \ caktus/odk-publish ``` From e6859483c72397437fae0d336a4cb50003d6452e Mon Sep 17 00:00:00 2001 From: Simon Kagwi Date: Tue, 18 Mar 2025 21:21:32 +0300 Subject: [PATCH 3/4] Mention comments in the values.yaml file. --- charts/odk-publish/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/charts/odk-publish/README.md b/charts/odk-publish/README.md index 684ad7c..c6e00bc 100644 --- a/charts/odk-publish/README.md +++ b/charts/odk-publish/README.md @@ -44,6 +44,8 @@ The command removes all the Kubernetes components associated with the chart and ## Configuration The following table lists the configurable parameters of the ODK Publish chart and their default values. +Some of the paramaters are further documented with comments in the `values.yaml` file. + If `asgi.enabled` is `false`, the chart will create only one deployment for both WSGI and ASGI, using a Daphne web server. Else, it will create a Gunicorn-based WSGI deployment and a Daphne-based ASGI deployment. The `asgi.*` parameters below are similar to their `odk-publish` counterparts, but will only apply to the From c2c115f15b23171adf899766747de578295bf89f Mon Sep 17 00:00:00 2001 From: Simon Kagwi Date: Tue, 18 Mar 2025 22:36:53 +0300 Subject: [PATCH 4/4] Improve formatting of the values table. --- charts/odk-publish/README.md | 164 +++++++++++++++++------------------ 1 file changed, 82 insertions(+), 82 deletions(-) diff --git a/charts/odk-publish/README.md b/charts/odk-publish/README.md index c6e00bc..32ee7f5 100644 --- a/charts/odk-publish/README.md +++ b/charts/odk-publish/README.md @@ -51,88 +51,88 @@ Else, it will create a Gunicorn-based WSGI deployment and a Daphne-based ASGI de The `asgi.*` parameters below are similar to their `odk-publish` counterparts, but will only apply to the ASGI deployment (when separate deployments are enabled). -| Parameter | Description | Default | -|:---------------------------------------------------------|:-------------------------------------------------------|:----------------------------------------------------------------------------------------------------| -| `odk-publish.publishDomain` | The domain name for the ODK Publish deployment. | `"www.example.com"` | -| `odk-publish.environmentVariables` | Environment variables for the deployment. | `{"DATABASE_URL": "postgresql://postgres@172.17.0.1:9062/odk_publish"}` | -| `odk-publish.replicaCount` | Number of replicas for the deployment. | `1` | -| `odk-publish.image.repository` | Repository for the ODK Publish image. | `"ghcr.io/caktus/odk-publish"` | -| `odk-publish.image.pullPolicy` | Image pull policy. | `"IfNotPresent"` | -| `odk-publish.image.tag` | ODK Publish image tag. | `"latest"` | -| `odk-publish.imagePullSecrets` | Pull secrets for the image repository. | `[]` | -| `odk-publish.nameOverride` | Release name override. | `""` | -| `odk-publish.fullnameOverride` | Full name override for release. | `""` | -| `odk-publish.serviceAccount.create` | Specifies whether a ServiceAccount should be created. | `true` | -| `odk-publish.serviceAccount.automount` | Whether to automount the ServiceAccount. | `true` | -| `odk-publish.serviceAccount.annotations` | ServiceAccount annotations. | `{}` | -| `odk-publish.serviceAccount.name` | The name of the ServiceAccount to create. | `""` | -| `odk-publish.podAnnotations` | Pod annotations. | `{}` | -| `odk-publish.podLabels` | Pod labels. | `{}` | -| `odk-publish.podSecurityContext` | Pod security context. | `{}` | -| `odk-publish.securityContext` | Security context for the deployment. | `{}` | -| `odk-publish.service.type` | Service Type. | `"ClusterIP"` | -| `odk-publish.service.port` | Kubernetes service port. | `8000` | -| `odk-publish.ingress.enabled` | Whether to enable Ingress. | `true` | -| `odk-publish.ingress.className` | Ingress class. | `"nginx"` | -| `odk-publish.ingress.annotations` | Ingress annotations. | `{}` | -| `odk-publish.ingress.hosts` | Ingress hosts. | `[{"host": "chart-example.local", "paths": [{"path": "/", "pathType": "ImplementationSpecific"}]}]` | -| `odk-publish.ingress.tls` | Ingress TLS hosts. | `[]` | -| `odk-publish.ingressApp.enabled` | Whether to enable a second Ingress. | `false` | -| `odk-publish.ingressApp.className` | Ingress class for second Ingress. | `"nginx"` | -| `odk-publish.ingressApp.annotations` | Ingress annotations for second Ingress. | `{}` | -| `odk-publish.ingressApp.hosts` | Ingress hosts for second Ingress. | `[{"host": "chart-example.local", "paths": [{"path": "/", "pathType": "ImplementationSpecific"}]}]` | -| `odk-publish.ingressApp.tls` | Ingress TLS hosts for second Ingress. | `[]` | -| `odk-publish.resources` | Kubernetes pod resources. | `{}` | -| `odk-publish.autoscaling.enabled` | Whether to enable autoscaling. | `false` | -| `odk-publish.autoscaling.minReplicas` | Minimum replicas for autoscaling. | `1` | -| `odk-publish.autoscaling.maxReplicas` | Maximum replicas for autoscaling. | `100` | -| `odk-publish.autoscaling.targetCPUUtilizationPercentage` | The target CPU utilization percentage for autoscaling. | `80` | -| `odk-publish.volumes` | Kubernetes volumes. | `[]` | -| `odk-publish.volumeMounts` | Kubernetes volumes mounts. | `[]` | -| `odk-publish.nodeSelector` | Pod node selector. | `{}` | -| `odk-publish.tolerations` | Kubernetes tolerations. | `[]` | -| `odk-publish.affinity` | Affinity for the deployment. | `{}` | -| `asgi.enabled` | Whether to set up separate WSGI and ASGI deployments. | `false` | -| `asgi.publishDomain` | | `"www.example.com"` | -| `asgi.environmentVariables` | | `{"DATABASE_URL": "postgresql://postgres@172.17.0.1:9062/odk_publish"}` | -| `asgi.replicaCount` | | `1` | -| `asgi.image.repository` | | `"ghcr.io/caktus/odk-publish"` | -| `asgi.image.pullPolicy` | | `"IfNotPresent"` | -| `asgi.image.tag` | | `"latest"` | -| `asgi.imagePullSecrets` | | `[]` | -| `asgi.nameOverride` | | `""` | -| `asgi.fullnameOverride` | | `""` | -| `asgi.serviceAccount.create` | | `true` | -| `asgi.serviceAccount.automount` | | `true` | -| `asgi.serviceAccount.annotations` | | `{}` | -| `asgi.serviceAccount.name` | | `""` | -| `asgi.podAnnotations` | | `{}` | -| `asgi.podLabels` | | `{}` | -| `asgi.podSecurityContext` | | `{}` | -| `asgi.securityContext` | | `{}` | -| `asgi.service.type` | | `"ClusterIP"` | -| `asgi.service.port` | | `8000` | -| `asgi.ingress.enabled` | | `true` | -| `asgi.ingress.className` | | `"nginx"` | -| `asgi.ingress.annotations` | | `{}` | -| `asgi.ingress.hosts` | | `[{"host": "chart-example.local", "paths": [{"path": "/ws", "pathType": "Prefix"}]}]` | -| `asgi.ingress.tls` | | `[]` | -| `asgi.ingressApp.enabled` | | `false` | -| `asgi.ingressApp.className` | | `"nginx"` | -| `asgi.ingressApp.annotations` | | `{}` | -| `asgi.ingressApp.hosts` | | `[{"host": "chart-example.local", "paths": [{"path": "/", "pathType": "ImplementationSpecific"}]}]` | -| `asgi.ingressApp.tls` | | `[]` | -| `asgi.resources` | | `{}` | -| `asgi.autoscaling.enabled` | | `false` | -| `asgi.autoscaling.minReplicas` | | `1` | -| `asgi.autoscaling.maxReplicas` | | `100` | -| `asgi.autoscaling.targetCPUUtilizationPercentage` | | `80` | -| `asgi.volumes` | | `[]` | -| `asgi.volumeMounts` | | `[]` | -| `asgi.nodeSelector` | | `{}` | -| `asgi.tolerations` | | `[]` | -| `asgi.affinity` | | `{}` | -| `asgi.healthChecksPath` | The path for liveness and readiness checks. | `"/ws/health/"` | +| Parameter | Description | Default | +|:---------------------------------------------------------|:-------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `odk-publish.publishDomain` | The domain name for the ODK Publish deployment. | `"www.example.com"` | +| `odk-publish.environmentVariables` | Environment variables for the deployment. | `{"DATABASE_URL": "postgresql://postgres@172.17.0.1:9062/odk_publish"}` | +| `odk-publish.replicaCount` | Number of replicas for the deployment. | `1` | +| `odk-publish.image.repository` | Repository for the ODK Publish image. | `"ghcr.io/caktus/odk-publish"` | +| `odk-publish.image.pullPolicy` | Image pull policy. | `"IfNotPresent"` | +| `odk-publish.image.tag` | ODK Publish image tag. | `"latest"` | +| `odk-publish.imagePullSecrets` | Pull secrets for the image repository. | `[]` | +| `odk-publish.nameOverride` | Release name override. | `""` | +| `odk-publish.fullnameOverride` | Full name override for release. | `""` | +| `odk-publish.serviceAccount.create` | Specifies whether a ServiceAccount should be created. | `true` | +| `odk-publish.serviceAccount.automount` | Whether to automount the ServiceAccount. | `true` | +| `odk-publish.serviceAccount.annotations` | ServiceAccount annotations. | `{}` | +| `odk-publish.serviceAccount.name` | The name of the ServiceAccount to create. | `""` | +| `odk-publish.podAnnotations` | Pod annotations. | `{}` | +| `odk-publish.podLabels` | Pod labels. | `{}` | +| `odk-publish.podSecurityContext` | Pod security context. | `{}` | +| `odk-publish.securityContext` | Security context for the deployment. | `{}` | +| `odk-publish.service.type` | Service Type. | `"ClusterIP"` | +| `odk-publish.service.port` | Kubernetes service port. | `8000` | +| `odk-publish.ingress.enabled` | Whether to enable Ingress. | `true` | +| `odk-publish.ingress.className` | Ingress class. | `"nginx"` | +| `odk-publish.ingress.annotations` | Ingress annotations. | `{}` | +| `odk-publish.ingress.hosts` | Ingress hosts. |
[
{
"host": "chart-example.local",
"paths": [
{
"path": "/",
"pathType": "ImplementationSpecific"
}
]
}
]
| +| `odk-publish.ingress.tls` | Ingress TLS hosts. | `[]` | +| `odk-publish.ingressApp.enabled` | Whether to enable a second Ingress. | `false` | +| `odk-publish.ingressApp.className` | Ingress class for second Ingress. | `"nginx"` | +| `odk-publish.ingressApp.annotations` | Ingress annotations for second Ingress. | `{}` | +| `odk-publish.ingressApp.hosts` | Ingress hosts for second Ingress. |
[
{
"host": "chart-example.local",
"paths": [
{
"path": "/",
"pathType": "ImplementationSpecific"
}
]
}
]
| +| `odk-publish.ingressApp.tls` | Ingress TLS hosts for second Ingress. | `[]` | +| `odk-publish.resources` | Kubernetes pod resources. | `{}` | +| `odk-publish.autoscaling.enabled` | Whether to enable autoscaling. | `false` | +| `odk-publish.autoscaling.minReplicas` | Minimum replicas for autoscaling. | `1` | +| `odk-publish.autoscaling.maxReplicas` | Maximum replicas for autoscaling. | `100` | +| `odk-publish.autoscaling.targetCPUUtilizationPercentage` | The target CPU utilization percentage for autoscaling. | `80` | +| `odk-publish.volumes` | Kubernetes volumes. | `[]` | +| `odk-publish.volumeMounts` | Kubernetes volumes mounts. | `[]` | +| `odk-publish.nodeSelector` | Pod node selector. | `{}` | +| `odk-publish.tolerations` | Kubernetes tolerations. | `[]` | +| `odk-publish.affinity` | Affinity for the deployment. | `{}` | +| `asgi.enabled` | Whether to set up separate WSGI and ASGI deployments. | `false` | +| `asgi.publishDomain` | | `"www.example.com"` | +| `asgi.environmentVariables` | | `{"DATABASE_URL": "postgresql://postgres@172.17.0.1:9062/odk_publish"}` | +| `asgi.replicaCount` | | `1` | +| `asgi.image.repository` | | `"ghcr.io/caktus/odk-publish"` | +| `asgi.image.pullPolicy` | | `"IfNotPresent"` | +| `asgi.image.tag` | | `"latest"` | +| `asgi.imagePullSecrets` | | `[]` | +| `asgi.nameOverride` | | `""` | +| `asgi.fullnameOverride` | | `""` | +| `asgi.serviceAccount.create` | | `true` | +| `asgi.serviceAccount.automount` | | `true` | +| `asgi.serviceAccount.annotations` | | `{}` | +| `asgi.serviceAccount.name` | | `""` | +| `asgi.podAnnotations` | | `{}` | +| `asgi.podLabels` | | `{}` | +| `asgi.podSecurityContext` | | `{}` | +| `asgi.securityContext` | | `{}` | +| `asgi.service.type` | | `"ClusterIP"` | +| `asgi.service.port` | | `8000` | +| `asgi.ingress.enabled` | | `true` | +| `asgi.ingress.className` | | `"nginx"` | +| `asgi.ingress.annotations` | | `{}` | +| `asgi.ingress.hosts` | |
[
{
"host": "chart-example.local",
"paths": [
{
"path": "/ws",
"pathType": "Prefix"
}
]
}
]
| +| `asgi.ingress.tls` | | `[]` | +| `asgi.ingressApp.enabled` | | `false` | +| `asgi.ingressApp.className` | | `"nginx"` | +| `asgi.ingressApp.annotations` | | `{}` | +| `asgi.ingressApp.hosts` | |
[
{
"host": "chart-example.local",
"paths": [
{
"path": "/",
"pathType": "ImplementationSpecific"
}
]
}
]
| +| `asgi.ingressApp.tls` | | `[]` | +| `asgi.resources` | | `{}` | +| `asgi.autoscaling.enabled` | | `false` | +| `asgi.autoscaling.minReplicas` | | `1` | +| `asgi.autoscaling.maxReplicas` | | `100` | +| `asgi.autoscaling.targetCPUUtilizationPercentage` | | `80` | +| `asgi.volumes` | | `[]` | +| `asgi.volumeMounts` | | `[]` | +| `asgi.nodeSelector` | | `{}` | +| `asgi.tolerations` | | `[]` | +| `asgi.affinity` | | `{}` | +| `asgi.healthChecksPath` | The path for liveness and readiness checks. | `"/ws/health/"` | To override the defaults, specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,