From 47f350bc3aa85a8bd406d95faf084df2abf74ae9 Mon Sep 17 00:00:00 2001
From: "Suren A. Chilingaryan" <csa@suren.me>
Date: Sun, 18 Mar 2018 22:59:31 +0100
Subject: Second revision: includes hostpath mounts, gluster block storage,
 kaas apps, etc.

---
 setup/projects/adei/vars/galera.yml  | 66 ++++++++++++++++++++++++++++++++++++
 setup/projects/adei/vars/globals.yml |  1 +
 setup/projects/adei/vars/pods.yml    | 29 +++++++++++-----
 setup/projects/adei/vars/volumes.yml | 31 +++++++++--------
 4 files changed, 104 insertions(+), 23 deletions(-)
 create mode 100644 setup/projects/adei/vars/galera.yml

(limited to 'setup/projects/adei/vars')

diff --git a/setup/projects/adei/vars/galera.yml b/setup/projects/adei/vars/galera.yml
new file mode 100644
index 0000000..ea64daa
--- /dev/null
+++ b/setup/projects/adei/vars/galera.yml
@@ -0,0 +1,66 @@
+galera_app:
+  name: galera
+  provision: true
+  instantiate: false
+  pods:
+    galera:
+      kind: StatefulSet
+      service: { ports: [ 3306 ] }
+      sched: { replicas: 3, strategy: "Recreate", restrict: { fat_storage: "1" } }
+      update: { strategy: RollingUpdate, min_ready: 30 }
+      affinity: 
+        nodeAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution: 
+            nodeSelectorTerms:
+            - matchExpressions:
+              - { key: "hostid", operator: "In", values: [ "1", "2", "3" ] }
+      groups: [ "adei_db" ]
+      images:
+        - image: "chsa/mysql-galera:5.7"
+          command: [ "run-mysqld-galera" ]
+          ports: [ 3306, 4444, 4567, 4568 ]
+          env:
+            - { name: "MYSQL_ROOT_PASSWORD", value: "secret@adei/adei-password" } 
+            - { name: "MYSQL_USER", value: "adei" }
+            - { name: "MYSQL_USER_PRIV_SUPER", value: "1" }
+            - { name: "MYSQL_PASSWORD", value: "secret@adei/adei-password" } 
+            - { name: "MYSQL_DATABASE", value: "adei" }
+            - { name: "MYSQL_EXTRADB", value: "adei_%" }
+            - { name: "MYSQL_GALERA_USER", value: "xtrabackup_sst" }
+            - { name: "MYSQL_GALERA_PASSWORD", value: "secret@adei/service-password" }
+          mappings: 
+            - { name: "adei_init", mount: "/var/lib/init" }
+            - { name: "adei_host", path: "galera", mount: "/var/lib/mysql/data" }
+          resources: {  request: { cpu: 2000m, mem: 4Gi }, limit: { cpu: 6000m, mem: 32Gi } }
+#          probes:
+#            - { type: "liveness", port: 3306 }
+#            - { type: "readiness", command: [ /bin/sh, -i, -c, MYSQL_PWD="$MYSQL_PASSWORD" mysql -h 127.0.0.1 -u $MYSQL_USER -D $MYSQL_DATABASE, -e 'SELECT 1' ], delay: "15", timeout: "5" }
+
+
+    grecovery:
+      sched: { replicas: 0, strategy: "Recreate", restrict: { fat_storage: "1" } }
+      affinity: 
+        nodeAffinity:
+          requiredDuringSchedulingIgnoredDuringExecution: 
+            nodeSelectorTerms:
+            - matchExpressions:
+              - { key: "hostid", operator: "In", values: [ "1", "2", "3" ] }
+      groups: [ "adei_db" ]
+      images:
+        - image: "chsa/mysql-galera:5.7"
+          command: [ "run-mysqld-manager" ]
+          ports: [ 3306, 4444, 4567, 4568 ]
+          env:
+            - { name: "MYSQL_ROOT_PASSWORD", value: "secret@adei/adei-password" } 
+            - { name: "MYSQL_USER", value: "adei" }
+            - { name: "MYSQL_USER_PRIV_SUPER", value: "1" }
+            - { name: "MYSQL_PASSWORD", value: "secret@adei/adei-password" } 
+            - { name: "MYSQL_DATABASE", value: "adei" }
+            - { name: "MYSQL_EXTRADB", value: "adei_%" }
+            - { name: "MYSQL_GALERA_USER", value: "xtrabackup_sst" }
+            - { name: "MYSQL_GALERA_PASSWORD", value: "secret@adei/service-password" }
+            - { name: "POD_NAMESPACE", value: "fieldref@metadata.namespace" }
+            - { name: "MYSQL_GALERA_CLUSTER", value: "galera-ss" }
+          mappings: 
+            - { name: "adei_init", mount: "/var/lib/init" }
+            - { name: "adei_host", path: "galera", mount: "/var/lib/mysql/data" }
diff --git a/setup/projects/adei/vars/globals.yml b/setup/projects/adei/vars/globals.yml
index 01fb495..86911aa 100644
--- a/setup/projects/adei/vars/globals.yml
+++ b/setup/projects/adei/vars/globals.yml
@@ -182,6 +182,7 @@ adei_frontends:
     cacher:
       name: "adei-${setup}-cacher"
       replicas: "${cache_replicas}"
