Skip to content

Commit 19bfee2

Browse files
♻️ [#380] Recycle settings from objecten chart
1 parent 224db4b commit 19bfee2

12 files changed

Lines changed: 427 additions & 197 deletions

charts/openobject/CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Changelog
22

3-
## 0.1.0 (2025-04-21)
3+
## 0.1.0 (2026-05-15)
44

5-
- First chart release! 🎉
5+
- First chart release of Open Object 4.0, which now includes objecttypes.

charts/openobject/README.md

Lines changed: 276 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,276 @@
1+
# Open Object Chart
2+
3+
API om objecten te beheren die behoren bij een bepaald objecttype
4+
5+
![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 4.0.0](https://img.shields.io/badge/AppVersion-4.0.0-informational?style=flat-square)
6+
7+
## Introduction
8+
9+
API om objecten te beheren die behoren bij een bepaald objecttype
10+
11+
* [Source code](https://github.com/maykinmedia/open-object/)
12+
* [Docker image](https://hub.docker.com/r/maykinmedia/open-object)
13+
14+
## Quickstart
15+
16+
```bash
17+
helm repo add maykinmedia https://maykinmedia.github.io/charts/
18+
helm install openobject maykinmedia/openobject
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 Object 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.initContainer.enabled | bool | `false` | Run the setup configuration command in a init container |
99+
| configuration.job.backoffLimit | int | `6` | |
100+
| configuration.job.enabled | bool | `false` | Run the setup configuration command as a job |
101+
| configuration.job.resources | object | `{}` | |
102+
| configuration.job.restartPolicy | string | `"OnFailure"` | |
103+
| configuration.job.ttlSecondsAfterFinished | int | `0` | 0 Will clean the job after it is finished |
104+
| configuration.overwrite | bool | `true` | |
105+
| configuration.secrets | object | `{}` | |
106+
| configuration.superuser.email | string | `""` | |
107+
| configuration.superuser.password | string | `""` | |
108+
| configuration.superuser.username | string | `""` | |
109+
| configurationSecretsName | string | `""` | |
110+
| existingConfigurationSecret | string | `nil` | |
111+
| existingSecret | string | `nil` | |
112+
| extraEnvVars | list | `[]` | Array with extra environment variables to add |
113+
| extraIngress | list | `[]` | Specify extra ingresses, for example if you have multiple ingress classes |
114+
| extraVolumeMounts | list | `[]` | Optionally specify extra list of additional volumeMounts |
115+
| extraVolumes | list | `[]` | Optionally specify extra list of additional volumes |
116+
| flower.enabled | bool | `true` | |
117+
| flower.livenessProbe.failureThreshold | int | `6` | |
118+
| flower.livenessProbe.initialDelaySeconds | int | `60` | |
119+
| flower.livenessProbe.periodSeconds | int | `10` | |
120+
| flower.livenessProbe.successThreshold | int | `1` | |
121+
| flower.livenessProbe.timeoutSeconds | int | `5` | |
122+
| flower.podLabels | object | `{}` | |
123+
| flower.readinessProbe.failureThreshold | int | `6` | |
124+
| flower.readinessProbe.initialDelaySeconds | int | `30` | |
125+
| flower.readinessProbe.periodSeconds | int | `10` | |
126+
| flower.readinessProbe.successThreshold | int | `1` | |
127+
| flower.readinessProbe.timeoutSeconds | int | `5` | |
128+
| flower.replicaCount | int | `1` | |
129+
| flower.resources | object | `{}` | |
130+
| fullnameOverride | string | `""` | |
131+
| global.configuration.enabled | bool | `false` | |
132+
| global.configuration.overwrite | bool | `true` | |
133+
| global.configuration.secrets | object | `{}` | |
134+
| global.settings.databaseHost | string | `""` | Global databasehost, overrides setting.database.host |
135+
| image.pullPolicy | string | `"IfNotPresent"` | |
136+
| image.repository | string | `"maykinmedia/open-object"` | |
137+
| image.tag | string | `""` | |
138+
| imagePullSecrets | list | `[]` | |
139+
| ingress.annotations | object | `{}` | |
140+
| ingress.className | string | `""` | |
141+
| ingress.enabled | bool | `false` | |
142+
| ingress.hosts | list | `[]` | ingress hosts |
143+
| ingress.tls | list | `[]` | |
144+
| livenessProbe.failureThreshold | int | `6` | |
145+
| livenessProbe.initialDelaySeconds | int | `60` | |
146+
| livenessProbe.periodSeconds | int | `10` | |
147+
| livenessProbe.successThreshold | int | `1` | |
148+
| livenessProbe.timeoutSeconds | int | `5` | |
149+
| nameOverride | string | `""` | |
150+
| nodeSelector | object | `{}` | |
151+
| pdb.create | bool | `false` | |
152+
| pdb.maxUnavailable | string | `""` | |
153+
| pdb.minAvailable | int | `1` | |
154+
| persistence.enabled | bool | `true` | |
155+
| persistence.existingClaim | string | `nil` | |
156+
| persistence.mediaMountSubpath | string | `"openobject/media"` | |
157+
| persistence.size | string | `"1Gi"` | |
158+
| persistence.storageClassName | string | `""` | |
159+
| podAnnotations | object | `{}` | |
160+
| podLabels | object | `{}` | |
161+
| podSecurityContext.fsGroup | int | `1000` | |
162+
| readinessProbe.failureThreshold | int | `6` | |
163+
| readinessProbe.initialDelaySeconds | int | `30` | |
164+
| readinessProbe.periodSeconds | int | `10` | |
165+
| readinessProbe.successThreshold | int | `1` | |
166+
| readinessProbe.timeoutSeconds | int | `5` | |
167+
| redis.architecture | string | `"standalone"` | |
168+
| redis.auth.enabled | bool | `false` | |
169+
| redis.image | object | `{"registry":"docker.io","repository":"redis","tag":"8.0"}` | Redis image configuration - Migration from Bitnami to official Redis image |
170+
| redis.master.persistence.enabled | bool | `true` | |
171+
| redis.master.persistence.size | string | `"8Gi"` | |
172+
| redis.master.persistence.storageClass | string | `""` | |
173+
| redis.master.resources.requests.cpu | string | `"250m"` | |
174+
| redis.master.resources.requests.memory | string | `"256Mi"` | |
175+
| replicaCount | int | `2` | |
176+
| resources | object | `{}` | |
177+
| securityContext.capabilities.drop[0] | string | `"ALL"` | |
178+
| securityContext.readOnlyRootFilesystem | bool | `false` | |
179+
| securityContext.runAsNonRoot | bool | `true` | |
180+
| securityContext.runAsUser | int | `1000` | |
181+
| service.port | int | `80` | |
182+
| service.type | string | `"ClusterIP"` | |
183+
| serviceAccount.annotations | object | `{}` | |
184+
| serviceAccount.automountServiceAccountToken | bool | `true` | |
185+
| serviceAccount.create | bool | `true` | |
186+
| serviceAccount.name | string | `""` | |
187+
| settings.adminSearchDisabled | bool | `false` | Disable the search bar in the Objects admin list view |
188+
| settings.allowedHosts | string | `""` | |
189+
| settings.cache.axes | string | `""` | |
190+
| settings.cache.default | string | `""` | |
191+
| settings.cache.oidc | string | `""` | |
192+
| settings.celery.brokerUrl | string | `""` | |
193+
| settings.celery.logLevel | string | `"debug"` | |
194+
| settings.celery.resultBackend | string | `""` | |
195+
| settings.celery.resultExpires | int | `3600` | Sets how long the results of tasks will be stored in Redis (in seconds); can be set to a lower value |
196+
| settings.database.db_conn_max_age | int | `60` | |
197+
| settings.database.db_pool.db_pool_max_idle | int | `600` | |
198+
| settings.database.db_pool.db_pool_max_lifetime | int | `3600` | |
199+
| settings.database.db_pool.db_pool_max_size | int | `4` | |
200+
| settings.database.db_pool.db_pool_max_waiting | int | `0` | |
201+
| settings.database.db_pool.db_pool_min_size | int | `4` | |
202+
| settings.database.db_pool.db_pool_num_workers | int | `3` | |
203+
| settings.database.db_pool.db_pool_reconnect_timeout | int | `300` | |
204+
| settings.database.db_pool.db_pool_timeout | int | `30` | |
205+
| settings.database.db_pool.enabled | bool | `false` | |
206+
| settings.database.host | string | `""` | |
207+
| settings.database.name | string | `""` | |
208+
| settings.database.objecttype_version_cache_timeout | string | `""` | |
209+
| settings.database.password | string | `""` | |
210+
| settings.database.port | int | `5432` | |
211+
| settings.database.sslmode | string | `"prefer"` | |
212+
| settings.database.username | string | `""` | |
213+
| settings.debug | bool | `false` | |
214+
| settings.disable2fa | bool | `false` | Disable two factor authentication |
215+
| settings.djangoSettingsModule | string | `"objects.conf.docker"` | |
216+
| settings.elasticapm.serviceName | string | `""` | |
217+
| settings.elasticapm.token | string | `""` | |
218+
| settings.elasticapm.url | string | `""` | |
219+
| settings.email.defaultFrom | string | `""` | |
220+
| settings.email.host | string | `"localhost"` | |
221+
| settings.email.password | string | `""` | |
222+
| settings.email.port | int | `25` | |
223+
| settings.email.useTLS | bool | `false` | |
224+
| settings.email.username | string | `""` | |
225+
| settings.enableCloudEvents | bool | `false` | Cloudevents |
226+
| settings.environment | string | `""` | sets the 'ENVIRONMENT' variable |
227+
| settings.isHttps | bool | `true` | |
228+
| settings.logLevel | string | `"INFO"` | Default value "INFO" ; Available values are CRITICAL, ERROR, WARNING, INFO and DEBUG |
229+
| settings.logOutgoingRequests | bool | `false` | |
230+
| settings.logRequests | bool | `false` | |
231+
| settings.notificationsDisabled | bool | `false` | |
232+
| settings.notificationsSource | string | `""` | |
233+
| settings.otel.disabled | bool | `true` | |
234+
| 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. |
235+
| 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. |
236+
| settings.otel.exporterOtlpMetricsInsecure | bool | `false` | Is true if the endoint is not protected with TLS. |
237+
| settings.otel.exporterOtlpProtocol | string | `"grpc"` | Controls the wire protocol for the OTLP data. Available options: grpc and http/protobuf. |
238+
| 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. |
239+
| settings.otel.metricExportTimeout | int | `10000` | Controls the timeout of the requests to the collector (in milliseconds) |
240+
| settings.otel.resourceAttributes | list | `[]` | Resources Attributes can be used to specify additional information about the instance. |
241+
| settings.secretKey | string | `""` | Generate secret key at https://djecrety.ir/ |
242+
| settings.sentry.dsn | string | `""` | |
243+
| settings.siteDomain | string | `""` | Defines the primary domain where the application is hosted. Defaults to "" |
244+
| settings.useXForwardedHost | bool | `false` | |
245+
| settings.uwsgi.harakiri | string | `""` | |
246+
| settings.uwsgi.master | string | `""` | |
247+
| settings.uwsgi.maxRequests | string | `""` | |
248+
| settings.uwsgi.processes | string | `""` | |
249+
| settings.uwsgi.threads | string | `""` | |
250+
| startupProbe.failureThreshold | int | `30` | |
251+
| startupProbe.initialDelaySeconds | int | `15` | Total time: 15s initial delay + (30 failures × 10s period) = 315s (5 minutes 15 seconds) |
252+
| startupProbe.periodSeconds | int | `10` | |
253+
| startupProbe.successThreshold | int | `1` | |
254+
| startupProbe.timeoutSeconds | int | `5` | |
255+
| tags.redis | bool | `true` | |
256+
| tolerations | list | `[]` | |
257+
| worker.autoscaling.behaviour | object | `{}` | |
258+
| worker.autoscaling.enabled | bool | `false` | |
259+
| worker.autoscaling.maxReplicas | int | `100` | |
260+
| worker.autoscaling.minReplicas | int | `1` | |
261+
| worker.autoscaling.targetCPUUtilizationPercentage | int | `80` | |
262+
| worker.autoscaling.targetMemoryUtilizationPercentage | int | `80` | |
263+
| worker.concurrency | int | `4` | |
264+
| worker.livenessProbe.enabled | bool | `false` | |
265+
| worker.livenessProbe.exec.command[0] | string | `"/bin/sh"` | |
266+
| worker.livenessProbe.exec.command[1] | string | `"-c"` | |
267+
| worker.livenessProbe.exec.command[2] | string | `"celery --workdir src --app objects.celery inspect --destination celery@${HOSTNAME} active"` | |
268+
| worker.livenessProbe.failureThreshold | int | `3` | |
269+
| worker.livenessProbe.initialDelaySeconds | int | `60` | |
270+
| worker.livenessProbe.periodSeconds | int | `50` | |
271+
| worker.livenessProbe.successThreshold | int | `1` | |
272+
| worker.livenessProbe.timeoutSeconds | int | `10` | |
273+
| worker.maxWorkerLivenessDelta | string | `""` | |
274+
| worker.podLabels | object | `{}` | |
275+
| worker.replicaCount | int | `2` | |
276+
| worker.resources | object | `{}` | |

charts/openobject/templates/azurekeyvaultsecrets.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ spec:
1313
output:
1414
secret:
1515
name: {{ .Values.existingSecret }}
16-
{{- end }}
16+
{{- end }}

charts/openobject/templates/celery-liveness-configmap.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
apiVersion: v1
33
kind: ConfigMap
44
metadata:
5-
name: {{ include "project.fullname" . }}-celery-liveness
5+
name: {{ include "openobject.fullname" . }}-celery-liveness
66
data:
77
liveness-probe.sh: |
88
#!/bin/bash
@@ -27,5 +27,5 @@ data:
2727
fi
2828
2929
# Use CELERY_WORKER_NAME to set the --destination flag
30-
celery --workdir src --app {{ include "application.name" . }}.celery inspect --destination "$WORKER_NAME" active
31-
{{- end }}
30+
celery --workdir src --app objects.celery inspect --destination "$WORKER_NAME" active
31+
{{- end }}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: v1
22
kind: ConfigMap
33
metadata:
4-
name: {{ include "project.fullname" . }}-worker-{{ .Values.worker.label | default "celery" }}
4+
name: {{ include "openobject.fullname" . }}-worker-{{ .Values.worker.label | default "celery" }}
55
data:
66
CELERY_WORKER_QUEUE: {{ .Values.worker.queueName | default "" }}
7-
CELERY_WORKER_NAME: {{ .Values.worker.name | default "" }}
7+
CELERY_WORKER_NAME: {{ .Values.worker.name | default "" }}

0 commit comments

Comments
 (0)