[OOM-117] Multiple ONAP instances same K8s cluster 93/7593/1
authorMike Elliott <mike.elliott@amdocs.com>
Mon, 14 Aug 2017 20:21:40 +0000 (16:21 -0400)
committerMike Elliott <mike.elliott@amdocs.com>
Tue, 15 Aug 2017 12:09:33 +0000 (08:09 -0400)
Change-Id: Ie670dd37da819b33e32885d3be20cc8739fc2524
Signed-off-by: Mike Elliott <mike.elliott@amdocs.com>
kubernetes/README.md
kubernetes/config/createConfig.sh [new file with mode: 0644]
kubernetes/config/docker/init/config-init.sh
kubernetes/config/pod-config-init.yaml
kubernetes/oneclick/createAll.bash

index 73339bf..4760d9e 100644 (file)
@@ -2,3 +2,34 @@ ONAP on Kubernetes
 ====================
 
 Under construction...
+
+
+Creating an ONAP deployment instance requires creating base configuration on the
+host node and then deploying the runtime containers.
+
+The following is an example of creating the first deployed instance in a K8s
+cluster. The name given to the instance is 'dev1'. This will serve as the
+Namespace prefix for each deployed ONAP component (ie. dev1-mso).
+
+  1. oom/kubernetes/config/createConfig.sh -n dev1
+
+  2. oom/kubernetes/oneclick/createAll.bash -n dev1
+
+To delete the runtime containers for the deployed instance, use the following:
+
+  3. oom/kubernetes/oneclick/deleteAll.bash -n dev1
+
+Note that deleting the runtime containers does not remove the configuration
+created in step 1.
+
+
+To deploy more than one ONAP instance within the same Kubernetes cluster, you
+will need to specify an Instance number. This is currently required due to the
+use of NodePort ranges. NodePorts allow external IP:Port access to containers
+that are running inside a Kubernetes cluster.
+
+Example if this is the 2 instance of an ONAP deployment in the cluster:
+
+  1. oom/kubernetes/config/createConfig.sh -n test
+
+  2. oom/kubernetes/oneclick/createAll.bash -n test -i 2
diff --git a/kubernetes/config/createConfig.sh b/kubernetes/config/createConfig.sh
new file mode 100644 (file)
index 0000000..f226cca
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+usage() {
+  cat <<EOF
+Usage: $0 [PARAMs]
+-u                  : Display usage
+-n [NAMESPACE]      : Kubernetes namespace (required)
+EOF
+}
+
+create_namespace() {
+  kubectl create namespace $1
+}
+
+create_configuration() {
+  create_namespace $1
+  kubectl --namespace $1 create -f pod-config-init.yaml
+}
+
+#MAINs
+NS=
+
+while getopts ":n:u:" PARAM; do
+  case $PARAM in
+    u)
+      usage
+      exit 1
+      ;;
+    n)
+      NS=${OPTARG}
+      ;;
+    ?)
+      usage
+      exit
+      ;;
+  esac
+done
+
+if [[ -z $NS ]]; then
+  usage
+  exit 1
+fi
+
+printf "\n**** Creating configuration for ONAP instance: $NS\n"
+create_configuration $NS
+
+printf "**** Done ****\n"
index bf0e644..f751f4d 100755 (executable)
@@ -1,26 +1,29 @@
 #!/bin/bash
-#make owner directory
-mkdir -p /config-init/$OWNER/
+#make NAMESPACE directory
+mkdir -p /config-init/$NAMESPACE/
 