+      resources: {  request: { cpu: 1000m, mem: 1Gi } }
       cmd: [ "/openshift-entrypoint.sh", "/adei/src/scripts/system/cacher.sh" ]
       env: "{{ adei_pod_env | union(adei_cache_env) }}"
       vols: "{{ adei_pod_vols }}"
diff --git a/setup/projects/adei/vars/pods.yml b/setup/projects/adei/vars/pods.yml
index 3923c23..8857fcd 100644
--- a/setup/projects/adei/vars/pods.yml
+++ b/setup/projects/adei/vars/pods.yml
@@ -1,24 +1,27 @@
 pods:
   mysql:
     service: { ports: [ 3306 ] }
-    sched: { replicas: 1, strategy: "Recreate", restrict: { fat_storage: "1" } }
+    sched: { replicas: 1, strategy: "Recreate", selector: { hostid: "3" } }
     groups: [ "adei_db" ]
     images:
-      - image: "centos/mysql-57-centos7"
-        env:
+    - image: "centos/mysql-57-centos7"
+      env:
             - { name: "MYSQL_USER", value: "adei" }
             - { name: "MYSQL_PASSWORD", value: "secret@adei/adei-password" } 
-            - { name: "MYSQL_ROOT_PASSWORD", value: "secret@adei/adei-password" } 
+            - { name: "MYSQL_ROOT_PASSWORD", value: "secret@adei/root-password" } 
             - { name: "MYSQL_DATABASE", value: "adei" }
-            - { name: "PMA_PASSWORD", value: "secret@adei/pma-password" } 
-        mappings: 
+            - { name: "MYSQL_PMA_PASSWORD", value: "secret@adei/pma-password" } 
+            - { name: "MYSQL_MAX_CONNECTIONS", value: "500" }
+      mappings: 
             - { name: "adei_init", mount: "/var/lib/init" }
-            - { name: "adei_db", path: "mysql", mount: "/var/lib/mysql/data" }
-        probes:
+            - { name: "adei_host", path: "mysql", mount: "/var/lib/mysql/data" }
+#            - { name: "adei_db", path: "mysql", mount: "/var/lib/mysql/data" }
+      resources: {  request: { cpu: 2000m, mem: 4Gi }, limit: { cpu: 6000m, mem: 32Gi } }
+      probes:
             - { port: 3306 }
 #            - { type: "liveness", port: 3306 }
 #            - { type: "readiness", command: [/bin/sh, -i, -c, MYSQL_PWD="$MYSQL_PASSWORD" mysql -h 127.0.0.1 -u $MYSQL_USER -D $MYSQL_DATABASE, -e 'SELECT 1'] }
-        hooks:
+      hooks:
             - { type: "postStart", command: [ "/bin/bash", "/var/lib/init/mysql/initdb.sh" ] }
 
   phpmyadmin:
@@ -35,6 +38,14 @@ pods:
         probes:
             - { port: 8080, path: '/' }
 
