diff --git a/deploy/tfs.sh b/deploy/tfs.sh index 1ecb039e3fdeb88ca04737e56df5f94e588fed0b..5edc0c29bc9dd84e6dc92970ab358a14ab6fb4a2 100755 --- a/deploy/tfs.sh +++ b/deploy/tfs.sh @@ -176,14 +176,13 @@ echo "# Environment variables for TeraFlowSDN deployment" > $ENV_VARS_SCRIPT PYTHONPATH=$(pwd)/src echo "export PYTHONPATH=${PYTHONPATH}" >> $ENV_VARS_SCRIPT -# Not needed for the Hackfest -#echo "Create Redis secret..." -## first try to delete an old one if exists -#kubectl delete secret redis-secrets --namespace=$TFS_K8S_NAMESPACE --ignore-not-found -#REDIS_PASSWORD=`uuidgen` -#kubectl create secret generic redis-secrets --namespace=$TFS_K8S_NAMESPACE \ -# --from-literal=REDIS_PASSWORD=$REDIS_PASSWORD -#echo "export REDIS_PASSWORD=${REDIS_PASSWORD}" >> $ENV_VARS_SCRIPT +echo "Create Redis secret..." +# first try to delete an old one if exists +kubectl delete secret redis-secrets --namespace=$TFS_K8S_NAMESPACE --ignore-not-found +REDIS_PASSWORD=`uuidgen` +kubectl create secret generic redis-secrets --namespace=$TFS_K8S_NAMESPACE \ + --from-literal=REDIS_PASSWORD=$REDIS_PASSWORD +echo "export REDIS_PASSWORD=${REDIS_PASSWORD}" >> $ENV_VARS_SCRIPT for COMPONENT in $TFS_COMPONENTS; do echo "Processing '$COMPONENT' component..." @@ -260,9 +259,8 @@ for COMPONENT in $TFS_COMPONENTS; do echo " Adapting '$COMPONENT' manifest file..." MANIFEST="$TMP_MANIFESTS_FOLDER/${COMPONENT}service.yaml" - # Deactivated linkerd for the Hackfest - cp ./manifests/"${COMPONENT}"service.yaml "$MANIFEST" - #cat ./manifests/"${COMPONENT}"service.yaml | linkerd inject - --proxy-cpu-request "10m" --proxy-cpu-limit "1" --proxy-memory-request "64Mi" --proxy-memory-limit "256Mi" > "$MANIFEST" + #cp ./manifests/"${COMPONENT}"service.yaml "$MANIFEST" + cat ./manifests/"${COMPONENT}"service.yaml | linkerd inject - --proxy-cpu-request "10m" --proxy-cpu-limit "1" --proxy-memory-request "64Mi" --proxy-memory-limit "256Mi" > "$MANIFEST" if [ "$COMPONENT" == "pathcomp" ]; then IMAGE_URL=$(echo "$TFS_REGISTRY_IMAGES/$COMPONENT-frontend:$TFS_IMAGE_TAG" | sed 's,//,/,g' | sed 's,http:/,,g') @@ -377,11 +375,10 @@ if [[ "$TFS_COMPONENTS" == *"webui"* ]]; then GRAFANA_URL_UPDATED="http://${GRAFANA_USERNAME}:${TFS_GRAFANA_PASSWORD}@${GRAFANA_URL}" echo "export GRAFANA_URL_UPDATED=${GRAFANA_URL_UPDATED}" >> $ENV_VARS_SCRIPT - # Not needed for the Hackfest - #echo ">> Installing Scatter Plot plugin..." - #curl -X POST -H "Content-Type: application/json" -H "Content-Length: 0" \ - # ${GRAFANA_URL_UPDATED}/api/plugins/michaeldmoore-scatter-panel/install - #echo + echo ">> Installing Scatter Plot plugin..." + curl -X POST -H "Content-Type: application/json" -H "Content-Length: 0" \ + ${GRAFANA_URL_UPDATED}/api/plugins/michaeldmoore-scatter-panel/install + echo # Ref: https://grafana.com/docs/grafana/latest/http_api/data_source/ QDB_HOST_PORT="${METRICSDB_HOSTNAME}:${QDB_SQL_PORT}" @@ -411,71 +408,68 @@ if [[ "$TFS_COMPONENTS" == *"webui"* ]]; then }' ${GRAFANA_URL_UPDATED}/api/datasources echo - # Not needed for the Hackfest - #curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{ - # "access" : "proxy", - # "type" : "postgres", - # "name" : "questdb-slc-grp", - # "url" : "'${QDB_HOST_PORT}'", - # "database" : "'${QDB_TABLE_SLICE_GROUPS}'", - # "user" : "'${QDB_USERNAME}'", - # "basicAuth": false, - # "isDefault": false, - # "jsonData" : { - # "sslmode" : "disable", - # "postgresVersion" : 1100, - # "maxOpenConns" : 0, - # "maxIdleConns" : 2, - # "connMaxLifetime" : 14400, - # "tlsAuth" : false, - # "tlsAuthWithCACert" : false, - # "timescaledb" : false, - # "tlsConfigurationMethod": "file-path", - # "tlsSkipVerify" : true - # }, - # "secureJsonData": {"password": "'${QDB_PASSWORD}'"} - #}' ${GRAFANA_URL_UPDATED}/api/datasources - #echo - - # Not needed for the Hackfest - #curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{ - # "access" : "proxy", - # "type" : "postgres", - # "name" : "cockroachdb", - # "url" : "'cockroachdb-public.${CRDB_NAMESPACE}.svc.cluster.local:${CRDB_SQL_PORT}'", - # "database" : "'${CRDB_DATABASE}'", - # "user" : "'${CRDB_USERNAME}'", - # "basicAuth": false, - # "isDefault": false, - # "jsonData" : { - # "sslmode" : "require", - # "postgresVersion" : 1100, - # "maxOpenConns" : 0, - # "maxIdleConns" : 2, - # "connMaxLifetime" : 14400, - # "tlsAuth" : false, - # "tlsAuthWithCACert" : false, - # "timescaledb" : false, - # "tlsConfigurationMethod": "file-path", - # "tlsSkipVerify" : true - # }, - # "secureJsonData": {"password": "'${CRDB_PASSWORD}'"} - #}' ${GRAFANA_URL_UPDATED}/api/datasources - #echo - - # Not needed for the Hackfest - ## adding the datasource of the metrics collection framework - #curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{ - # "access" : "proxy", - # "type" : "prometheus", - # "name" : "prometheus", - # "url" : "http://prometheus-k8s.monitoring.svc:9090", - # "basicAuth": false, - # "isDefault": false, - # "jsonData" : { - # "httpMethod" : "POST" - # } - #}' ${GRAFANA_URL_UPDATED}/api/datasources + curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{ + "access" : "proxy", + "type" : "postgres", + "name" : "questdb-slc-grp", + "url" : "'${QDB_HOST_PORT}'", + "database" : "'${QDB_TABLE_SLICE_GROUPS}'", + "user" : "'${QDB_USERNAME}'", + "basicAuth": false, + "isDefault": false, + "jsonData" : { + "sslmode" : "disable", + "postgresVersion" : 1100, + "maxOpenConns" : 0, + "maxIdleConns" : 2, + "connMaxLifetime" : 14400, + "tlsAuth" : false, + "tlsAuthWithCACert" : false, + "timescaledb" : false, + "tlsConfigurationMethod": "file-path", + "tlsSkipVerify" : true + }, + "secureJsonData": {"password": "'${QDB_PASSWORD}'"} + }' ${GRAFANA_URL_UPDATED}/api/datasources + echo + + curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{ + "access" : "proxy", + "type" : "postgres", + "name" : "cockroachdb", + "url" : "'cockroachdb-public.${CRDB_NAMESPACE}.svc.cluster.local:${CRDB_SQL_PORT}'", + "database" : "'${CRDB_DATABASE}'", + "user" : "'${CRDB_USERNAME}'", + "basicAuth": false, + "isDefault": false, + "jsonData" : { + "sslmode" : "require", + "postgresVersion" : 1100, + "maxOpenConns" : 0, + "maxIdleConns" : 2, + "connMaxLifetime" : 14400, + "tlsAuth" : false, + "tlsAuthWithCACert" : false, + "timescaledb" : false, + "tlsConfigurationMethod": "file-path", + "tlsSkipVerify" : true + }, + "secureJsonData": {"password": "'${CRDB_PASSWORD}'"} + }' ${GRAFANA_URL_UPDATED}/api/datasources + echo + + # adding the datasource of the metrics collection framework + curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{ + "access" : "proxy", + "type" : "prometheus", + "name" : "prometheus", + "url" : "http://prometheus-k8s.monitoring.svc:9090", + "basicAuth": false, + "isDefault": false, + "jsonData" : { + "httpMethod" : "POST" + } + }' ${GRAFANA_URL_UPDATED}/api/datasources printf "\n\n" echo ">> Creating and staring dashboards..." @@ -490,75 +484,68 @@ if [[ "$TFS_COMPONENTS" == *"webui"* ]]; then curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} echo - # Not needed for the Hackfest - ## Dashboard: Slice Grouping - #curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_db_slc_grps_psql.json' \ - # ${GRAFANA_URL_UPDATED}/api/dashboards/db - #echo - #DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-slice-grps" - #DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') - #curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} - #echo - - # Not needed for the Hackfest - ## Dashboard: Component RPCs - #curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_prom_component_rpc.json' \ - # ${GRAFANA_URL_UPDATED}/api/dashboards/db - #echo - #DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-comp-rpc" - #DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') - #curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} - #echo - - # Not needed for the Hackfest - ## Dashboard: Device Drivers - #curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_prom_device_driver.json' \ - # ${GRAFANA_URL_UPDATED}/api/dashboards/db - #echo - #DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-dev-drv" - #DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') - #curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} - #echo - - # Not needed for the Hackfest - ## Dashboard: Service Handlers - #curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_prom_service_handler.json' \ - # ${GRAFANA_URL_UPDATED}/api/dashboards/db - #echo - #DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-svc-hdlr" - #DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') - #curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} - #echo - - # Not needed for the Hackfest - ## Dashboard: Device Execution Details - #curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_prom_device_exec_details.json' \ - # ${GRAFANA_URL_UPDATED}/api/dashboards/db - #echo - #DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-dev-exec" - #DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') - #curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} - #echo - - # Not needed for the Hackfest - ## Dashboard: Load Generator Status - #curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_prom_load_generator.json' \ - # ${GRAFANA_URL_UPDATED}/api/dashboards/db - #echo - #DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-loadgen-stats" - #DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') - #curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} - #echo - - # Not needed for the Hackfest - ## Dashboard: Load Generator Status - #curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_prom_tfs_num_pods.json' \ - # ${GRAFANA_URL_UPDATED}/api/dashboards/db - #echo - #DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-num-pods" - #DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') - #curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} - #echo + # Dashboard: Slice Grouping + curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_db_slc_grps_psql.json' \ + ${GRAFANA_URL_UPDATED}/api/dashboards/db + echo + DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-slice-grps" + DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') + curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} + echo + + # Dashboard: Component RPCs + curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_prom_component_rpc.json' \ + ${GRAFANA_URL_UPDATED}/api/dashboards/db + echo + DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-comp-rpc" + DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') + curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} + echo + + # Dashboard: Device Drivers + curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_prom_device_driver.json' \ + ${GRAFANA_URL_UPDATED}/api/dashboards/db + echo + DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-dev-drv" + DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') + curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} + echo + + # Dashboard: Service Handlers + curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_prom_service_handler.json' \ + ${GRAFANA_URL_UPDATED}/api/dashboards/db + echo + DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-svc-hdlr" + DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') + curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} + echo + + # Dashboard: Device Execution Details + curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_prom_device_exec_details.json' \ + ${GRAFANA_URL_UPDATED}/api/dashboards/db + echo + DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-dev-exec" + DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') + curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} + echo + + # Dashboard: Load Generator Status + curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_prom_load_generator.json' \ + ${GRAFANA_URL_UPDATED}/api/dashboards/db + echo + DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-loadgen-stats" + DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') + curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} + echo + + # Dashboard: Load Generator Status + curl -X POST -H "Content-Type: application/json" -d '@src/webui/grafana_prom_tfs_num_pods.json' \ + ${GRAFANA_URL_UPDATED}/api/dashboards/db + echo + DASHBOARD_URL="${GRAFANA_URL_UPDATED}/api/dashboards/uid/tfs-num-pods" + DASHBOARD_ID=$(curl -s "${DASHBOARD_URL}" | jq '.dashboard.id') + curl -X POST ${GRAFANA_URL_UPDATED}/api/user/stars/dashboard/${DASHBOARD_ID} + echo printf "\n\n" fi