NONRTRIC-946: Servicemanager - Add Kong data plane and control plane
[it/dep.git] / bin / deploy-nonrtric
1 #!/bin/bash
2 ################################################################################
3 #   Copyright (c) 2023 Nordix Foundation.                                      #
4 #   Copyright (C) 2023-2024 OpenInfra Foundation Europe. All rights reserved.  #
5 #                                                                              #
6 #   Licensed under the Apache License, Version 2.0 (the "License");            #
7 #   you may not use this file except in compliance with the License.           #
8 #   You may obtain a copy of the License at                                    #
9 #                                                                              #
10 #       http://www.apache.org/licenses/LICENSE-2.0                             #
11 #                                                                              #
12 #   Unless required by applicable law or agreed to in writing, software        #
13 #   distributed under the License is distributed on an "AS IS" BASIS,          #
14 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
15 #   See the License for the specific language governing permissions and        #
16 #   limitations under the License.                                             #
17 ################################################################################
18
19 # This script deploys NonRtRic components automatically
20
21
22
23 if [ "$#" -eq 1 ]; then
24     OVERRIDEYAML=$1
25 else
26
27     while [ -n "$1" ]; do # while loop starts
28
29         case "$1" in
30
31         -f) OVERRIDEYAML=$2
32             shift
33             ;;
34         *) echo "Option $1 not recognized" ;; # In case you typed a different option other than a,b,c
35
36         esac
37
38         shift
39
40     done
41 fi
42
43
44 if [ -z "$OVERRIDEYAML" ];then
45     echo "****************************************************************************************************************"
46     echo "                                                     ERROR                                                      "
47     echo "****************************************************************************************************************"
48     echo "RIC deployment without deployment recipe is currently disabled. Please specify an recipe with the -f option."
49     echo "****************************************************************************************************************"
50     exit 1
51 fi
52
53
54 ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
55
56 echo "** $ROOT_DIR"
57 rm $ROOT_DIR/../nonrtric/helm/*/charts/*.tgz
58
59 #ChartMuseum configuration
60 CM_VERSION="v0.16.1"
61 CM_PORT="8879"
62 CM_BASE_URL="http://127.0.0.1:$CM_PORT"
63 CM_CHART_GET_URL="$CM_BASE_URL/charts"
64 CM_CHART_POST_URL="$CM_BASE_URL/charts/api/charts"
65
66 #Check for helm3
67 IS_HELM3=$(helm version -c --short|grep -e "^v3")
68
69 if ! command -v chartmuseum &> /dev/null
70 then
71   pushd /tmp
72   echo "Installing ChartMuseum binary..."
73   wget https://get.helm.sh/chartmuseum-$CM_VERSION-linux-amd64.tar.gz
74   tar xvfz chartmuseum-$CM_VERSION-linux-amd64.tar.gz
75   sudo mv /tmp/linux-amd64/chartmuseum /usr/local/bin/chartmuseum
76   popd
77 else
78   echo "ChartMuseum is already installed."
79 fi
80
81 # Package common templates and serve it using Helm local repo
82 HELM_LOCAL_REPO="./chartstorage"
83 rm $HELM_LOCAL_REPO/*
84
85 #Start Chart Museum server if there isn't one
86 CHART_MUSEUM_PID=$(lsof -i :"$CM_PORT" | grep "chartmus" | grep -v "grep" | awk '{print $2}')
87 if [ -z "$CHART_MUSEUM_PID" ]; then
88   echo "Starting ChartMuseum on port $CM_PORT..."
89   nohup chartmuseum --port=$CM_PORT --storage="local" --context-path=/charts --storage-local-rootdir=$HELM_LOCAL_REPO >/dev/null 2>&1 &
90   echo $! > $ROOT_DIR/CM_PID.txt
91 else
92   echo "ChartMuseum is already running..."
93 fi
94
95 # Check if ChartMuseum  is ready to serve request
96 command="curl --silent --output /dev/null  $CM_BASE_URL"
97 for i in $(seq 1 5)
98 do $command && s=0 && break || s=$? && echo "Failed to establish a connection with the ChartMuseum server. Retrying after 5s" && sleep 5;
99 done
100
101 if [ $s -gt 0 ]
102 then
103         echo "Cmd to test ChartMuseum failed with ($s): $command"
104         exit $s
105 fi
106
107 helm repo remove local
108 helm repo add local $CM_CHART_GET_URL
109
110 echo -e "\nPackaging NONRTRIC common [nonrtric-common]"
111 NONRTRIC_COMMON_CHART_VERSION=$(cat $ROOT_DIR/../ric-common/Common-Template/helm/nonrtric-common/Chart.yaml | grep version | awk '{print $2}')
112 helm package -d /tmp $ROOT_DIR/../ric-common/Common-Template/helm/nonrtric-common
113 curl --data-binary @/tmp/nonrtric-common-$NONRTRIC_COMMON_CHART_VERSION.tgz $CM_CHART_POST_URL
114
115 charts_already_exists=()
116
117 COMPONENTS="controlpanel a1controller a1simulator policymanagementservice informationservice rappcatalogueservice rappcatalogueenhancedservice nonrtricgateway dmaapadapterservice dmaapmediatorservice helmmanager orufhrecovery ransliceassurance capifcore rappmanager dmeparticipant"
118 for component in $COMPONENTS; do
119     echo "Packaging NONRTRIC component [$component]"
120     helm dep up $ROOT_DIR/../nonrtric/helm/$component
121     VERSION=$(cat $ROOT_DIR/../nonrtric/helm/$component/Chart.yaml | grep version | awk '{print $2}')
122     helm package -d /tmp $ROOT_DIR/../nonrtric/helm/$component
123     resp_code=$(curl -s -o /dev/null -w "%{http_code}" --data-binary @/tmp/$component-$VERSION.tgz $CM_CHART_POST_URL)
124     echo "Chart upload status of $component is $resp_code"
125     if [ "$resp_code" -eq 409 ]; then
126       charts_already_exists+=("$component")
127     fi
128 done
129
130 if [ ${#charts_already_exists[@]} -gt 0 ]; then
131   echo "----------------------------------- WARNING!!! -------------------------------------------"
132   echo "The following charts already exists in ChartMuseum '${charts_already_exists[@]}'."
133   echo "The current build of the charts hasn't been updated because the charts already exist."
134   echo "It is recommended to delete the charts from ChartMuseum before the build."
135   echo "------------------------------------------------------------------------------------------"
136 fi
137
138 helm dep up $ROOT_DIR/../nonrtric/helm/nonrtric
139
140 helm repo index ${HELM_LOCAL_REPO}
141
142 # Make sure that helm local repo is added
143 helm repo add local $CM_CHART_GET_URL --force-update
144
145 echo "Finished Packaging NONRTRIC components [$COMPONENTS]"
146
147
148 COMMON_BLOCK=$(cat $OVERRIDEYAML | awk '/^common:/{getline; while ($0 ~ /^ +.*|^ *$/) {print $0; if (getline == 0) {break}}}')
149 NAMESPACE_BLOCK=$(cat $OVERRIDEYAML | awk '/^  namespace:/{getline; while ($0 ~ /^    .*|^ *$/) {print $0; if (getline == 0) {break}}}')
150 NONRTRIC_NAMESPACE=$(echo "$NAMESPACE_BLOCK" | awk '/^ *nonrtric:/{print $2}')
151 RELEASE_PREFIX=$(echo "$COMMON_BLOCK" | awk '/^ *releasePrefix:/{print $2}')
152 INSTALL_KONG=$(cat $OVERRIDEYAML | awk '/^  installKong:/{print $2}')
153 INSTALL_RANPM=$(cat $OVERRIDEYAML | awk '/^  installRanpm:/{print $2}')
154
155 if ! kubectl get ns ${NONRTRIC_NAMESPACE:-nonrtric}> /dev/null 2>&1; then
156     kubectl create ns ${NONRTRIC_NAMESPACE:-nonrtric}
157 fi
158 if ! kubectl get ns onap > /dev/null 2>&1; then
159     kubectl create ns onap
160 fi
161
162 echo "Install Kong- $INSTALL_KONG"
163
164 if [ "$INSTALL_KONG" = true ];then
165    echo "Installing Kong"
166    helm repo add kong https://charts.konghq.com --force-update
167    helm repo update
168    helm install kong-nonrtric --namespace ${NONRTRIC_NAMESPACE:-nonrtric} kong/kong --set ingressController.installCRDs=false --set admin.enabled=true
169 fi
170
171 kubectl create configmap -n ${NONRTRIC_NAMESPACE:-nonrtric} nonrtric-recipe --from-file=recipe=$OVERRIDEYAML
172
173 echo "Deploying NONRTRIC"
174
175 echo "Install Ranpm- $INSTALL_RANPM"
176
177 if [ "$INSTALL_RANPM" = true ];then
178    echo "Running install-ranpm.sh"
179    chmod +x ${ROOT_DIR}/../ranpm/install/install-ranpm.sh
180    ${ROOT_DIR}/../ranpm/install/install-ranpm.sh
181    echo "install-ranpm.sh completed"
182 fi
183
184 HELM_NAME_OPT=""
185 if [ -z $IS_HELM3 ];then
186    HELM_NAME_OPT="--name"
187 fi
188
189 echo "helm install -f $OVERRIDEYAML --namespace ${NONRTRIC_NAMESPACE:-nonrtric} ${HELM_NAME_OPT} ${RELEASE_PREFIX} $ROOT_DIR/../nonrtric/helm/nonrtric"
190 helm install -f $OVERRIDEYAML --namespace "${NONRTRIC_NAMESPACE:-nonrtric}" ${HELM_NAME_OPT} "${RELEASE_PREFIX}" "$ROOT_DIR/../nonrtric/helm/nonrtric"