You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by vo...@apache.org on 2020/04/12 09:06:48 UTC

[fineract] 02/02: Setup configMap and startup and shutdown scripts

This is an automated email from the ASF dual-hosted git repository.

vorburger pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git

commit a9c214046346b100a548b3e828734262e9a79c7a
Author: xurror <ka...@outlook.com>
AuthorDate: Fri Apr 10 14:55:08 2020 +0100

    Setup configMap and startup and shutdown scripts
---
 README.md                                          | 29 +++++++++------
 kubernetes/fineract-server-deployment.yml          |  3 ++
 .../{secrets.yml => fineractmysql-configmap.yml}   | 19 ++++++----
 kubernetes/fineractmysql-deployment.yml            | 15 +++++---
 kubernetes/{secrets.yml => kubectl-shutdown.sh}    | 15 ++++----
 kubernetes/kubectl-startup.sh                      | 42 ++++++++++++++++++++++
 kubernetes/secrets.yml                             |  1 +
 7 files changed, 95 insertions(+), 29 deletions(-)

diff --git a/README.md b/README.md
index e415d06..9326e5a 100644
--- a/README.md
+++ b/README.md
@@ -107,33 +107,40 @@ _(Note that in previous versions, the `mysqlserver` environment variable used at
 and the `mysqlserver` environment variable is now no longer supported.)_
 
 
-Instructions to run using minikube and kubectl
-===================================================
+Instructions to run on kubernetes
+=================================
 
 You can also run Fineract using containers on a kubernetes cluster.
