From f1f074dfa48fcf1ea0c2ee283305021fdfbddd69 Mon Sep 17 00:00:00 2001 From: Artem Kudla Date: Tue, 1 Dec 2020 16:49:59 +0200 Subject: [PATCH] mysql implementation with helm3 --- mysql-helm3/.gitignore | 3 ++ mysql-helm3/README.md | 8 +++ mysql-helm3/hub-component.yaml | 92 ++++++++++++++++++++++++++++++++ mysql-helm3/icon.svg | 1 + mysql-helm3/pre-deploy | 48 +++++++++++++++++ mysql-helm3/values.yaml.template | 11 ++++ mysql/README.md | 2 +- 7 files changed, 164 insertions(+), 1 deletion(-) create mode 100644 mysql-helm3/.gitignore create mode 100644 mysql-helm3/README.md create mode 100644 mysql-helm3/hub-component.yaml create mode 100644 mysql-helm3/icon.svg create mode 100755 mysql-helm3/pre-deploy create mode 100644 mysql-helm3/values.yaml.template diff --git a/mysql-helm3/.gitignore b/mysql-helm3/.gitignore new file mode 100644 index 00000000..94b1706b --- /dev/null +++ b/mysql-helm3/.gitignore @@ -0,0 +1,3 @@ +values.yaml +.helm +.charts diff --git a/mysql-helm3/README.md b/mysql-helm3/README.md new file mode 100644 index 00000000..d8bec049 --- /dev/null +++ b/mysql-helm3/README.md @@ -0,0 +1,8 @@ +# MySQL Hub component + +PostgreSQL Hub Component, installs a [t3n-helm-charts/mysql](https://artifacthub.io/packages/helm/t3n/mysql) helm chart + +## TODO + +- [ ] Add GUI component +- [ ] Backup functionality diff --git a/mysql-helm3/hub-component.yaml b/mysql-helm3/hub-component.yaml new file mode 100644 index 00000000..c2a31bd1 --- /dev/null +++ b/mysql-helm3/hub-component.yaml @@ -0,0 +1,92 @@ +--- +version: 1 +kind: component +meta: + name: mysql + title: MySQL + brief: Relational Database + description: > + MySQL is a popular, well known open source relational database + category: Storage + version: '5.7.30' + maturity: alpha + license: GNU + source: + dir: ../../components/mysql + +requires: + - kubernetes + - helm + # - tiller + +provides: + - mysql + - database + - sql + +parameters: +- name: hub.componentName +- name: dns.domain + env: DOMAIN_NAME +- name: component.mysql + empty: allow + parameters: + - name: name + value: mysql + env: COMPONENT_NAME + # - name: host + - name: namespace + value: mysql + env: NAMESPACE + - name: port + value: 3306 + - name: user + env: DB_USER + - name: password + env: DB_PASSWORD + - name: database + env: DB_NAME + - name: rootPassword + env: ROOT_PASSWORD + - name: image.name + value: mysql + - name: image.tag + value: 5.7.30 + - name: chart.version + value: 1.6.6 + env: CHART_VERSION + - name: volumeSize + value: 8Gi + - name: storageClass + value: default + - name: helm + parameters: + - name: repo + value: https://storage.googleapis.com/t3n-helm-charts + env: HELM_REPO + - name: chart + value: mysql + env: HELM_CHART + - name: version + value: 0.1.0 + env: HELM_CHART_VERSION + +outputs: +- name: component.mysql.host + value: ${component.mysql.name}.${component.mysql.namespace}.svc.cluster.local +- name: component.mysql.port +- name: component.mysql.database +- name: component.mysql.user +- name: component.mysql.password + kind: secret +- name: component.mysql.rootPassword + kind: secret + +templates: + files: + - "*.template" + +lifecycle: + verbs: + - deploy + - undeploy diff --git a/mysql-helm3/icon.svg b/mysql-helm3/icon.svg new file mode 100644 index 00000000..86d1779e --- /dev/null +++ b/mysql-helm3/icon.svg @@ -0,0 +1 @@ +Layer 1 \ No newline at end of file diff --git a/mysql-helm3/pre-deploy b/mysql-helm3/pre-deploy new file mode 100755 index 00000000..bf94ef04 --- /dev/null +++ b/mysql-helm3/pre-deploy @@ -0,0 +1,48 @@ +#!/bin/sh -xe + +HELM_OPTS="" + +if test -n "$DB_NAME" +then + HELM_OPTS="$HELM_OPTS --set mysqlDatabase=$DB_NAME" +fi + +if test -n "$DB_USER" +then + HELM_OPTS="$HELM_OPTS --set mysqlUser=$DB_USER" +fi + +if test -n "$DB_PASSWORD" +then + HELM_OPTS="$HELM_OPTS --set mysqlPassword=$DB_PASSWORD" +else + HELM_OPTS="$HELM_OPTS --set mysqlAllowEmptyPassword=true" +fi + + +if test -n "$ROOT_PASSWORD" +then + HELM_OPTS="$HELM_OPTS --set mysqlRootPassword=$ROOT_PASSWORD" +else + HELM_OPTS="$HELM_OPTS --set allowEmptyRootPassword=true" +fi + +if $kubectl get pvc "$COMPONENT_NAME" >/dev/null 2>&1 +then + HELM_OPTS="$HELM_OPTS --set persistence.existingClaim=$COMPONENT_NAME" +fi + + +if [ -n "$HELM_OPTS" ] +then + echo export HELM_OPTS=\"$HELM_OPTS\" +fi + +# TODO: how should we quote values +# quoting helm flags as +# "$HELM_OPTS --set 'mysqlPassword=$DB_PASSWORD'" +# leads to escaped quotes in the result command e.g +# +# + helm --kube-context=busy-odilee-553.bubble.superhub.io --namespace=kubeflow-data upgrade mysql .charts/mysql --install --create-namespace --debug --wait --version 0.1.0 --values values.yaml \ +# --set ''\''mysqlUser=mysql''\'' --set ''\''mysqlPassword=somepass'\''' --set ''\''mysqlRootPassword=somepass''\'' --set ''\''persistence.existingClaim=mysql''\'' + diff --git a/mysql-helm3/values.yaml.template b/mysql-helm3/values.yaml.template new file mode 100644 index 00000000..30fd6cef --- /dev/null +++ b/mysql-helm3/values.yaml.template @@ -0,0 +1,11 @@ +image: "${component.mysql.image.name}" +imageTag: "${component.mysql.image.tag}" + +persistence: + enabled: true + size: ${component.mysql.volumeSize} + storageClass: "${component.mysql.storageClass}" + +serviceAccount: + create: true + name: ${hub.componentName} diff --git a/mysql/README.md b/mysql/README.md index 9a5ef511..b4704a47 100644 --- a/mysql/README.md +++ b/mysql/README.md @@ -1,6 +1,6 @@ # MySQL Hub component -PostgreSQL Hub Component, installs a [stable/mysqll](https://github.com/helm/charts/tree/master/stable/mysql) helm chart +PostgreSQL Hub Component, installs a [stable/mysql](https://github.com/helm/charts/tree/master/stable/mysql) helm chart ## TODO