diff options
author | Mike Elliott <mike.elliott@amdocs.com> | 2017-08-14 16:21:40 -0400 |
---|---|---|
committer | Mike Elliott <mike.elliott@amdocs.com> | 2017-08-15 08:09:33 -0400 |
commit | d17accd32f4f7851dbe7b023f1997aa4e17938e8 (patch) | |
tree | a0add5147ff2e3a2da78c8117d237bcdb656758d | |
parent | 8fc4b23407fa42cde4c592491824e48c564245a1 (diff) |
[OOM-117] Multiple ONAP instances same K8s cluster
Change-Id: Ie670dd37da819b33e32885d3be20cc8739fc2524
Signed-off-by: Mike Elliott <mike.elliott@amdocs.com>
-rw-r--r-- | kubernetes/README.md | 31 | ||||
-rw-r--r-- | kubernetes/config/createConfig.sh | 47 | ||||
-rwxr-xr-x | kubernetes/config/docker/init/config-init.sh | 45 | ||||
-rw-r--r-- | kubernetes/config/pod-config-init.yaml | 4 | ||||
-rwxr-xr-x | kubernetes/oneclick/createAll.bash | 35 |
5 files changed, 133 insertions, 29 deletions
diff --git a/kubernetes/README.md b/kubernetes/README.md index 73339bf152..4760d9ec0d 100644 --- a/kubernetes/README.md +++ b/kubernetes/README.md @@ -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 index 0000000000..f226ccae47 --- /dev/null +++ b/kubernetes/config/createConfig.sh @@ -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" diff --git a/kubernetes/config/docker/init/config-init.sh b/kubernetes/config/docker/init/config-init.sh index bf0e644b6f..f751f4d1ca 100755 --- a/kubernetes/config/docker/init/config-init.sh +++ b/kubernetes/config/docker/init/config-init.sh @@ -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" {} \; diff --git a/kubernetes/config/pod-config-init.yaml b/kubernetes/config/pod-config-init.yaml index 858e88714b..372694ebe6 100644 --- a/kubernetes/config/pod-config-init.yaml +++ b/kubernetes/config/pod-config-init.yaml @@ -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 diff --git a/kubernetes/oneclick/createAll.bash b/kubernetes/oneclick/createAll.bash index bc211eeb47..5e5f2dc76e 100755 --- a/kubernetes/oneclick/createAll.bash +++ b/kubernetes/oneclick/createAll.bash @@ -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 |