-#unzip the configs in the owners directory ensuring no overwriting of files
-cp -vnpr /opt/config/src/* /config-init/$OWNER/
+#unzip the configs in the NAMESPACEs directory ensuring no overwriting of files
+cp -vnpr /opt/config/src/* /config-init/$NAMESPACE/
 
 #ensure db directories exist.
-mkdir -p /config-init/$OWNER/appc/data/
-mkdir -p /config-init/$OWNER/dcae/pgaas/pgdata/
-mkdir -p /config-init/$OWNER/portal/mariadb/data/
-mkdir -p /config-init/$OWNER/sdnc/data/
-mkdir -p /config-init/$OWNER/vid/mariadb/data/
-mkdir -p /config-init/$OWNER/sdc/sdc-cs/CS/
-mkdir -p /config-init/$OWNER/sdc/sdc-es/ES/
-mkdir -p /config-init/$OWNER/sdc/logs/ASDC/ASDC-ES/
-mkdir -p /config-init/$OWNER/sdc/logs/ASDC/ASDC-CS/
-mkdir -p /config-init/$OWNER/sdc/logs/ASDC/ASDC-KB/
-mkdir -p /config-init/$OWNER/sdc/logs/ASDC/ASDC-BE/
-mkdir -p /config-init/$OWNER/sdc/logs/ASDC/ASDC-FE/
-mkdir -p /config-init/$OWNER/aai/opt/aai/logroot/
+mkdir -p /config-init/$NAMESPACE/appc/data/
+mkdir -p /config-init/$NAMESPACE/dcae/pgaas/pgdata/
+mkdir -p /config-init/$NAMESPACE/portal/mariadb/data/
+mkdir -p /config-init/$NAMESPACE/sdnc/data/
+mkdir -p /config-init/$NAMESPACE/vid/mariadb/data/
+mkdir -p /config-init/$NAMESPACE/sdc/sdc-cs/CS/
+mkdir -p /config-init/$NAMESPACE/sdc/sdc-es/ES/
+mkdir -p /config-init/$NAMESPACE/sdc/logs/ASDC/ASDC-ES/
+mkdir -p /config-init/$NAMESPACE/sdc/logs/ASDC/ASDC-CS/
+mkdir -p /config-init/$NAMESPACE/sdc/logs/ASDC/ASDC-KB/
+mkdir -p /config-init/$NAMESPACE/sdc/logs/ASDC/ASDC-BE/
+mkdir -p /config-init/$NAMESPACE/sdc/logs/ASDC/ASDC-FE/
+mkdir -p /config-init/$NAMESPACE/aai/opt/aai/logroot/
 
-chmod -R 777 /config-init/$OWNER/sdc/logs/
-chmod -R 777 /config-init/$OWNER/aai/aai-config/
-chmod -R 777 /config-init/$OWNER/aai/aai-data/
-chmod -R 777 /config-init/$OWNER/aai/opt/aai/logroot/
+chmod -R 777 /config-init/$NAMESPACE/sdc/logs/
+chmod -R 777 /config-init/$NAMESPACE/aai/aai-config/
+chmod -R 777 /config-init/$NAMESPACE/aai/aai-data/
+chmod -R 777 /config-init/$NAMESPACE/aai/opt/aai/logroot/
+
+# replace the default 'onap' namespace qualification of K8s hostnames within the config files
+find /config-init/$NAMESPACE/ -type f -exec sed -i -e "s/onap-/$NAMESPACE-/g" {} \;
index 858e887..372694e 100644 (file)
@@ -10,9 +10,7 @@ spec:
         valueFrom:
           fieldRef:
             fieldPath: metadata.namespace
-      - name: OWNER
-        value: onapdemo
-      image: oomk8s/config-init:1.0.0
+      image: oomk8s/config-init:1.0.1
       imagePullPolicy: Always
       volumeMounts:
       - name: config-init-root
index bc211ee..5e5f2dc 100755 (executable)
@@ -31,6 +31,28 @@ create_service() {
   mv ../$2/all-services.yaml-- ../$2/all-services.yaml
 }
 
+configure_app() {
+  # if previous configuration exists put back original template file
+  for file in ../$2/*.yaml; do
+    if [ -e "$file-template" ]; then
+      mv "$file-template" "${file%}"
+    fi
+  done
+
+  # replace the default 'onap' namespace qualification of K8s hostnames within
+  # the config files
+  # note: this will create a '-template' file within the component's directory
+  #       this is not ideal and should be addressed (along with the replacement
+  #       of sed commands for configuration) by the future configuration
+  #       user stories (ie. OOM-51 to OOM-53)
+  find ../$2 -type f -exec sed -i -template "s/onap-/$1-/g" {} \;
+
+  # replace the default '/dockerdata-nfs/onapdemo' volume mount paths
+  find ../$2 -iname "*.yaml" -type f -exec sed -i -e 's/dockerdata-nfs\/[a-zA-Z0-9\\-]*\//dockerdata-nfs\/'"$1"'\//g' {} \;
+  rm -f ../$2/*.yaml-e
+}
+
+
 #MAINs
 NS=
 INCL_SVC=true
@@ -98,23 +120,26 @@ if [[ "$INCL_SVC" == true ]]; then
 
 fi
 
-printf "\n********** Creating up ONAP: ${ONAP_APPS[*]}\n"
+printf "\n********** Creating ONAP: ${ONAP_APPS[*]}\n"
 
 for i in ${ONAP_APPS[@]}; do
-  printf "\nCreating namespaces **********\n"
+  printf "\nCreating namespace **********\n"
   create_namespace $NS $i
 
+  printf "\nCreating registry secret **********\n"
+  create_registry_key $NS $i $ONAP_DOCKER_REGISTRY_KEY $ONAP_DOCKER_REGISTRY $DU $DP $ONAP_DOCKER_MAIL
+
   if [[ "$INCL_SVC" == true ]]; then
-    printf "\nCreating services **********\n"
+    printf "\nCreating service **********\n"
     create_service $NS $i $start $end
   fi
 
   printf "\n"
 done
 
-printf "\n\n********** Creating deployments for  ${ONAP_APPS[*]} ********** \n"
+printf "\n\n********** Creating deployments for ${ONAP_APPS[*]} ********** \n"
 for i in ${ONAP_APPS[@]}; do
-  create_registry_key $NS $i $ONAP_DOCKER_REGISTRY_KEY $ONAP_DOCKER_REGISTRY $DU $DP $ONAP_DOCKER_MAIL
+  configure_app $NS $i
   /bin/bash $i.sh $NS $i 'create'
 done