Loading .gitignore +0 −2 Original line number Diff line number Diff line Loading @@ -179,5 +179,3 @@ libyang/ # Other logs **/logs/*.log.* # PySpark checkpoints src/analytics/.spark/* .gitlab-ci.yml +2 −2 Original line number Diff line number Diff line Loading @@ -48,8 +48,8 @@ include: - local: '/src/bgpls_speaker/.gitlab-ci.yml' - local: '/src/kpi_manager/.gitlab-ci.yml' - local: '/src/kpi_value_api/.gitlab-ci.yml' - local: '/src/kpi_value_writer/.gitlab-ci.yml' - local: '/src/telemetry/.gitlab-ci.yml' #- local: '/src/kpi_value_writer/.gitlab-ci.yml' #- local: '/src/telemetry/.gitlab-ci.yml' - local: '/src/analytics/.gitlab-ci.yml' - local: '/src/qos_profile/.gitlab-ci.yml' - local: '/src/vnt_manager/.gitlab-ci.yml' Loading deploy/all.sh +3 −0 Original line number Diff line number Diff line Loading @@ -215,6 +215,9 @@ export GRAF_EXT_PORT_HTTP=${GRAF_EXT_PORT_HTTP:-"3000"} # Deploy Apache Kafka ./deploy/kafka.sh #Deploy Monitoring (Prometheus, Mimir, Grafana) ./deploy/monitoring.sh # Expose Dashboard ./deploy/expose_dashboard.sh Loading deploy/kafka.sh +5 −4 Original line number Diff line number Diff line Loading @@ -57,11 +57,12 @@ function kafka_deploy() { # Kafka zookeeper service should be deployed before the kafka service kubectl --namespace ${KFK_NAMESPACE} apply -f "${TMP_MANIFESTS_FOLDER}/${KFK_ZOOKEEPER_MANIFEST}" KFK_ZOOKEEPER_SERVICE="zookeeper-service" # this command may be replaced with command to extract service name automatically KFK_ZOOKEEPER_IP=$(kubectl --namespace ${KFK_NAMESPACE} get service ${KFK_ZOOKEEPER_SERVICE} -o 'jsonpath={.spec.clusterIP}') #KFK_ZOOKEEPER_SERVICE="zookeeper-service" # this command may be replaced with command to extract service name automatically #KFK_ZOOKEEPER_IP=$(kubectl --namespace ${KFK_NAMESPACE} get service ${KFK_ZOOKEEPER_SERVICE} -o 'jsonpath={.spec.clusterIP}') # Kafka service should be deployed after the zookeeper service sed -i "s/<ZOOKEEPER_INTERNAL_IP>/${KFK_ZOOKEEPER_IP}/" "${TMP_MANIFESTS_FOLDER}/$KFK_MANIFEST" #sed -i "s/<ZOOKEEPER_INTERNAL_IP>/${KFK_ZOOKEEPER_IP}/" "${TMP_MANIFESTS_FOLDER}/$KFK_MANIFEST" sed -i "s/<KAFKA_NAMESPACE>/${KFK_NAMESPACE}/" "${TMP_MANIFESTS_FOLDER}/$KFK_MANIFEST" # echo ">>> Deploying Apache Kafka Broker" kubectl --namespace ${KFK_NAMESPACE} apply -f "${TMP_MANIFESTS_FOLDER}/$KFK_MANIFEST" Loading deploy/monitoring.sh 0 → 100755 +132 −0 Original line number Diff line number Diff line #!/bin/bash # Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) # # Licensed 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. set -euo pipefail # ----------------------------------------------------------- # Global namespace for all deployments # ----------------------------------------------------------- NAMESPACE="monitoring" VALUES_FILE_PATH="manifests/monitoring" # ----------------------------------------------------------- # Prometheus Configuration # ----------------------------------------------------------- RELEASE_NAME_PROM="mon-prometheus" CHART_REPO_NAME_PROM="prometheus-community" CHART_REPO_URL_PROM="https://prometheus-community.github.io/helm-charts" CHART_NAME_PROM="prometheus" VALUES_FILE_PROM="$VALUES_FILE_PATH/prometheus_values.yaml" # ----------------------------------------------------------- # Mimir Configuration # ----------------------------------------------------------- # RELEASE_NAME_MIMIR="mon-mimir" # CHART_REPO_NAME_MIMIR="grafana" # CHART_REPO_URL_MIMIR="https://grafana.github.io/helm-charts" # CHART_NAME_MIMIR="mimir-distributed" # VALUES_FILE_MIMIR="$VALUES_FILE_PATH/mimir_values.yaml" # ----------------------------------------------------------- # Grafana Configuration # ----------------------------------------------------------- # RELEASE_NAME_GRAFANA="mon-grafana" # CHART_REPO_NAME_GRAFANA="grafana" # CHART_REPO_URL_GRAFANA="https://grafana.github.io/helm-charts" # CHART_NAME_GRAFANA="grafana" # VALUES_FILE_GRAFANA="$VALUES_FILE_PATH/grafana_values.yaml" # ----------------------------------------------------------- # Function to deploy or upgrade a Helm chart # ----------------------------------------------------------- deploy_chart() { local release_name="$1" local chart_repo_name="$2" local chart_repo_url="$3" local chart_name="$4" local values_file="$5" local namespace="$6" echo ">>> Deploying [${release_name}] from repo [${chart_repo_name}]..." # Add or update the Helm repo echo "Adding/updating Helm repo: $chart_repo_name -> $chart_repo_url" helm repo add "$chart_repo_name" "$chart_repo_url" || true helm repo update # Create namespace if needed echo "Creating namespace '$namespace' if it doesn't exist..." kubectl get namespace "$namespace" >/dev/null 2>&1 || kubectl create namespace "$namespace" # Install or upgrade the chart if [ -n "$values_file" ] && [ -f "$values_file" ]; then echo "Installing/Upgrading $release_name using custom values from $values_file..." helm upgrade --install "$release_name" "$chart_repo_name/$chart_name" \ --namespace "$namespace" \ --values "$values_file" else echo "Installing/Upgrading $release_name with default chart values..." helm upgrade --install "$release_name" "$chart_repo_name/$chart_name" \ --namespace "$namespace" fi echo "<<< Deployment initiated for [$release_name]." echo } # ----------------------------------------------------------- # Actual Deployments # ----------------------------------------------------------- # 1) Deploy Prometheus deploy_chart "$RELEASE_NAME_PROM" \ "$CHART_REPO_NAME_PROM" \ "$CHART_REPO_URL_PROM" \ "$CHART_NAME_PROM" \ "$VALUES_FILE_PROM" \ "$NAMESPACE" # Optionally wait for Prometheus server pod to become ready kubectl rollout status deployment/"$RELEASE_NAME_PROM-server" -n "$NAMESPACE" || true # 2) Deploy Mimir # deploy_chart "$RELEASE_NAME_MIMIR" \ # "$CHART_REPO_NAME_MIMIR" \ # "$CHART_REPO_URL_MIMIR" \ # "$CHART_NAME_MIMIR" \ # "$VALUES_FILE_MIMIR" \ # "$NAMESPACE" # Depending on how Mimir runs (StatefulSets, Deployments), you can wait for # the correct resource to be ready. For example: # kubectl rollout status statefulset/"$RELEASE_NAME_MIMIR-distributor" -n "$NAMESPACE" || true # 3) Deploy Grafana # deploy_chart "$RELEASE_NAME_GRAFANA" \ # "$CHART_REPO_NAME_GRAFANA" \ # "$CHART_REPO_URL_GRAFANA" \ # "$CHART_NAME_GRAFANA" \ # "$VALUES_FILE_GRAFANA" \ # "$NAMESPACE" # kubectl rollout status deployment/"$RELEASE_NAME_GRAFANA" -n "$NAMESPACE" || true # ----------------------------------------------------------- echo "All deployments completed!" Loading
.gitignore +0 −2 Original line number Diff line number Diff line Loading @@ -179,5 +179,3 @@ libyang/ # Other logs **/logs/*.log.* # PySpark checkpoints src/analytics/.spark/*
.gitlab-ci.yml +2 −2 Original line number Diff line number Diff line Loading @@ -48,8 +48,8 @@ include: - local: '/src/bgpls_speaker/.gitlab-ci.yml' - local: '/src/kpi_manager/.gitlab-ci.yml' - local: '/src/kpi_value_api/.gitlab-ci.yml' - local: '/src/kpi_value_writer/.gitlab-ci.yml' - local: '/src/telemetry/.gitlab-ci.yml' #- local: '/src/kpi_value_writer/.gitlab-ci.yml' #- local: '/src/telemetry/.gitlab-ci.yml' - local: '/src/analytics/.gitlab-ci.yml' - local: '/src/qos_profile/.gitlab-ci.yml' - local: '/src/vnt_manager/.gitlab-ci.yml' Loading
deploy/all.sh +3 −0 Original line number Diff line number Diff line Loading @@ -215,6 +215,9 @@ export GRAF_EXT_PORT_HTTP=${GRAF_EXT_PORT_HTTP:-"3000"} # Deploy Apache Kafka ./deploy/kafka.sh #Deploy Monitoring (Prometheus, Mimir, Grafana) ./deploy/monitoring.sh # Expose Dashboard ./deploy/expose_dashboard.sh Loading
deploy/kafka.sh +5 −4 Original line number Diff line number Diff line Loading @@ -57,11 +57,12 @@ function kafka_deploy() { # Kafka zookeeper service should be deployed before the kafka service kubectl --namespace ${KFK_NAMESPACE} apply -f "${TMP_MANIFESTS_FOLDER}/${KFK_ZOOKEEPER_MANIFEST}" KFK_ZOOKEEPER_SERVICE="zookeeper-service" # this command may be replaced with command to extract service name automatically KFK_ZOOKEEPER_IP=$(kubectl --namespace ${KFK_NAMESPACE} get service ${KFK_ZOOKEEPER_SERVICE} -o 'jsonpath={.spec.clusterIP}') #KFK_ZOOKEEPER_SERVICE="zookeeper-service" # this command may be replaced with command to extract service name automatically #KFK_ZOOKEEPER_IP=$(kubectl --namespace ${KFK_NAMESPACE} get service ${KFK_ZOOKEEPER_SERVICE} -o 'jsonpath={.spec.clusterIP}') # Kafka service should be deployed after the zookeeper service sed -i "s/<ZOOKEEPER_INTERNAL_IP>/${KFK_ZOOKEEPER_IP}/" "${TMP_MANIFESTS_FOLDER}/$KFK_MANIFEST" #sed -i "s/<ZOOKEEPER_INTERNAL_IP>/${KFK_ZOOKEEPER_IP}/" "${TMP_MANIFESTS_FOLDER}/$KFK_MANIFEST" sed -i "s/<KAFKA_NAMESPACE>/${KFK_NAMESPACE}/" "${TMP_MANIFESTS_FOLDER}/$KFK_MANIFEST" # echo ">>> Deploying Apache Kafka Broker" kubectl --namespace ${KFK_NAMESPACE} apply -f "${TMP_MANIFESTS_FOLDER}/$KFK_MANIFEST" Loading
deploy/monitoring.sh 0 → 100755 +132 −0 Original line number Diff line number Diff line #!/bin/bash # Copyright 2022-2024 ETSI SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/) # # Licensed 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. set -euo pipefail # ----------------------------------------------------------- # Global namespace for all deployments # ----------------------------------------------------------- NAMESPACE="monitoring" VALUES_FILE_PATH="manifests/monitoring" # ----------------------------------------------------------- # Prometheus Configuration # ----------------------------------------------------------- RELEASE_NAME_PROM="mon-prometheus" CHART_REPO_NAME_PROM="prometheus-community" CHART_REPO_URL_PROM="https://prometheus-community.github.io/helm-charts" CHART_NAME_PROM="prometheus" VALUES_FILE_PROM="$VALUES_FILE_PATH/prometheus_values.yaml" # ----------------------------------------------------------- # Mimir Configuration # ----------------------------------------------------------- # RELEASE_NAME_MIMIR="mon-mimir" # CHART_REPO_NAME_MIMIR="grafana" # CHART_REPO_URL_MIMIR="https://grafana.github.io/helm-charts" # CHART_NAME_MIMIR="mimir-distributed" # VALUES_FILE_MIMIR="$VALUES_FILE_PATH/mimir_values.yaml" # ----------------------------------------------------------- # Grafana Configuration # ----------------------------------------------------------- # RELEASE_NAME_GRAFANA="mon-grafana" # CHART_REPO_NAME_GRAFANA="grafana" # CHART_REPO_URL_GRAFANA="https://grafana.github.io/helm-charts" # CHART_NAME_GRAFANA="grafana" # VALUES_FILE_GRAFANA="$VALUES_FILE_PATH/grafana_values.yaml" # ----------------------------------------------------------- # Function to deploy or upgrade a Helm chart # ----------------------------------------------------------- deploy_chart() { local release_name="$1" local chart_repo_name="$2" local chart_repo_url="$3" local chart_name="$4" local values_file="$5" local namespace="$6" echo ">>> Deploying [${release_name}] from repo [${chart_repo_name}]..." # Add or update the Helm repo echo "Adding/updating Helm repo: $chart_repo_name -> $chart_repo_url" helm repo add "$chart_repo_name" "$chart_repo_url" || true helm repo update # Create namespace if needed echo "Creating namespace '$namespace' if it doesn't exist..." kubectl get namespace "$namespace" >/dev/null 2>&1 || kubectl create namespace "$namespace" # Install or upgrade the chart if [ -n "$values_file" ] && [ -f "$values_file" ]; then echo "Installing/Upgrading $release_name using custom values from $values_file..." helm upgrade --install "$release_name" "$chart_repo_name/$chart_name" \ --namespace "$namespace" \ --values "$values_file" else echo "Installing/Upgrading $release_name with default chart values..." helm upgrade --install "$release_name" "$chart_repo_name/$chart_name" \ --namespace "$namespace" fi echo "<<< Deployment initiated for [$release_name]." echo } # ----------------------------------------------------------- # Actual Deployments # ----------------------------------------------------------- # 1) Deploy Prometheus deploy_chart "$RELEASE_NAME_PROM" \ "$CHART_REPO_NAME_PROM" \ "$CHART_REPO_URL_PROM" \ "$CHART_NAME_PROM" \ "$VALUES_FILE_PROM" \ "$NAMESPACE" # Optionally wait for Prometheus server pod to become ready kubectl rollout status deployment/"$RELEASE_NAME_PROM-server" -n "$NAMESPACE" || true # 2) Deploy Mimir # deploy_chart "$RELEASE_NAME_MIMIR" \ # "$CHART_REPO_NAME_MIMIR" \ # "$CHART_REPO_URL_MIMIR" \ # "$CHART_NAME_MIMIR" \ # "$VALUES_FILE_MIMIR" \ # "$NAMESPACE" # Depending on how Mimir runs (StatefulSets, Deployments), you can wait for # the correct resource to be ready. For example: # kubectl rollout status statefulset/"$RELEASE_NAME_MIMIR-distributor" -n "$NAMESPACE" || true # 3) Deploy Grafana # deploy_chart "$RELEASE_NAME_GRAFANA" \ # "$CHART_REPO_NAME_GRAFANA" \ # "$CHART_REPO_URL_GRAFANA" \ # "$CHART_NAME_GRAFANA" \ # "$VALUES_FILE_GRAFANA" \ # "$NAMESPACE" # kubectl rollout status deployment/"$RELEASE_NAME_GRAFANA" -n "$NAMESPACE" || true # ----------------------------------------------------------- echo "All deployments completed!"