+
+
+apps:
+ - "galera_app"
+ 
+
+
+
 #oc:
 #  - template: "[0-3]*"
 #  - template: "[4-6]*"
diff --git a/setup/projects/adei/vars/volumes.yml b/setup/projects/adei/vars/volumes.yml
index 768e27f..82f2e18 100644
--- a/setup/projects/adei/vars/volumes.yml
+++ b/setup/projects/adei/vars/volumes.yml
@@ -3,20 +3,23 @@ gids:
   adei_db: { id: 6002 }
 
 volumes:
+  adei_host: { volume: "hostraid",  path: "/adei",       write: true }                  # mysql
   adei_init: { volume: "openshift", path: "/adei/init"}                                 # mysql
-  adei_etc: { volume: "openshift", path: "/adei/etc"}                                   # mysql (maybe)
-  adei_src: { volume: "openshift", path: "/adei/src",   write: true }                   # prod & debug (init creates setup links)
-  adei_cfg: { volume: "openshift", path: "/adei/cfg",   write: true }                   # per-setup configs (ADEI/wiki modifies setup)
-  adei_sys: { volume: "openshift", path: "/adei/sys" }                                  # per-setup cron-jon overrides
-  adei_tmp: { volume: "temporary", path: "/adei/tmp",   write: true }                   # per-setup temporary files
-  adei_log: { volume: "temporary", path: "/adei/log",   write: true }                   # per-replica (should be fine) temporary files
-  adei_db:  { volume: "databases", path: "/adei",       write: true }                   # mysql
+  adei_etc:  { volume: "openshift", path: "/adei/etc"}                                  # mysql (maybe)
+  adei_src:  { volume: "openshift", path: "/adei/src",   write: true }                  # prod & debug (init creates setup links)
+  adei_cfg:  { volume: "openshift", path: "/adei/cfg",   write: true }                  # per-setup configs (ADEI/wiki modifies setup)
+  adei_sys:  { volume: "openshift", path: "/adei/sys" }                                 # per-setup cron-jon overrides
+  adei_tmp:  { volume: "temporary", path: "/adei/tmp",   write: true }                  # per-setup temporary files
+  adei_log:  { volume: "temporary", path: "/adei/log",   write: true }                  # per-replica (should be fine) temporary files
+#  adei_db:   { volume: "databases", path: "/adei",       write: true }                  # mysql
 
 files:
-  - { osv: "adei_cfg", path: "/",     state: "directory", group: "adei", mode: "02775" }
-  - { osv: "adei_src", path: "/",     state: "directory", group: "adei", mode: "02775" }
-  - { osv: "adei_src", path: "/prod", state: "directory", group: "adei", mode: "02775" }
-  - { osv: "adei_src", path: "/dbg",  state: "directory", group: "adei", mode: "02775" }
-  - { osv: "adei_log", path: "/",     state: "directory", group: "adei", mode: "02775" }
-  - { osv: "adei_tmp", path: "/",     state: "directory", group: "adei", mode: "02775" }
-  - { osv: "adei_db", path: "mysql",  state: "directory", group: "adei_db", mode: "02775" }
+  - { osv: "adei_cfg", path: "/",       state: "directory", group: "adei", mode: "02775" }
+  - { osv: "adei_src", path: "/",       state: "directory", group: "adei", mode: "02775" }
+  - { osv: "adei_src", path: "/prod",   state: "directory", group: "adei", mode: "02775" }
+  - { osv: "adei_src", path: "/dbg",    state: "directory", group: "adei", mode: "02775" }
+  - { osv: "adei_log", path: "/",       state: "directory", group: "adei", mode: "02775" }
+  - { osv: "adei_tmp", path: "/",       state: "directory", group: "adei", mode: "02775" }
+  - { osv: "adei_host",path: "mysql",   state: "directory", group: "adei_db", mode: "02775" }
+  - { osv: "adei_host",path: "galera",  state: "directory", group: "adei_db", mode: "02775" }
+#  - { osv: "adei_db",  path: "mysql",   state: "directory", group: "adei_db", mode: "02775" }
-- 
cgit v1.2.3