+Make sure you set up and connect to your Kubernetes cluster.
+You can follow [this](https://cwiki.apache.org/confluence/display/FINERACT/Install+and+configure+kubectl+and+Google+Cloud+SDK+on+ubuntu+16.04) guide to set up a Kubernetes cluster on GKE. Make sure to replace `apache-fineract-cn` with `apache-fineract`
+
+Now from your cloud shell, run the following commands:
+
+1. `git clone https://github.com/apache/fineract.git ; cd fineract/kubernetes`
+1. `sh kubectl-startup.sh`
 
+To shutdown and reset your cluster, run:
+    `sh kubectl-shutdown.sh`
+
+Alternatively, you can run fineract on a local kubernetes cluster(minikube).
 As Prerequisites, you must have `minikube` and `kubectl` installed on your machine; see
 [Minikube & Kubectl install](https://kubernetes.io/docs/tasks/tools/install-minikube/).
 
 Now to run a new Fineract instance on minikube you can simply:
 
-1. `git clone https://github.com/apache/fineract.git ; cd fineract`
-1. `minikube start --mount-string="./fineract-db/docker:/fineract-db" --mount`
-1. `kubectl apply -f kubernetes/secrets.yml`
-1. `kubectl apply -f kubernetes/fineractmysql-deployment.yml`
-1. `kubectl apply -f kubernetes/fineract-server-deployment.yml`
+1. `git clone https://github.com/apache/fineract.git ; cd fineract/kubernetes`
+1. `minikube start`
+1. `sh kubectl-startup.sh`
 1. `minikube service fineract-server --url`
 1. Fineract will run at the provided url
 
 NB : Change protocol from `http` to `https`
-=======================================
 
 To check the status of your containers on your local kubernetes cluster, run:
     `minikube dashboard`
 
-Having difficulties setting up minikube locally, you can try out the deployment
-using katacoda(https://www.katacoda.com/courses/kubernetes/launch-single-node-cluster)
-From there start the scenario and follow the instructions as indicated above.
+To shutdown and reset your cluster, run:
+    `sh kubectl-shutdown.sh`
 
 
 Checkstyle
diff --git a/kubernetes/fineract-server-deployment.yml b/kubernetes/fineract-server-deployment.yml
index 7e23e33..f7b0355 100644
--- a/kubernetes/fineract-server-deployment.yml
+++ b/kubernetes/fineract-server-deployment.yml
@@ -16,6 +16,7 @@
 # under the License.
 #
 
+
 apiVersion: v1
 kind: Service
 metadata:
@@ -31,7 +32,9 @@ spec:
     app: fineract-server
     tier: backend
   type: LoadBalancer
+
 ---
+
 apiVersion: apps/v1
 kind: Deployment
 metadata:
diff --git a/kubernetes/secrets.yml b/kubernetes/fineractmysql-configmap.yml
similarity index 72%
copy from kubernetes/secrets.yml
copy to kubernetes/fineractmysql-configmap.yml
index 70eedce..2f55518 100644
--- a/kubernetes/secrets.yml
+++ b/kubernetes/fineractmysql-configmap.yml
@@ -16,11 +16,18 @@
 # under the License.
 #
 
+
 apiVersion: v1
-kind: Secret
+kind: ConfigMap
 metadata:
-  name: fineract-tenants-db-secret
-type: Opaque
-stringData:
-  username: root
-  password: skdcnwauicn2ucnaecasdsajdnizucawencascdca
\ No newline at end of file
+  name: fineractmysql-initdb
+  labels:
+    app: fineract-server
+data:
+  init.sql: |
+    # create databases
+    CREATE DATABASE IF NOT EXISTS `fineract_tenants`;
+    CREATE DATABASE IF NOT EXISTS `fineract_default`;
+
+    # create root user and grant rights
+    GRANT ALL ON *.* TO 'root'@'%';
\ No newline at end of file
diff --git a/kubernetes/fineractmysql-deployment.yml b/kubernetes/fineractmysql-deployment.yml
index 02176da..75f3fd8 100644
--- a/kubernetes/fineractmysql-deployment.yml
+++ b/kubernetes/fineractmysql-deployment.yml
@@ -16,6 +16,7 @@
 # under the License.
 #
 
+
 apiVersion: v1
 kind: PersistentVolume
 metadata:
@@ -30,7 +31,9 @@ spec:
     - ReadWriteMany
   hostPath:
     path: "/mnt/data"
+
 ---
+
 apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
@@ -42,7 +45,9 @@ spec:
   resources:
     requests:
       storage: 5Gi
+
 ---
+
 apiVersion: v1
 kind: Service
 metadata:
@@ -58,7 +63,9 @@ spec:
     app: fineract-server
     tier: fineractmysql
   clusterIP: None
+
 ---
+
 apiVersion: apps/v1
 kind: Deployment
 metadata:
@@ -102,12 +109,12 @@ spec:
           volumeMounts:
             - name: fineractmysql-persistent-storage
               mountPath: /var/lib/mysql/
-            - name: fineractmysql-host-path
+            - name: fineractmysql-initdb
               mountPath: /docker-entrypoint-initdb.d/
       volumes:
         - name: fineractmysql-persistent-storage
           persistentVolumeClaim:
             claimName: fineractmysql-pv-claim
-        - name: fineractmysql-host-path
-          hostPath:
-            path: /fineract-db
+        - name: fineractmysql-initdb
+          configMap:
+            name: fineractmysql-initdb
diff --git a/kubernetes/secrets.yml b/kubernetes/kubectl-shutdown.sh
similarity index 80%
copy from kubernetes/secrets.yml
copy to kubernetes/kubectl-shutdown.sh
index 70eedce..17c8493 100644
--- a/kubernetes/secrets.yml
+++ b/kubernetes/kubectl-shutdown.sh
@@ -1,3 +1,5 @@
+#!/bin/bash
+#
 # 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
@@ -16,11 +18,8 @@
 # under the License.
 #
 
-apiVersion: v1
-kind: Secret
-metadata:
-  name: fineract-tenants-db-secret
-type: Opaque
-stringData:
-  username: root
-  password: skdcnwauicn2ucnaecasdsajdnizucawencascdca
\ No newline at end of file
+
+kubectl delete -f secrets.yml
+kubectl delete -f fineractmysql-configmap.yml
+kubectl delete -f fineractmysql-deployment.yml
+kubectl delete -f fineract-server-deployment.yml
\ No newline at end of file
diff --git a/kubernetes/kubectl-startup.sh b/kubernetes/kubectl-startup.sh
new file mode 100644
index 0000000..27fef6d
--- /dev/null
+++ b/kubernetes/kubectl-startup.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+#
+# 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.
+#
+
+echo "Setting Up Fineract service configuration..."
+kubectl apply -f  secrets.yml
+kubectl apply -f fineractmysql-configmap.yml
+
+echo ""
+echo "Starting fineractmysql..."
+kubectl apply -f fineractmysql-deployment.yml
+
+fineractmysql_pod=""
+while [[ ${#fineractmysql_pod} -eq 0 ]]; do
+    fineractmysql_pod=$(kubectl get pods -l tier=fineractmysql --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
+done
+#sleep 5
+fineractmysql_status=$(kubectl get pods ${fineractmysql_pod} --no-headers -o custom-columns=":status.phase")
+while [[ ${fineractmysql_status} -ne 'Running' ]]; do
+    sleep 1
+    fineractmysql_status=$(kubectl get pods ${fineractmysql_pod} --no-headers -o custom-columns=":status.phase")
+done
+
+echo ""
+echo "Starting fineract server..."
+kubectl apply -f fineract-server-deployment.yml
diff --git a/kubernetes/secrets.yml b/kubernetes/secrets.yml
index 70eedce..b3e6669 100644
--- a/kubernetes/secrets.yml
+++ b/kubernetes/secrets.yml
@@ -16,6 +16,7 @@
 # under the License.
 #
 
+
 apiVersion: v1
 kind: Secret
 metadata: