From 5a7e570bc106fceb915520a8e70f92a946c009c1 Mon Sep 17 00:00:00 2001 From: Corneil du Plessis Date: Tue, 17 Jan 2023 12:58:43 +0200 Subject: [PATCH] Improve WebSocket stability. --- functions/supplier/websocket-supplier/pom.xml | 6 ++ scripts/deploy-gh-runners.sh | 1 + scripts/large-runners.sh | 64 +++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100755 scripts/large-runners.sh diff --git a/functions/supplier/websocket-supplier/pom.xml b/functions/supplier/websocket-supplier/pom.xml index 8b39aaf0..05618974 100644 --- a/functions/supplier/websocket-supplier/pom.xml +++ b/functions/supplier/websocket-supplier/pom.xml @@ -28,6 +28,12 @@ spring-boot-starter-security test + + org.springframework.cloud.fn + function-test-support + ${project.version} + test + diff --git a/scripts/deploy-gh-runners.sh b/scripts/deploy-gh-runners.sh index f82b093c..bfc8d741 100755 --- a/scripts/deploy-gh-runners.sh +++ b/scripts/deploy-gh-runners.sh @@ -101,5 +101,6 @@ else kubectl create --save-config --namespace $NS -f https://github.com/actions-runner-controller/actions-runner-controller/releases/download/$ARC_VER/actions-runner-controller.yaml $SCDIR/wait-deployment.sh $SVC $NS fi +$SCDIR/large-runners.sh 1 SCALE_MIN=$($SCDIR/determine-default.sh $CLUSTER_NAME "scale_down") $SCDIR/limit-runners.sh $SCALE_MIN diff --git a/scripts/large-runners.sh b/scripts/large-runners.sh new file mode 100755 index 00000000..16520e6c --- /dev/null +++ b/scripts/large-runners.sh @@ -0,0 +1,64 @@ +#!/bin/bash +SCDIR=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")") +SCDIR=$(realpath $SCDIR) +PARENT=$(realpath $SCDIR/..) + +function max_replicas() { + kubectl get horizontalrunnerautoscalers --output=json | jq '.items | map(select(.spec.scaleTargetRef.name == "runners-stream-ci-large")) | .[] | .spec.maxReplicas' +} + +function count_runners() { + kubectl get rdeploy | grep -F "runners-stream-ci-large" | awk '{print $2}' +} +function count_running() { + kubectl get rdeploy | grep -F "runners-stream-ci-large" | awk '{print $4}' +} +TARGET=$1 +if [ "$1" = "" ]; then + TARGET=1 +fi +CURRENT=$(count_runners) +echo "Connecting to stream-apps-gh-runners. $CURRENT runners" +MAX_RUNNERS=$2 +if [ "$MAX_RUNNERS" != "" ]; then + if ((MAX_RUNNERS < TARGET)); then + TARGET=$MAX_RUNNERS + echo "Runners. Target reduced to $TARGET" + fi +fi +if ((TARGET < 0)); then + TARGET=1 +fi +OS=$(uname) +OS="${OS//./L&}" +ARCH=$(uname -i) +case $ARCH in +"x86_64") + ARCH=amd64 + ;; +*) + echo "Architecture:$ARCH may not be supported by summerwind/actions-runner" + ;; +esac + +SCALING=$($SCDIR/determine-default.sh stream_apps_gh_runners runner_scaling) +cp $SCDIR/k8s/runners-stream-ci-large-template.yaml runners-stream-ci.yaml +ARC_RUNNER_VER=$($SCDIR/determine-default.sh stream-apps-gh-runners "actions_runner_version") +if [ "$ARC_RUNNER_VER" == "" ]; then + ARC_RUNNER_VER=latest +fi +sed -i 's/tag-placeholder/'"$ARC_RUNNER_VER"'/g' runners-stream-ci.yaml +if [ "$SCALING" == "auto" ]; then + if [ "$MAX_RUNNERS" == "" ]; then + MAX_RUNNERS=$(max_replicas) + fi + echo "Runners: Max runners to $MAX_RUNNERS" + echo "Runners: changing scaling min: $TARGET, max: $MAX_RUNNERS" + sed -i 's/max-replicas-placeholder/'"$MAX_RUNNERS"'/g' runners-stream-ci.yaml + sed -i 's/min-replicas-placeholder/'"$TARGET"'/g' runners-stream-ci.yaml +else + echo "Runners:$CURRENT change to $TARGET" + sed -i 's/replicas-placeholder/'"$TARGET"'/g' runners-stream-ci.yaml +fi +rm -f runners-stream-ci.yaml +$SCDIR/check-runners.sh