From bd09cb8bbb65994e33fcd44fd0adf563aeaf65bf Mon Sep 17 00:00:00 2001 From: Yann Jouanique Date: Thu, 6 May 2021 14:26:09 +0200 Subject: [PATCH 01/10] Added Fineract chart --- charts/fineract/.helmignore | 37 ++++++ charts/fineract/Chart.yaml | 32 +++++ charts/fineract/NOTES.txt | 1 + charts/fineract/README.md | 53 +++++++++ charts/fineract/README.md.gotmpl | 23 ++++ charts/fineract/requirements.lock | 6 + charts/fineract/templates/_helpers.tpl | 42 +++++++ .../fineract/templates/fineract-ingress.yaml | 38 ++++++ .../fineract/templates/fineract-secret.yaml | 26 ++++ .../templates/fineract-server-deployment.yml | 92 +++++++++++++++ .../templates/fineract-server-svc.yml | 36 ++++++ .../templates/fineract-ui-deployment.yml | 60 ++++++++++ charts/fineract/templates/fineract-ui-svc.yml | 37 ++++++ .../templates/tests/test-fineract.yaml | 20 ++++ charts/fineract/values.yaml | 111 ++++++++++++++++++ 15 files changed, 614 insertions(+) create mode 100644 charts/fineract/.helmignore create mode 100644 charts/fineract/Chart.yaml create mode 100644 charts/fineract/NOTES.txt create mode 100644 charts/fineract/README.md create mode 100644 charts/fineract/README.md.gotmpl create mode 100644 charts/fineract/requirements.lock create mode 100644 charts/fineract/templates/_helpers.tpl create mode 100644 charts/fineract/templates/fineract-ingress.yaml create mode 100644 charts/fineract/templates/fineract-secret.yaml create mode 100644 charts/fineract/templates/fineract-server-deployment.yml create mode 100644 charts/fineract/templates/fineract-server-svc.yml create mode 100644 charts/fineract/templates/fineract-ui-deployment.yml create mode 100644 charts/fineract/templates/fineract-ui-svc.yml create mode 100644 charts/fineract/templates/tests/test-fineract.yaml create mode 100644 charts/fineract/values.yaml diff --git a/charts/fineract/.helmignore b/charts/fineract/.helmignore new file mode 100644 index 0000000..a92a08b --- /dev/null +++ b/charts/fineract/.helmignore @@ -0,0 +1,37 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/charts/fineract/Chart.yaml b/charts/fineract/Chart.yaml new file mode 100644 index 0000000..87de449 --- /dev/null +++ b/charts/fineract/Chart.yaml @@ -0,0 +1,32 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +apiVersion: v1 +appVersion: "1.0" +description: "Apache Fineract: A Platform for Microfinance" +name: finteract +version: 0.1.0 +home: https://github.com/apache/fineract +sources: + - https://github.com/one-acre-fund/oaf-public-charts/tree/main/charts/fineract +maintainers: + - name: Yann-J + email: yann.jouanique@gmail.com +dependencies: + - name: mysql + version: ~8.4.1 + repository: https://charts.bitnami.com/bitnami + condition: mysql.enabled diff --git a/charts/fineract/NOTES.txt b/charts/fineract/NOTES.txt new file mode 100644 index 0000000..395dae3 --- /dev/null +++ b/charts/fineract/NOTES.txt @@ -0,0 +1 @@ +Thank you for installing Fineract! diff --git a/charts/fineract/README.md b/charts/fineract/README.md new file mode 100644 index 0000000..caf065b --- /dev/null +++ b/charts/fineract/README.md @@ -0,0 +1,53 @@ +# finteract + +![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![AppVersion: 1.0](https://img.shields.io/badge/AppVersion-1.0-informational?style=flat-square) + +Apache Fineract: A Platform for Microfinance + +**Homepage:** + +## Maintainers + +| Name | Email | Url | +| ---- | ------ | --- | +| Yann-J | yann.jouanique@gmail.com | | + +## Source Code + +* + +## TL;DR; + +```console +$ helm repo add one-acre-fund https://one-acre-fund.github.io/oaf-public-charts +$ helm install my-release one-acre-fund/fineract +``` + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| fineractServer.extraEnv | object | See `values.yaml` | Dictionary of key/value pairs to pass as environment variables to the backend pods They will be evaluated as Helm templates | +| fineractServer.extraSecretEnv | object | `{}` | Same as `extraEnv` but passed as secrets | +| fineractServer.image.name | string | `"apache/fineract"` | Fineract Docker image name | +| fineractServer.image.tag | string | `"latest"` | Fineract Docker image tag | +| fineractServer.replicas | int | `1` | Number of backend pods | +| fineractServer.resources | object | `{"limits":{"cpu":"1000m","memory":"1Gi"}}` | Resource settings for Backend pods | +| fineractUI.image.name | string | `"openmf/community-app"` | Frontend Docker image name | +| fineractUI.image.tag | string | `"latest"` | Frontend Docker image tag | +| fineractUI.replicas | int | `1` | Number of frontend pods | +| fineractUI.resources | object | `{"limits":{"cpu":"100m","memory":"100Mi"}}` | Resource settings for Backend pods | +| global.db.defaultDb | string | `"fineract_default"` | DB name for defaults db | +| global.db.tenantsDb | string | `"fineract_tenants"` | DB name for tenants db | +| ingress.annotations | object | `{}` | Ingress annotations | +| ingress.enabled | bool | `false` | Create Ingress? | +| ingress.hosts | list | `[]` | | +| ingress.tls | list | `[]` | TLS settings | +| mysql | object | see `values.yaml` | MySQL settings - see https://artifacthub.io/packages/helm/bitnami/mysql | +| mysql.auth.password | string | `""` | Please change these... | +| mysql.auth.rootPassword | string | `""` | Please change these... | +| mysql.auth.username | string | `"fineract"` | Fineract db user | +| mysql.enabled | bool | `true` | Install MySQL? | +| mysql.image.tag | string | `"5.7"` | _Warning_: Fineract db driver doesn't support mysql 8 | +| mysql.initdbScripts | object | see `values.yaml` | Dictionary of init scripts to run on initial MySQL setup __WARNING__! These db init scripts will only be executed on a brand new, uninitialized instance! Further changes will be ignored after the first init, unless you wipe the underlying PV/PVC volumes | +| service.type | string | `"ClusterIP"` | Service type for Fineract and UI services | \ No newline at end of file diff --git a/charts/fineract/README.md.gotmpl b/charts/fineract/README.md.gotmpl new file mode 100644 index 0000000..b3d9701 --- /dev/null +++ b/charts/fineract/README.md.gotmpl @@ -0,0 +1,23 @@ +{{ template "chart.header" . }} +{{ template "chart.deprecationWarning" . }} + +{{ template "chart.badgesSection" . }} + +{{ template "chart.description" . }} + +{{ template "chart.homepageLine" . }} + +{{ template "chart.maintainersSection" . }} + +{{ template "chart.sourcesSection" . }} + +## TL;DR; + +```console +$ helm repo add one-acre-fund https://one-acre-fund.github.io/oaf-public-charts +$ helm install my-release one-acre-fund/fineract +``` + +{{ template "chart.requirementsSection" . }} + +{{ template "chart.valuesSection" . }} \ No newline at end of file diff --git a/charts/fineract/requirements.lock b/charts/fineract/requirements.lock new file mode 100644 index 0000000..45e9af8 --- /dev/null +++ b/charts/fineract/requirements.lock @@ -0,0 +1,6 @@ +dependencies: +- name: mysql + repository: https://charts.bitnami.com/bitnami + version: 8.4.1 +digest: sha256:d020a39cd42a3a78eaa760ebd58527692f1dc81d6b2c2677fc042c901784255e +generated: "2021-02-16T22:32:36.621097+02:00" diff --git a/charts/fineract/templates/_helpers.tpl b/charts/fineract/templates/_helpers.tpl new file mode 100644 index 0000000..3bdc679 --- /dev/null +++ b/charts/fineract/templates/_helpers.tpl @@ -0,0 +1,42 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +{{- define "mysql_host" -}} +{{ .Release.Name }}-mysql.{{ .Release.Namespace }} +{{- end -}} + +{{- define "mysql_url" -}} +jdbc:mysql:thin://{{ include "mysql_host" . }}:3306/{{ .Values.global.db.tenantsDb }} +{{- end -}} + +{{- define "mysql_user" -}} +{{ .Values.mysql.auth.username | default "root" }} +{{- end -}} + +{{- define "mysql_password" -}} +{{ coalesce .Values.mysql.auth.password .Values.mysql.auth.rootPassword }} +{{- end -}} + +{{- define "secrets" -}} +fineract_tenants_pwd: {{ include "mysql_password" . | b64enc }} +FINERACT_DEFAULT_TENANTDB_PWD: {{ include "mysql_password" . | b64enc }} +{{ if .Values.extraSecretEnv }} +{{- range $key, $value := .Values.extraSecretEnv }} +{{ $key }}: {{ tpl $value $ | b64enc }} +{{- end }} +{{- end }} +{{- end -}} diff --git a/charts/fineract/templates/fineract-ingress.yaml b/charts/fineract/templates/fineract-ingress.yaml new file mode 100644 index 0000000..31ea9a2 --- /dev/null +++ b/charts/fineract/templates/fineract-ingress.yaml @@ -0,0 +1,38 @@ +{{- if .Values.ingress.enabled -}} +kind: Ingress +apiVersion: extensions/v1beta1 +metadata: + name: {{ .Release.Name }} + namespace: {{ .Release.Namespace }} +{{- with .Values.ingress.annotations }} + annotations: +{{ toYaml . | indent 4 }} +{{- end }} +spec: + rules: + {{- range .Values.ingress.hosts }} + - host: {{ . }} + http: + paths: + - path: /fineract-provider + pathType: Prefix + backend: + serviceName: {{ .Release.Name }}-backend + servicePort: http + - path: / + pathType: Prefix + backend: + serviceName: {{ .Release.Name }}-ui + servicePort: 80 + {{- end }} +{{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} +{{- end }} +{{- end -}} diff --git a/charts/fineract/templates/fineract-secret.yaml b/charts/fineract/templates/fineract-secret.yaml new file mode 100644 index 0000000..84801d1 --- /dev/null +++ b/charts/fineract/templates/fineract-secret.yaml @@ -0,0 +1,26 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +{{- $unused := required "You must set a MySQL root password in mysql.auth.rootPassword" .Values.mysql.auth.rootPassword }} +{{- $unused := required "You must set a MySQL user password in mysql.auth.password" .Values.mysql.auth.password }} + +kind: Secret +apiVersion: v1 +metadata: + name: {{ .Release.Name }} + namespace: {{ .Release.Namespace }} +data: + {{- include "secrets" . | nindent 2 }} +type: Opaque diff --git a/charts/fineract/templates/fineract-server-deployment.yml b/charts/fineract/templates/fineract-server-deployment.yml new file mode 100644 index 0000000..ac20d47 --- /dev/null +++ b/charts/fineract/templates/fineract-server-deployment.yml @@ -0,0 +1,92 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Release.Name }}-backend + namespace: {{ .Release.Namespace }} + labels: + app: fineract + tier: backend +spec: + replicas: {{ .Values.replicas }} + selector: + matchLabels: + app: fineract-backend + tier: backend + instance: {{ .Release.Name }} + template: + metadata: + labels: + app: fineract-backend + tier: backend + instance: {{ .Release.Name }} + annotations: + # Force a pod restart if secret values change + checksum/secrets: {{ include "secrets" . | sha256sum }} + spec: + initContainers: + - name: wait-db + image: jwilder/dockerize + # We don't care about having the latest... + imagePullPolicy: IfNotPresent + args: + - -wait + - tcp://{{ include "mysql_host" . }}:3306 + - -timeout + - 300s + containers: + - name: fineract-backend + image: "{{ .Values.fineractServer.image.name }}:{{ .Values.fineractServer.image.tag }}" + envFrom: + - secretRef: + name: {{ .Release.Name | quote }} + env: + - name: FINERACT_DEFAULT_TENANTDB_HOSTNAME + value: {{ include "mysql_host" . }} + - name: fineract_tenants_url + value: {{ include "mysql_url" . }} + - name: fineract_tenants_uid + value: {{ include "mysql_user" . }} + - name: FINERACT_DEFAULT_TENANTDB_UID + value: {{ include "mysql_user" . }} + {{- if .Values.fineractServer.extraEnv }} + {{- range $key, $value := .Values.fineractServer.extraEnv }} + - name: {{ $key | quote}} + value: |- + {{- tpl $value $ | nindent 16 }} + {{- end }} + {{- end }} + ports: + - containerPort: 8080 + name: http + readinessProbe: + httpGet: + path: /fineract-provider/actuator/health/readiness + port: 8080 + initialDelaySeconds: 90 + timeoutSeconds: 5 + livenessProbe: + httpGet: + path: /fineract-provider/actuator/health/liveness + port: 8080 + initialDelaySeconds: 90 + timeoutSeconds: 10 + resources: + {{- .Values.fineractServer.resources | toYaml | nindent 12 }} diff --git a/charts/fineract/templates/fineract-server-svc.yml b/charts/fineract/templates/fineract-server-svc.yml new file mode 100644 index 0000000..fae35b4 --- /dev/null +++ b/charts/fineract/templates/fineract-server-svc.yml @@ -0,0 +1,36 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +apiVersion: v1 +kind: Service +metadata: + labels: + app: fineract-server + name: {{ .Release.Name }}-backend + namespace: {{ .Release.Namespace }} +spec: + ports: + - protocol: TCP + port: 8080 + targetPort: 8080 + name: api + selector: + app: fineract-backend + tier: backend + instance: {{ .Release.Name }} + type: {{ .Values.service.type }} diff --git a/charts/fineract/templates/fineract-ui-deployment.yml b/charts/fineract/templates/fineract-ui-deployment.yml new file mode 100644 index 0000000..14a28c8 --- /dev/null +++ b/charts/fineract/templates/fineract-ui-deployment.yml @@ -0,0 +1,60 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ .Release.Name }}-ui + namespace: {{ .Release.Namespace }} + labels: + app: fineract + tier: ui +spec: + replicas: {{ .Values.fineractUI.replicas }} + selector: + matchLabels: + app: fineract + tier: ui + instance: {{ .Release.Name }} + template: + metadata: + labels: + app: fineract + tier: ui + instance: {{ .Release.Name }} + spec: + containers: + - name: fineract-ui + image: "{{ .Values.fineractUI.image.name }}:{{ .Values.fineractUI.image.tag }}" + ports: + - containerPort: 80 + name: http + readinessProbe: + httpGet: + path: / + port: 80 + initialDelaySeconds: 5 + timeoutSeconds: 5 + livenessProbe: + httpGet: + path: / + port: 80 + initialDelaySeconds: 30 + timeoutSeconds: 10 + resources: + {{- .Values.fineractUI.resources | toYaml | nindent 12 }} diff --git a/charts/fineract/templates/fineract-ui-svc.yml b/charts/fineract/templates/fineract-ui-svc.yml new file mode 100644 index 0000000..1559645 --- /dev/null +++ b/charts/fineract/templates/fineract-ui-svc.yml @@ -0,0 +1,37 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +apiVersion: v1 +kind: Service +metadata: + labels: + app: fineract + tier: ui + name: {{ .Release.Name }}-ui + namespace: {{ .Release.Namespace }} +spec: + ports: + - protocol: TCP + port: 80 + targetPort: 80 + name: ui + selector: + app: fineract + tier: ui + instance: {{ .Release.Name }} + type: {{ .Values.service.type }} diff --git a/charts/fineract/templates/tests/test-fineract.yaml b/charts/fineract/templates/tests/test-fineract.yaml new file mode 100644 index 0000000..d179bff --- /dev/null +++ b/charts/fineract/templates/tests/test-fineract.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Pod +metadata: + name: {{ .Release.Name }}-test-fineract + annotations: + "helm.sh/hook": test-success +spec: + containers: + - image: jwilder/dockerize + imagePullPolicy: IfNotPresent + name: test-connections + args: + - -timeout=5m + # MySQL + - -wait=tcp://{{ include "mysql_host" . }}:3306 + # API + - -wait=http://{{ .Release.Name }}-backend:8080/fineract-provider/actuator/health/liveness + # MIFOS UI + - -wait=http://{{ .Release.Name }}-ui/ + restartPolicy: Never diff --git a/charts/fineract/values.yaml b/charts/fineract/values.yaml new file mode 100644 index 0000000..1cc9010 --- /dev/null +++ b/charts/fineract/values.yaml @@ -0,0 +1,111 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# TODO: add option to install ActiveMQ? + +fineractServer: + # -- Number of backend pods + replicas: 1 + image: + # -- Fineract Docker image name + name: apache/fineract + # -- Fineract Docker image tag + tag: latest + # -- Dictionary of key/value pairs to pass as environment variables to the backend pods + # They will be evaluated as Helm templates + # @default -- See `values.yaml` + extraEnv: + DRIVERCLASS_NAME: org.drizzle.jdbc.DrizzleDriver + PROTOCOL: jdbc + SUB_PROTOCOL: mysql:thin + fineract_tenants_driver: org.drizzle.jdbc.DrizzleDriver + FINERACT_DEFAULT_TENANTDB_PORT: "3306" + # -- Same as `extraEnv` but passed as secrets + extraSecretEnv: {} + # -- Resource settings for Backend pods + resources: + limits: + cpu: "1000m" + memory: "1Gi" + +fineractUI: + # -- Number of frontend pods + replicas: 1 + image: + # -- Frontend Docker image name + name: openmf/community-app + # -- Frontend Docker image tag + tag: latest + # -- Resource settings for Backend pods + resources: + limits: + cpu: "100m" + memory: "100Mi" + +global: + db: + # -- DB name for tenants db + tenantsDb: fineract_tenants + # -- DB name for defaults db + defaultDb: fineract_default + +# -- MySQL settings - see https://artifacthub.io/packages/helm/bitnami/mysql +# @default -- see `values.yaml` +mysql: + # -- Install MySQL? + enabled: true + image: + # -- _Warning_: Fineract db driver doesn't support mysql 8 + tag: '5.7' + auth: + # -- Please change these... + rootPassword: '' + # -- Please change these... + password: '' + # -- Fineract db user + username: fineract + # -- Dictionary of init scripts to run on initial MySQL setup __WARNING__! These db init scripts will only be executed on a brand new, uninitialized instance! + # Further changes will be ignored after the first init, unless you wipe the underlying PV/PVC volumes + # @default -- see `values.yaml` + initdbScripts: + create_db.sql: | + # create databases + CREATE DATABASE IF NOT EXISTS `{{ .Values.global.db.tenantsDb }}`; + CREATE DATABASE IF NOT EXISTS `{{ .Values.global.db.defaultDb }}`; + + # create root user and grant rights + GRANT ALL ON {{ .Values.global.db.tenantsDb }}.* TO '{{ .Values.auth.username | default "root" }}'@'%'; + GRANT ALL ON {{ .Values.global.db.defaultDb }}.* TO '{{ .Values.auth.username | default "root" }}'@'%'; + +service: + # -- Service type for Fineract and UI services + type: ClusterIP + +ingress: + # -- Create Ingress? + enabled: false + # -- Ingress annotations + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + # -- List of domains to serve on + hosts: [] + # -- TLS settings + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local From 8ffc4edec03ed807e9dc3ef816832b750087ac55 Mon Sep 17 00:00:00 2001 From: Yann Jouanique Date: Thu, 6 May 2021 14:35:17 +0200 Subject: [PATCH 02/10] Logos and such --- charts/fineract/Chart.yaml | 3 +++ charts/fineract/README.md | 4 +++- charts/fineract/README.md.gotmpl | 4 +++- charts/flagsmith/Chart.yaml | 3 +++ charts/geonode/Chart.yaml | 5 +++++ 5 files changed, 17 insertions(+), 2 deletions(-) diff --git a/charts/fineract/Chart.yaml b/charts/fineract/Chart.yaml index 87de449..643247f 100644 --- a/charts/fineract/Chart.yaml +++ b/charts/fineract/Chart.yaml @@ -20,6 +20,9 @@ description: "Apache Fineract: A Platform for Microfinance" name: finteract version: 0.1.0 home: https://github.com/apache/fineract +icon: https://fineract.apache.org/images/apache-fineract-logo.png +keywords: + - microfinance sources: - https://github.com/one-acre-fund/oaf-public-charts/tree/main/charts/fineract maintainers: diff --git a/charts/fineract/README.md b/charts/fineract/README.md index caf065b..a0c73d7 100644 --- a/charts/fineract/README.md +++ b/charts/fineract/README.md @@ -18,9 +18,11 @@ Apache Fineract: A Platform for Microfinance ## TL;DR; +__NOTE__: Providing values for at least `mysql.auth.password` and `mysql.auth.rootPassword` is mandatory at installation time + ```console $ helm repo add one-acre-fund https://one-acre-fund.github.io/oaf-public-charts -$ helm install my-release one-acre-fund/fineract +$ helm install --set mysql.auth.password=xxx --set mysql.auth.rootPassword=yyy my-release one-acre-fund/fineract ``` ## Values diff --git a/charts/fineract/README.md.gotmpl b/charts/fineract/README.md.gotmpl index b3d9701..e42424f 100644 --- a/charts/fineract/README.md.gotmpl +++ b/charts/fineract/README.md.gotmpl @@ -13,9 +13,11 @@ ## TL;DR; +__NOTE__: Providing values for at least `mysql.auth.password` and `mysql.auth.rootPassword` is mandatory at installation time + ```console $ helm repo add one-acre-fund https://one-acre-fund.github.io/oaf-public-charts -$ helm install my-release one-acre-fund/fineract +$ helm install --set mysql.auth.password=xxx --set mysql.auth.rootPassword=yyy my-release one-acre-fund/fineract ``` {{ template "chart.requirementsSection" . }} diff --git a/charts/flagsmith/Chart.yaml b/charts/flagsmith/Chart.yaml index dd492c5..48dc9d2 100644 --- a/charts/flagsmith/Chart.yaml +++ b/charts/flagsmith/Chart.yaml @@ -5,6 +5,9 @@ description: Flagsmith - a Feature flag and remote configuration solution type: application icon: https://avatars.githubusercontent.com/u/58150233?s=400&v=4 home: https://flagsmith.com/ +keywords: + - feature-flags + - remote-config sources: - https://github.com/one-acre-fund/oaf-public-charts/tree/main/charts/flagsmith maintainers: diff --git a/charts/geonode/Chart.yaml b/charts/geonode/Chart.yaml index bc6fbcd..4a09439 100644 --- a/charts/geonode/Chart.yaml +++ b/charts/geonode/Chart.yaml @@ -5,6 +5,11 @@ type: application description: Geonode - a CMS for Geospatial data icon: https://pbs.twimg.com/profile_images/1221883359/geonode_400x400.png home: https://geonode.org/ +keywords: + - geospatial + - gis + - cms + - maps sources: - https://github.com/one-acre-fund/oaf-public-charts/tree/main/charts/geonode maintainers: From 415face14b44fcdcdbeaf5af6ab85f3f41d9109d Mon Sep 17 00:00:00 2001 From: Yann Jouanique Date: Thu, 6 May 2021 14:51:38 +0200 Subject: [PATCH 03/10] Fix linter alert --- README.md | 1 + charts/fineract/Chart.yaml | 2 +- charts/fineract/README.md | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8454fec..56c2550 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ helm repo add one-acre-fund https://one-acre-fund.github.io/oaf-public-charts * [GeoNode](https://geonode.org/) * [KoboToolbox](https://www.kobotoolbox.org/) * [Flagsmith](https://flagsmith.com/) +* [Fineract](https://fineract.apache.org/) ## How to contribute diff --git a/charts/fineract/Chart.yaml b/charts/fineract/Chart.yaml index 643247f..20f159c 100644 --- a/charts/fineract/Chart.yaml +++ b/charts/fineract/Chart.yaml @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -apiVersion: v1 +apiVersion: v2 appVersion: "1.0" description: "Apache Fineract: A Platform for Microfinance" name: finteract diff --git a/charts/fineract/README.md b/charts/fineract/README.md index a0c73d7..296bea9 100644 --- a/charts/fineract/README.md +++ b/charts/fineract/README.md @@ -25,6 +25,12 @@ $ helm repo add one-acre-fund https://one-acre-fund.github.io/oaf-public-charts $ helm install --set mysql.auth.password=xxx --set mysql.auth.rootPassword=yyy my-release one-acre-fund/fineract ``` +## Requirements + +| Repository | Name | Version | +|------------|------|---------| +| https://charts.bitnami.com/bitnami | mysql | ~8.4.1 | + ## Values | Key | Type | Default | Description | From 7da0fa93900c443ef1a9d607a6e5af779ab4ed8f Mon Sep 17 00:00:00 2001 From: Yann Jouanique Date: Thu, 6 May 2021 15:10:48 +0200 Subject: [PATCH 04/10] Bump versions --- charts/fineract/Chart.yaml | 1 - charts/fineract/README.md | 2 +- charts/flagsmith/Chart.yaml | 2 +- charts/flagsmith/README.md | 2 +- charts/geonode/Chart.yaml | 2 +- charts/geonode/README.md | 2 +- charts/kobotoolbox/Chart.yaml | 5 ++++- charts/kobotoolbox/README.md | 2 +- 8 files changed, 10 insertions(+), 8 deletions(-) diff --git a/charts/fineract/Chart.yaml b/charts/fineract/Chart.yaml index 20f159c..a7fa02c 100644 --- a/charts/fineract/Chart.yaml +++ b/charts/fineract/Chart.yaml @@ -15,7 +15,6 @@ # limitations under the License. # apiVersion: v2 -appVersion: "1.0" description: "Apache Fineract: A Platform for Microfinance" name: finteract version: 0.1.0 diff --git a/charts/fineract/README.md b/charts/fineract/README.md index 296bea9..bb7fe07 100644 --- a/charts/fineract/README.md +++ b/charts/fineract/README.md @@ -1,6 +1,6 @@ # finteract -![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![AppVersion: 1.0](https://img.shields.io/badge/AppVersion-1.0-informational?style=flat-square) +![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) Apache Fineract: A Platform for Microfinance diff --git a/charts/flagsmith/Chart.yaml b/charts/flagsmith/Chart.yaml index 48dc9d2..f3acb34 100644 --- a/charts/flagsmith/Chart.yaml +++ b/charts/flagsmith/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: flagsmith -version: 0.1.1 +version: 0.1.2 description: Flagsmith - a Feature flag and remote configuration solution type: application icon: https://avatars.githubusercontent.com/u/58150233?s=400&v=4 diff --git a/charts/flagsmith/README.md b/charts/flagsmith/README.md index ecae487..33b4cea 100644 --- a/charts/flagsmith/README.md +++ b/charts/flagsmith/README.md @@ -1,6 +1,6 @@ # flagsmith -![Version: 0.1.1](https://img.shields.io/badge/Version-0.1.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) +![Version: 0.1.2](https://img.shields.io/badge/Version-0.1.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) Flagsmith - a Feature flag and remote configuration solution diff --git a/charts/geonode/Chart.yaml b/charts/geonode/Chart.yaml index 4a09439..3252ac5 100644 --- a/charts/geonode/Chart.yaml +++ b/charts/geonode/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: geonode -version: 0.1.4 +version: 0.1.5 type: application description: Geonode - a CMS for Geospatial data icon: https://pbs.twimg.com/profile_images/1221883359/geonode_400x400.png diff --git a/charts/geonode/README.md b/charts/geonode/README.md index 01a3b3b..46fbb89 100644 --- a/charts/geonode/README.md +++ b/charts/geonode/README.md @@ -1,6 +1,6 @@ # geonode -![Version: 0.1.4](https://img.shields.io/badge/Version-0.1.4-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) +![Version: 0.1.5](https://img.shields.io/badge/Version-0.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) Geonode - a CMS for Geospatial data diff --git a/charts/kobotoolbox/Chart.yaml b/charts/kobotoolbox/Chart.yaml index 09c42d5..dae171f 100644 --- a/charts/kobotoolbox/Chart.yaml +++ b/charts/kobotoolbox/Chart.yaml @@ -1,9 +1,12 @@ apiVersion: v2 name: kobotoolbox -version: 0.1.1 +version: 0.1.2 description: KoboToolbox field data collection solution home: https://www.kobotoolbox.org/ icon: https://avatars.githubusercontent.com/u/5543677?s=400&v=4 +keywords: + - survey + - field sources: - https://github.com/one-acre-fund/oaf-public-charts/tree/main/charts/kobotoolbox maintainers: diff --git a/charts/kobotoolbox/README.md b/charts/kobotoolbox/README.md index 543a4eb..538ffcb 100644 --- a/charts/kobotoolbox/README.md +++ b/charts/kobotoolbox/README.md @@ -1,6 +1,6 @@ # kobotoolbox -![Version: 0.1.1](https://img.shields.io/badge/Version-0.1.1-informational?style=flat-square) +![Version: 0.1.2](https://img.shields.io/badge/Version-0.1.2-informational?style=flat-square) KoboToolbox field data collection solution From a5b905b02f5917f2c3a62ba8b4a9a3eebaa2acc9 Mon Sep 17 00:00:00 2001 From: Yann Jouanique Date: Thu, 6 May 2021 15:50:18 +0200 Subject: [PATCH 05/10] Fix CI values --- charts/fineract/Chart.yaml | 2 +- charts/fineract/README.md | 2 +- charts/fineract/ci/ci-values.yaml | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 charts/fineract/ci/ci-values.yaml diff --git a/charts/fineract/Chart.yaml b/charts/fineract/Chart.yaml index a7fa02c..5a6ef76 100644 --- a/charts/fineract/Chart.yaml +++ b/charts/fineract/Chart.yaml @@ -16,7 +16,7 @@ # apiVersion: v2 description: "Apache Fineract: A Platform for Microfinance" -name: finteract +name: fineract version: 0.1.0 home: https://github.com/apache/fineract icon: https://fineract.apache.org/images/apache-fineract-logo.png diff --git a/charts/fineract/README.md b/charts/fineract/README.md index bb7fe07..a1b7bd3 100644 --- a/charts/fineract/README.md +++ b/charts/fineract/README.md @@ -1,4 +1,4 @@ -# finteract +# fineract ![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) diff --git a/charts/fineract/ci/ci-values.yaml b/charts/fineract/ci/ci-values.yaml new file mode 100644 index 0000000..1cd024d --- /dev/null +++ b/charts/fineract/ci/ci-values.yaml @@ -0,0 +1,5 @@ +# Values file for CI testing +mysql: + auth: + password: yyyy + rootPassword: xxxx From b6e9b0e511751f8aa7d5b74af678c63b053c054c Mon Sep 17 00:00:00 2001 From: Yann Jouanique Date: Thu, 6 May 2021 16:55:48 +0200 Subject: [PATCH 06/10] Kobo tests --- charts/kobotoolbox/templates/kobo-deploy.yaml | 4 ++-- .../templates/tests/test-kobo-api.yaml | 20 +++++++++++++++++ .../tests/test-kobo-connections.yaml | 22 +++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 charts/kobotoolbox/templates/tests/test-kobo-api.yaml create mode 100644 charts/kobotoolbox/templates/tests/test-kobo-connections.yaml diff --git a/charts/kobotoolbox/templates/kobo-deploy.yaml b/charts/kobotoolbox/templates/kobo-deploy.yaml index 3e8dcef..1fef508 100644 --- a/charts/kobotoolbox/templates/kobo-deploy.yaml +++ b/charts/kobotoolbox/templates/kobo-deploy.yaml @@ -70,7 +70,7 @@ spec: mountPath: /srv/kpi_media readinessProbe: httpGet: - path: /static/img/favicon.ico + path: /api/v2/ port: 80 httpHeaders: - name: Host @@ -80,7 +80,7 @@ spec: failureThreshold: 15 livenessProbe: httpGet: - path: /static/img/favicon.ico + path: /api/v2/ port: 80 httpHeaders: - name: Host diff --git a/charts/kobotoolbox/templates/tests/test-kobo-api.yaml b/charts/kobotoolbox/templates/tests/test-kobo-api.yaml new file mode 100644 index 0000000..f1889f6 --- /dev/null +++ b/charts/kobotoolbox/templates/tests/test-kobo-api.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Pod +metadata: + name: {{ .Release.Name }}-test-kobo-api + namespace: {{ .Release.Namespace }} + annotations: + "helm.sh/hook": test-success + # "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded +spec: + restartPolicy: Never + containers: + - name: test-http + image: blacktop/httpie + imagePullPolicy: IfNotPresent + command: + - sh + - -ce + - | + http --ignore-stdin --check-status Host:{{ .Values.kpi.subdomain }}.{{ include "internal_domain" . }} "http://{{ .Release.Name }}-kobo/api/v2/" + http --ignore-stdin --check-status Host:{{ .Values.kc.subdomain }}.{{ include "internal_domain" . }} "http://{{ .Release.Name }}-kobo/api/v1/" diff --git a/charts/kobotoolbox/templates/tests/test-kobo-connections.yaml b/charts/kobotoolbox/templates/tests/test-kobo-connections.yaml new file mode 100644 index 0000000..65ee7f4 --- /dev/null +++ b/charts/kobotoolbox/templates/tests/test-kobo-connections.yaml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: Pod +metadata: + name: {{ .Release.Name }}-test-kobo-connections + annotations: + "helm.sh/hook": test-success +spec: + containers: + - image: jwilder/dockerize + imagePullPolicy: IfNotPresent + name: test-connections + args: + - -timeout=5m + # Postgres + - -wait=tcp://{{ .Release.Name }}-postgresql:5432 + # Mongodb + - -wait=tcp://{{ .Release.Name }}-mongodb:27017 + # Nginx + - -wait=http://{{ .Release.Name }}-kobo/ + # Enketo + - -wait=http://{{ .Release.Name }}-enketo:8005/ + restartPolicy: Never From 3a42968456ee3368e2ce58591dd6b8a1d9edb6de Mon Sep 17 00:00:00 2001 From: Yann Jouanique Date: Thu, 6 May 2021 17:44:03 +0200 Subject: [PATCH 07/10] Fix kc API URL --- charts/kobotoolbox/templates/tests/test-kobo-api.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/kobotoolbox/templates/tests/test-kobo-api.yaml b/charts/kobotoolbox/templates/tests/test-kobo-api.yaml index f1889f6..7b48f6c 100644 --- a/charts/kobotoolbox/templates/tests/test-kobo-api.yaml +++ b/charts/kobotoolbox/templates/tests/test-kobo-api.yaml @@ -17,4 +17,4 @@ spec: - -ce - | http --ignore-stdin --check-status Host:{{ .Values.kpi.subdomain }}.{{ include "internal_domain" . }} "http://{{ .Release.Name }}-kobo/api/v2/" - http --ignore-stdin --check-status Host:{{ .Values.kc.subdomain }}.{{ include "internal_domain" . }} "http://{{ .Release.Name }}-kobo/api/v1/" + http --ignore-stdin --check-status Host:{{ .Values.kobocat.subdomain }}.{{ include "internal_domain" . }} "http://{{ .Release.Name }}-kobo/api/v1/" From 8f7605991c784a7f99ce8d59d00beaf929c7a4a7 Mon Sep 17 00:00:00 2001 From: Yann Jouanique Date: Thu, 6 May 2021 20:17:34 +0200 Subject: [PATCH 08/10] Revert "Kobo tests" This reverts commit b6e9b0e511751f8aa7d5b74af678c63b053c054c. --- charts/kobotoolbox/templates/kobo-deploy.yaml | 4 ++-- .../templates/tests/test-kobo-api.yaml | 20 ----------------- .../tests/test-kobo-connections.yaml | 22 ------------------- 3 files changed, 2 insertions(+), 44 deletions(-) delete mode 100644 charts/kobotoolbox/templates/tests/test-kobo-api.yaml delete mode 100644 charts/kobotoolbox/templates/tests/test-kobo-connections.yaml diff --git a/charts/kobotoolbox/templates/kobo-deploy.yaml b/charts/kobotoolbox/templates/kobo-deploy.yaml index 1fef508..3e8dcef 100644 --- a/charts/kobotoolbox/templates/kobo-deploy.yaml +++ b/charts/kobotoolbox/templates/kobo-deploy.yaml @@ -70,7 +70,7 @@ spec: mountPath: /srv/kpi_media readinessProbe: httpGet: - path: /api/v2/ + path: /static/img/favicon.ico port: 80 httpHeaders: - name: Host @@ -80,7 +80,7 @@ spec: failureThreshold: 15 livenessProbe: httpGet: - path: /api/v2/ + path: /static/img/favicon.ico port: 80 httpHeaders: - name: Host diff --git a/charts/kobotoolbox/templates/tests/test-kobo-api.yaml b/charts/kobotoolbox/templates/tests/test-kobo-api.yaml deleted file mode 100644 index 7b48f6c..0000000 --- a/charts/kobotoolbox/templates/tests/test-kobo-api.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: {{ .Release.Name }}-test-kobo-api - namespace: {{ .Release.Namespace }} - annotations: - "helm.sh/hook": test-success - # "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded -spec: - restartPolicy: Never - containers: - - name: test-http - image: blacktop/httpie - imagePullPolicy: IfNotPresent - command: - - sh - - -ce - - | - http --ignore-stdin --check-status Host:{{ .Values.kpi.subdomain }}.{{ include "internal_domain" . }} "http://{{ .Release.Name }}-kobo/api/v2/" - http --ignore-stdin --check-status Host:{{ .Values.kobocat.subdomain }}.{{ include "internal_domain" . }} "http://{{ .Release.Name }}-kobo/api/v1/" diff --git a/charts/kobotoolbox/templates/tests/test-kobo-connections.yaml b/charts/kobotoolbox/templates/tests/test-kobo-connections.yaml deleted file mode 100644 index 65ee7f4..0000000 --- a/charts/kobotoolbox/templates/tests/test-kobo-connections.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: v1 -kind: Pod -metadata: - name: {{ .Release.Name }}-test-kobo-connections - annotations: - "helm.sh/hook": test-success -spec: - containers: - - image: jwilder/dockerize - imagePullPolicy: IfNotPresent - name: test-connections - args: - - -timeout=5m - # Postgres - - -wait=tcp://{{ .Release.Name }}-postgresql:5432 - # Mongodb - - -wait=tcp://{{ .Release.Name }}-mongodb:27017 - # Nginx - - -wait=http://{{ .Release.Name }}-kobo/ - # Enketo - - -wait=http://{{ .Release.Name }}-enketo:8005/ - restartPolicy: Never From b128a59e96af248e612eaec1b17281120c2579a0 Mon Sep 17 00:00:00 2001 From: Yann Jouanique Date: Thu, 6 May 2021 20:18:46 +0200 Subject: [PATCH 09/10] Reset kobo --- charts/kobotoolbox/Chart.yaml | 2 +- charts/kobotoolbox/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/charts/kobotoolbox/Chart.yaml b/charts/kobotoolbox/Chart.yaml index dae171f..ccc0716 100644 --- a/charts/kobotoolbox/Chart.yaml +++ b/charts/kobotoolbox/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: kobotoolbox -version: 0.1.2 +version: 0.1.1 description: KoboToolbox field data collection solution home: https://www.kobotoolbox.org/ icon: https://avatars.githubusercontent.com/u/5543677?s=400&v=4 diff --git a/charts/kobotoolbox/README.md b/charts/kobotoolbox/README.md index 538ffcb..543a4eb 100644 --- a/charts/kobotoolbox/README.md +++ b/charts/kobotoolbox/README.md @@ -1,6 +1,6 @@ # kobotoolbox -![Version: 0.1.2](https://img.shields.io/badge/Version-0.1.2-informational?style=flat-square) +![Version: 0.1.1](https://img.shields.io/badge/Version-0.1.1-informational?style=flat-square) KoboToolbox field data collection solution From 2e9cfd754c343da0b41528c1ceeb68262a2b2309 Mon Sep 17 00:00:00 2001 From: Yann Jouanique Date: Thu, 6 May 2021 20:20:34 +0200 Subject: [PATCH 10/10] Revert kobo --- charts/kobotoolbox/Chart.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/charts/kobotoolbox/Chart.yaml b/charts/kobotoolbox/Chart.yaml index ccc0716..09c42d5 100644 --- a/charts/kobotoolbox/Chart.yaml +++ b/charts/kobotoolbox/Chart.yaml @@ -4,9 +4,6 @@ version: 0.1.1 description: KoboToolbox field data collection solution home: https://www.kobotoolbox.org/ icon: https://avatars.githubusercontent.com/u/5543677?s=400&v=4 -keywords: - - survey - - field sources: - https://github.com/one-acre-fund/oaf-public-charts/tree/main/charts/kobotoolbox maintainers: