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:47 UTC

[fineract] 01/02: FINERACT-783 - Update README.md with instructions for kubernetes - Setup fineractmysql configuration file - Setup fineract-server configuration file closes https://issues.apache.org/jira/browse/FINERACT-783

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 472f5b6280864d46c2ac58fdc06f3a180995718a
Author: xurror <xu...@localhost.localdomain>
AuthorDate: Mon Feb 10 06:10:09 2020 -0500

    FINERACT-783
     - Update README.md with instructions for kubernetes
     - Setup fineractmysql configuration file
     - Setup fineract-server configuration file
    closes https://issues.apache.org/jira/browse/FINERACT-783
---
 README.md                                 |  29 ++++++++
 kubernetes/fineract-server-deployment.yml |  76 ++++++++++++++++++++
 kubernetes/fineractmysql-deployment.yml   | 113 ++++++++++++++++++++++++++++++
 kubernetes/secrets.yml                    |  26 +++++++
 4 files changed, 244 insertions(+)

diff --git a/README.md b/README.md
index 42c577b..e415d06 100644
--- a/README.md
+++ b/README.md
@@ -107,6 +107,35 @@ _(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
+===================================================
+
+You can also run Fineract using containers on a kubernetes cluster.
+
+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. `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.
+
+
 Checkstyle
 ============
 
diff --git a/kubernetes/fineract-server-deployment.yml b/kubernetes/fineract-server-deployment.yml
new file mode 100644
index 0000000..7e23e33
--- /dev/null
+++ b/kubernetes/fineract-server-deployment.yml
@@ -0,0 +1,76 @@
+# 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: fineract-server
+spec:
+  ports:
+  - protocol: TCP
+    port: 8443
+    targetPort: 8443
+  selector:
+    app: fineract-server
+    tier: backend
+  type: LoadBalancer
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: fineract-server
+  labels:
+    app: fineract-server
+spec:
+  selector:
+    matchLabels:
+      app: fineract-server
+      tier: backend
+  strategy:
+    type: Recreate
+  template:
+    metadata:
+      labels:
+        app: fineract-server
+        tier: backend
+    spec:
+      containers:
+      - name: fineract-server
+        image: apache/fineract:latest
+        env:
+        - name: JAVA_OPTS
+          value: -Dfineract_tenants_url=jdbc:mysql:thin://fineractmysql:3306/fineract_tenants -Dfineract_tenants_driver=org.drizzle.jdbc.DrizzleDriver -Dfineract_tenants_uid=root -Dfineract_tenants_pwd=skdcnwauicn2ucnaecasdsajdnizucawencascdca -Djava.awt.headless=true -XX:+UseG1GC -Dfile.encoding=UTF-8
+        - name: FINERACT_DEFAULT_TENANTDB_HOSTNAME
+          value: fineractmysql
+        - name: FINERACT_DEFAULT_TENANTDB_PORT
+          value: '3306'
+        - name: FINERACT_DEFAULT_TENANTDB_UID
+          valueFrom:
+            secretKeyRef:
+              name: fineract-tenants-db-secret
+              key: username
+        - name: FINERACT_DEFAULT_TENANTDB_PWD
+          valueFrom:
+            secretKeyRef:
+              name: fineract-tenants-db-secret
+              key: password
+        ports:
+        - containerPort: 8443
+          name: fineract-server
diff --git a/kubernetes/fineractmysql-deployment.yml b/kubernetes/fineractmysql-deployment.yml
new file mode 100644
index 0000000..02176da
--- /dev/null
+++ b/kubernetes/fineractmysql-deployment.yml
@@ -0,0 +1,113 @@
+# 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: PersistentVolume
+metadata:
+  name: fineractmysql-pv-volume
+  labels:
+    type: local
+spec:
+  storageClassName: manual
+  capacity:
+    storage: 10Gi
+  accessModes:
+    - ReadWriteMany
+  hostPath:
+    path: "/mnt/data"
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: fineractmysql-pv-claim
+spec:
+  storageClassName: manual
+  accessModes:
+    - ReadWriteMany
+  resources:
+    requests:
+      storage: 5Gi
+---
+apiVersion: v1
+kind: Service
+metadata:
+  labels:
+    app: fineract-server
+  name: fineractmysql
+spec:
+  ports:
+    - protocol: TCP
+      port: 3306
+      targetPort: 3306
+  selector:
+    app: fineract-server
+    tier: fineractmysql
+  clusterIP: None
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  labels:
+    app: fineract-server
+  name: fineractmysql
+spec:
+  selector:
+    matchLabels:
+      app: fineract-server
+      tier: fineractmysql
+  strategy:
+    type: Recreate
+  template:
+    metadata:
+      labels:
+        app: fineract-server
+        tier: fineractmysql
+    spec:
+      containers:
+        - image: mysql:5.7
+          name: mysql
+          env:
+            - name: MYSQL_ROOT_PASSWORD
+              valueFrom:
+                secretKeyRef:
+                  name: fineract-tenants-db-secret
+                  key: password
+          livenessProbe:
+            exec:
+              command:
+                - mysqladmin
+                - ping
+                - -h
+                - localhost
+            failureThreshold: 10
+            timeoutSeconds: 10
+          ports:
+            - containerPort: 3306
+              name: fineractmysql
+          volumeMounts:
+            - name: fineractmysql-persistent-storage
+              mountPath: /var/lib/mysql/
+            - name: fineractmysql-host-path
+              mountPath: /docker-entrypoint-initdb.d/
+      volumes:
+        - name: fineractmysql-persistent-storage
+          persistentVolumeClaim:
+            claimName: fineractmysql-pv-claim
+        - name: fineractmysql-host-path
+          hostPath:
+            path: /fineract-db
diff --git a/kubernetes/secrets.yml b/kubernetes/secrets.yml
new file mode 100644
index 0000000..70eedce
--- /dev/null
+++ b/kubernetes/secrets.yml
@@ -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.
+#
+
+apiVersion: v1
+kind: Secret
+metadata:
+  name: fineract-tenants-db-secret
+type: Opaque
+stringData:
+  username: root
+  password: skdcnwauicn2ucnaecasdsajdnizucawencascdca
\ No newline at end of file