|
| 1 | +# Open VTB Chart |
| 2 | + |
| 3 | +Register en API's voor Verzoeken, Taken en Berichten. |
| 4 | + |
| 5 | +   |
| 6 | + |
| 7 | +## Introduction |
| 8 | + |
| 9 | +This chart can be used to deploy Open VTB on a Kubernetes cluster using the Helm package manager. |
| 10 | + |
| 11 | +* [Source code](https://github.com/maykinmedia/open-vtb/) |
| 12 | +* [Docker image](https://hub.docker.com/r/maykinmedia/open-vtb) |
| 13 | + |
| 14 | +## Quickstart |
| 15 | + |
| 16 | +```bash |
| 17 | +helm repo add maykinmedia https://maykinmedia.github.io/charts/ |
| 18 | +helm install openvtb maykinmedia/openvtb |
| 19 | +``` |
| 20 | + |
| 21 | +## Requirements |
| 22 | + |
| 23 | +| Repository | Name | Version | |
| 24 | +|------------|------|---------| |
| 25 | +| https://charts.bitnami.com/bitnami | common | 2.31.4 | |
| 26 | +| https://charts.bitnami.com/bitnami | redis | 22.0.1 | |
| 27 | + |
| 28 | +## Configuration and installation details |
| 29 | + |
| 30 | +### Django specific configuration |
| 31 | + |
| 32 | +**Secret key** |
| 33 | + |
| 34 | +Django makes use of a secret key to provide cryptographic signing. |
| 35 | +This key should be set to a unique, unpredictable value. |
| 36 | +Without the `SECRET_KEY` environment variable, the application will not start. |
| 37 | + |
| 38 | +The key can be configured with the value `settings.secretKey`. You can use a [web tool](https://djecrety.ir/) to generate it. |
| 39 | + |
| 40 | +**Warning**: Running with a known secret key defeats many of Django’s security protections and can lead to privilege escalation and remote code execution vulnerabilities. |
| 41 | + |
| 42 | +### Automatic configuration |
| 43 | + |
| 44 | +The application can be automatically configured with `django-setup-configuration`. |
| 45 | +To enable the automatic configuration, the following values should be set: |
| 46 | + |
| 47 | +```yaml |
| 48 | +global: |
| 49 | + configuration: |
| 50 | + enabled: true |
| 51 | + |
| 52 | +configuration: |
| 53 | + enabled: true |
| 54 | + job: |
| 55 | + enabled: true |
| 56 | +``` |
| 57 | +
|
| 58 | +The yaml data needed to configure the application should be provided in the value `configuration.data`. |
| 59 | +In the `values.yaml` file you can find an example of what the configuration should look like. |
| 60 | +The configuration can include sensitive data. To avoid having sensitive values in the `values.yaml` file, it is possible to reference |
| 61 | +environment variables. This can be done with the following syntax: |
| 62 | + |
| 63 | +```yaml |
| 64 | +configuration: |
| 65 | + data: |
| 66 | + someSensitiveVariable: |
| 67 | + from_value: |
| 68 | + env: SOME_SENSITIVE_VARIABLE |
| 69 | +``` |
| 70 | +These environment variables should be provided in a secret, whose name must then be referenced |
| 71 | +with the value `existingConfigurationSecret` so that it is added to the environment of the Job pod. |
| 72 | + |
| 73 | +### Open Telemetry |
| 74 | + |
| 75 | +Open VTB supports the Open Telemetry Protocol. |
| 76 | + |
| 77 | +We recommend deploying one or more Open Telemetry Collector instances in your cluster to receive |
| 78 | +telemetry. Alternatively, you can use any vendor that speaks the OTLP protocol. |
| 79 | + |
| 80 | +The environment variables that the Open Telemetry SDK supports can be found [here](https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/#general-sdk-configuration). |
| 81 | + |
| 82 | +## Values |
| 83 | + |
| 84 | +| Key | Type | Default | Description | |
| 85 | +|-----|------|---------|-------------| |
| 86 | +| affinity | object | `{}` | | |
| 87 | +| autoscaling.behaviour | object | `{}` | | |
| 88 | +| autoscaling.enabled | bool | `false` | | |
| 89 | +| autoscaling.maxReplicas | int | `100` | | |
| 90 | +| autoscaling.minReplicas | int | `1` | | |
| 91 | +| autoscaling.targetCPUUtilizationPercentage | int | `80` | | |
| 92 | +| autoscaling.targetMemoryUtilizationPercentage | int | `80` | | |
| 93 | +| azureVaultSecret.contentType | string | `""` | | |
| 94 | +| azureVaultSecret.objectName | string | `""` | | |
| 95 | +| azureVaultSecret.secretName | string | `"{{ .Values.existingSecret }}"` | | |
| 96 | +| azureVaultSecret.vaultName | string | `nil` | | |
| 97 | +| configuration.enabled | bool | `false` | | |
| 98 | +| configuration.job.backoffLimit | int | `6` | | |
| 99 | +| configuration.job.enabled | bool | `false` | Run the setup configuration command as a job | |
| 100 | +| configuration.job.resources | object | `{}` | | |
| 101 | +| configuration.job.restartPolicy | string | `"OnFailure"` | | |
| 102 | +| configuration.job.ttlSecondsAfterFinished | int | `0` | 0 Will clean the job after it is finished | |
| 103 | +| configuration.overwrite | bool | `true` | | |
| 104 | +| configuration.secrets | object | `{}` | | |
| 105 | +| configuration.superuser.email | string | `""` | | |
| 106 | +| configuration.superuser.password | string | `""` | | |
| 107 | +| configuration.superuser.username | string | `""` | | |
| 108 | +| configurationSecretsName | string | `""` | | |
| 109 | +| existingConfigurationSecret | string | `nil` | | |
| 110 | +| existingSecret | string | `nil` | | |
| 111 | +| extraEnvVars | list | `[]` | Array with extra environment variables to add | |
| 112 | +| extraIngress | list | `[]` | Specify extra ingresses, for example if you have multiple ingress classes | |
| 113 | +| extraVolumeMounts | list | `[]` | Optionally specify extra list of additional volumeMounts | |
| 114 | +| extraVolumes | list | `[]` | Optionally specify extra list of additional volumes | |
| 115 | +| fullnameOverride | string | `""` | | |
| 116 | +| global.configuration.enabled | bool | `false` | | |
| 117 | +| global.configuration.overwrite | bool | `true` | | |
| 118 | +| global.configuration.secrets | object | `{}` | | |
| 119 | +| global.settings.databaseHost | string | `""` | Global databasehost, overrides setting.database.host | |
| 120 | +| image.pullPolicy | string | `"IfNotPresent"` | | |
| 121 | +| image.repository | string | `"maykinmedia/open-vtb"` | | |
| 122 | +| image.tag | string | `""` | | |
| 123 | +| imagePullSecrets | list | `[]` | | |
| 124 | +| ingress.annotations | object | `{}` | | |
| 125 | +| ingress.className | string | `""` | | |
| 126 | +| ingress.enabled | bool | `false` | | |
| 127 | +| ingress.hosts | list | `[]` | ingress hosts | |
| 128 | +| ingress.tls | list | `[]` | | |
| 129 | +| livenessProbe.failureThreshold | int | `6` | | |
| 130 | +| livenessProbe.initialDelaySeconds | int | `60` | | |
| 131 | +| livenessProbe.periodSeconds | int | `10` | | |
| 132 | +| livenessProbe.successThreshold | int | `1` | | |
| 133 | +| livenessProbe.timeoutSeconds | int | `5` | | |
| 134 | +| nameOverride | string | `""` | | |
| 135 | +| nodeSelector | object | `{}` | | |
| 136 | +| pdb.create | bool | `false` | | |
| 137 | +| pdb.maxUnavailable | string | `""` | | |
| 138 | +| pdb.minAvailable | int | `1` | | |
| 139 | +| persistence.enabled | bool | `true` | | |
| 140 | +| persistence.existingClaim | string | `nil` | | |
| 141 | +| persistence.mediaMountSubpath | string | `"openvtb/media"` | | |
| 142 | +| persistence.size | string | `"1Gi"` | | |
| 143 | +| persistence.storageClassName | string | `""` | | |
| 144 | +| podAnnotations | object | `{}` | | |
| 145 | +| podLabels | object | `{}` | | |
| 146 | +| podSecurityContext.fsGroup | int | `1000` | | |
| 147 | +| readinessProbe.failureThreshold | int | `6` | | |
| 148 | +| readinessProbe.initialDelaySeconds | int | `30` | | |
| 149 | +| readinessProbe.periodSeconds | int | `10` | | |
| 150 | +| readinessProbe.successThreshold | int | `1` | | |
| 151 | +| readinessProbe.timeoutSeconds | int | `5` | | |
| 152 | +| redis.architecture | string | `"standalone"` | | |
| 153 | +| redis.auth.enabled | bool | `false` | | |
| 154 | +| redis.image.registry | string | `"docker.io"` | | |
| 155 | +| redis.image.repository | string | `"redis"` | | |
| 156 | +| redis.image.tag | string | `"8.0"` | | |
| 157 | +| redis.master.persistence.enabled | bool | `true` | | |
| 158 | +| redis.master.persistence.size | string | `"8Gi"` | | |
| 159 | +| redis.master.persistence.storageClass | string | `""` | | |
| 160 | +| redis.master.resources.requests.cpu | string | `"250m"` | | |
| 161 | +| redis.master.resources.requests.memory | string | `"256Mi"` | | |
| 162 | +| replicaCount | int | `2` | | |
| 163 | +| resources | object | `{}` | | |
| 164 | +| securityContext.capabilities.drop[0] | string | `"ALL"` | | |
| 165 | +| securityContext.readOnlyRootFilesystem | bool | `false` | | |
| 166 | +| securityContext.runAsNonRoot | bool | `true` | | |
| 167 | +| securityContext.runAsUser | int | `1000` | | |
| 168 | +| service.port | int | `80` | | |
| 169 | +| service.type | string | `"ClusterIP"` | | |
| 170 | +| serviceAccount.annotations | object | `{}` | | |
| 171 | +| serviceAccount.automountServiceAccountToken | bool | `true` | | |
| 172 | +| serviceAccount.create | bool | `true` | | |
| 173 | +| serviceAccount.name | string | `""` | | |
| 174 | +| settings.allowedHosts | string | `""` | | |
| 175 | +| settings.cache.axes | string | `""` | | |
| 176 | +| settings.cache.default | string | `""` | | |
| 177 | +| settings.database.dbPool.dbPoolMaxIdle | int | `600` | | |
| 178 | +| settings.database.dbPool.dbPoolMaxLifetime | int | `3600` | | |
| 179 | +| settings.database.dbPool.dbPoolMaxSize | int | `4` | | |
| 180 | +| settings.database.dbPool.dbPoolMaxWaiting | int | `0` | | |
| 181 | +| settings.database.dbPool.dbPoolMinSize | int | `4` | | |
| 182 | +| settings.database.dbPool.dbPoolNumWorkers | int | `3` | | |
| 183 | +| settings.database.dbPool.dbPoolReconnectTimeout | int | `300` | | |
| 184 | +| settings.database.dbPool.dbPoolTimeout | int | `30` | | |
| 185 | +| settings.database.dbPool.enabled | bool | `false` | | |
| 186 | +| settings.database.host | string | `""` | | |
| 187 | +| settings.database.name | string | `""` | | |
| 188 | +| settings.database.password | string | `""` | | |
| 189 | +| settings.database.port | int | `5432` | | |
| 190 | +| settings.database.sslmode | string | `"prefer"` | | |
| 191 | +| settings.database.username | string | `""` | | |
| 192 | +| settings.debug | bool | `false` | | |
| 193 | +| settings.disable2fa | bool | `false` | Disable two factor authentication | |
| 194 | +| settings.djangoSettingsModule | string | `"openvtb.conf.docker"` | | |
| 195 | +| settings.elasticapm.serviceName | string | `""` | | |
| 196 | +| settings.elasticapm.token | string | `""` | | |
| 197 | +| settings.elasticapm.url | string | `""` | | |
| 198 | +| settings.email.defaultFrom | string | `""` | | |
| 199 | +| settings.email.host | string | `"localhost"` | | |
| 200 | +| settings.email.password | string | `""` | | |
| 201 | +| settings.email.port | int | `25` | | |
| 202 | +| settings.email.useTLS | bool | `false` | | |
| 203 | +| settings.email.username | string | `""` | | |
| 204 | +| settings.environment | string | `""` | sets the 'ENVIRONMENT' variable | |
| 205 | +| settings.isHttps | bool | `true` | | |
| 206 | +| settings.otel.disabled | bool | `true` | | |
| 207 | +| settings.otel.exporterOtlpEndpoint | string | `""` | Network address where to send the metrics to. Examples are: https://otel.example.com:4318 or http://otel-collector.namespace.cluster.svc:4317. | |
| 208 | +| settings.otel.exporterOtlpHeaders | list | `[]` | Any additional HTTP headers, for example if you need Basic auth. This is used in the secret.yaml, as it can contain credentials. | |
| 209 | +| settings.otel.exporterOtlpMetricsInsecure | bool | `false` | Is true if the endoint is not protected with TLS. | |
| 210 | +| settings.otel.exporterOtlpProtocol | string | `"grpc"` | Controls the wire protocol for the OTLP data. Available options: grpc and http/protobuf. | |
| 211 | +| settings.otel.metricExportInterval | int | `60000` | Controls how often (in milliseconds) the metrics are exported. The exports run in a background thread and should not affect the performance of the application. | |
| 212 | +| settings.otel.metricExportTimeout | int | `10000` | Controls the timeout of the requests to the collector (in milliseconds) | |
| 213 | +| settings.otel.resourceAttributes | list | `[]` | Resources Attributes can be used to specify additional information about the instance. | |
| 214 | +| settings.secretKey | string | `""` | Generate secret key at https://djecrety.ir/ | |
| 215 | +| settings.sentry.dsn | string | `""` | | |
| 216 | +| settings.useXForwardedHost | bool | `false` | | |
| 217 | +| settings.uwsgi.harakiri | string | `""` | | |
| 218 | +| settings.uwsgi.master | string | `""` | | |
| 219 | +| settings.uwsgi.maxRequests | string | `""` | | |
| 220 | +| settings.uwsgi.processes | string | `""` | | |
| 221 | +| settings.uwsgi.threads | string | `""` | | |
| 222 | +| startupProbe.failureThreshold | int | `30` | | |
| 223 | +| startupProbe.initialDelaySeconds | int | `15` | Total time: 15s initial delay + (30 failures × 10s period) = 315s (5 minutes 15 seconds) | |
| 224 | +| startupProbe.periodSeconds | int | `10` | | |
| 225 | +| startupProbe.successThreshold | int | `1` | | |
| 226 | +| startupProbe.timeoutSeconds | int | `5` | | |
| 227 | +| tags.redis | bool | `true` | | |
| 228 | +| tolerations | list | `[]` | | |
0 commit comments