Skip to content

Commit

Permalink
Merge pull request #1180 from bloxapp/stage
Browse files Browse the repository at this point in the history
v1.0.1
  • Loading branch information
Lior Rutenberg authored Oct 30, 2023
2 parents 71dbd49 + f6a1816 commit 7e3a2b3
Show file tree
Hide file tree
Showing 279 changed files with 23,587 additions and 3,657 deletions.
60 changes: 60 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,66 @@ Deploy exporter to stage:
- stage


# +---------------------+
# | STAGE HETZNER NODES |
# +---------------------+


Deploy nodes to hetzner stage:
stage: deploy
tags:
- hetzner-k8s-stage
image: bitnami/kubectl:1.27.5
script:
- export K8S_API_VERSION=$INFRA_STAGE_K8_API_VERSION
- export SSV_NODES_CPU_LIMIT=$HETZNER_STAGE_SSV_NODES_CPU_LIMIT
- export SSV_NODES_MEM_LIMIT=$HETZNER_STAGE_SSV_NODES_MEM_LIMIT
- echo $HETZNER_KUBECONFIG | base64 -d > kubeconfig
- mv kubeconfig ~/.kube/
- export KUBECONFIG=~/.kube/kubeconfig
- kubectl config get-contexts
#
# +--------------------+
# | Deploy SSV nodes |
# +--------------------+
- .k8/hetzner-stage/scripts/deploy-cluster-1--4.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-5--8.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-9--12.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-13--16.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-17--20.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-21--24.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-25--28.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-29--32.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-33--36.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-37--40.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-41--44.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-45--48.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-49--52.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-53--56.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-57--60.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-61--64.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-65--68.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-69--72.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
only:
- stage

Deploy exporter to hetzner stage:
stage: deploy
tags:
- hetzner-k8s-stage
image: bitnami/kubectl:1.27.5
script:
- export K8S_API_VERSION=$INFRA_STAGE_K8_API_VERSION
- export SSV_EXPORTER_CPU_LIMIT=$STAGE_SSV_EXPORTER_CPU_LIMIT
- export SSV_EXPORTER_MEM_LIMIT=$STAGE_SSV_EXPORTER_MEM_LIMIT
- echo $HETZNER_KUBECONFIG | base64 -d > kubeconfig
- mv kubeconfig ~/.kube/
- export KUBECONFIG=~/.kube/kubeconfig
- kubectl config get-contexts
- .k8/hetzner-stage/scripts/deploy-holesky-exporters.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $SSV_EXPORTER_CPU_LIMIT $SSV_EXPORTER_MEM_LIMIT
only:
- stage

# +---------------+
# | Prod |
# +---------------+
Expand Down
131 changes: 131 additions & 0 deletions .k8/hetzner-stage/scripts/deploy-cluster-1--4.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
#!/bin/bash

set -x

if [[ -z $1 ]]; then
echo "Please provide DOCKERREPO"
exit 1
fi

if [[ -z $2 ]]; then
echo "Please provide IMAGETAG"
exit 1
fi

if [[ -z $3 ]]; then
echo "Please provide NAMESPACE"
exit 1
fi

if [[ -z $4 ]]; then
echo "Please provide number of replicas"
exit 1
fi

if [[ -z $5 ]]; then
echo "Please provide deployment type: blox-infra-stage|blox-infra-prod"
exit 1
fi

if [[ -z $6 ]]; then
echo "Please provide k8s context"
exit 1
fi

if [[ -z $7 ]]; then
echo "Pleae provide domain suffix"
exit 1
fi

if [[ -z ${8} ]]; then
echo "Please provide k8s app version"
exit 1
fi

if [[ -z $9 ]]; then
echo "Please provide health check image"
exit 1
fi

if [[ -z ${10} ]]; then
echo "Please provide nodes cpu limit"
exit 1
fi

if [[ -z ${11} ]]; then
echo "Please provide nodes mem limit"
exit 1
fi


DOCKERREPO=$1
IMAGETAG=$2
NAMESPACE=$3
REPLICAS=$4
DEPL_TYPE=$5
K8S_CONTEXT=$6
DOMAIN_SUFFIX=$7
K8S_API_VERSION=$8
HEALTH_CHECK_IMAGE=$9
NODES_CPU_LIMIT=${10}
NODES_MEM_LIMIT=${11}


echo $DOCKERREPO
echo $IMAGETAG
echo $NAMESPACE
echo $REPLICAS
echo $DEPL_TYPE
echo $K8S_CONTEXT
echo $DOMAIN_SUFFIX
echo $K8S_API_VERSION
echo $HEALTH_CHECK_IMAGE
echo $NODES_CPU_LIMIT
echo $NODES_MEM_LIMIT

# create namespace if not exists
if ! kubectl --context=$K8S_CONTEXT get ns | grep -q $NAMESPACE; then
echo "$NAMESPACE created"
kubectl --context=$K8S_CONTEXT create namespace $NAMESPACE
fi

#config
#if [[ -d .k8/configmaps/ ]]; then
#config
#for file in $(ls -A1 .k8/configmaps/); do
#sed -i -e "s|REPLACE_NAMESPACE|${NAMESPACE}|g" ".k8/configmaps/${file}"
#done
#fi

#if [[ -d .k8/secrets/ ]]; then
#for file in $(ls -A1 .k8/secrets/); do
#sed -i -e "s|REPLACE_NAMESPACE|${NAMESPACE}|g" ".k8/secrets/${file}"
#done
#fi

DIR=".k8/hetzner-stage"
DEPLOY_FILES=(
"ssv-node-1-deployment.yml"
"ssv-node-2-deployment.yml"
"ssv-node-3-deployment.yml"
"ssv-node-4-deployment.yml"
)

if [[ -d $DIR ]]; then
for file in "${DEPLOY_FILES[@]}"; do
sed -i -e "s|REPLACE_NAMESPACE|${NAMESPACE}|g" \
-e "s|REPLACE_DOCKER_REPO|${DOCKERREPO}|g" \
-e "s|REPLACE_REPLICAS|${REPLICAS}|g" \
-e "s|REPLACE_DOMAIN_SUFFIX|${DOMAIN_SUFFIX}|g" \
-e "s|REPLACE_API_VERSION|${K8S_API_VERSION}|g" \
-e "s|REPLACE_HEALTH_IMAGE|${HEALTH_CHECK_IMAGE}|g" \
-e "s|REPLACE_NODES_CPU_LIMIT|${NODES_CPU_LIMIT}|g" \
-e "s|REPLACE_NODES_MEM_LIMIT|${NODES_MEM_LIMIT}|g" \
-e "s|REPLACE_IMAGETAG|${IMAGETAG}|g" "${DIR}/${file}" || exit 1
done
fi

#deploy
for file in "${DEPLOY_FILES[@]}"; do
kubectl --context=$K8S_CONTEXT apply -f "${DIR}/${file}" || exit 1
done
Original file line number Diff line number Diff line change
Expand Up @@ -103,12 +103,12 @@ fi
#done
#fi

DIR=".k8/stage"
DIR=".k8/hetzner-stage"
DEPLOY_FILES=(
"ssv-node-v3-1-deployment.yml"
"ssv-node-v3-2-deployment.yml"
"ssv-node-v3-3-deployment.yml"
"ssv-node-v3-4-deployment.yml"
"ssv-node-13-deployment.yml"
"ssv-node-14-deployment.yml"
"ssv-node-15-deployment.yml"
"ssv-node-16-deployment.yml"
)

if [[ -d $DIR ]]; then
Expand Down
131 changes: 131 additions & 0 deletions .k8/hetzner-stage/scripts/deploy-cluster-17--20.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
#!/bin/bash

set -x

if [[ -z $1 ]]; then
echo "Please provide DOCKERREPO"
exit 1
fi

if [[ -z $2 ]]; then
echo "Please provide IMAGETAG"
exit 1
fi

if [[ -z $3 ]]; then
echo "Please provide NAMESPACE"
exit 1
fi

if [[ -z $4 ]]; then
echo "Please provide number of replicas"
exit 1
fi

if [[ -z $5 ]]; then
echo "Please provide deployment type: blox-infra-stage|blox-infra-prod"
exit 1
fi

if [[ -z $6 ]]; then
echo "Please provide k8s context"
exit 1
fi

if [[ -z $7 ]]; then
echo "Pleae provide domain suffix"
exit 1
fi

if [[ -z ${8} ]]; then
echo "Please provide k8s app version"
exit 1
fi

if [[ -z $9 ]]; then
echo "Please provide health check image"
exit 1
fi

if [[ -z ${10} ]]; then
echo "Please provide nodes cpu limit"
exit 1
fi

if [[ -z ${11} ]]; then
echo "Please provide nodes mem limit"
exit 1
fi


DOCKERREPO=$1
IMAGETAG=$2
NAMESPACE=$3
REPLICAS=$4
DEPL_TYPE=$5
K8S_CONTEXT=$6
DOMAIN_SUFFIX=$7
K8S_API_VERSION=$8
HEALTH_CHECK_IMAGE=$9
NODES_CPU_LIMIT=${10}
NODES_MEM_LIMIT=${11}


echo $DOCKERREPO
echo $IMAGETAG
echo $NAMESPACE
echo $REPLICAS
echo $DEPL_TYPE
echo $K8S_CONTEXT
echo $DOMAIN_SUFFIX
echo $K8S_API_VERSION
echo $HEALTH_CHECK_IMAGE
echo $NODES_CPU_LIMIT
echo $NODES_MEM_LIMIT

# create namespace if not exists
if ! kubectl --context=$K8S_CONTEXT get ns | grep -q $NAMESPACE; then
echo "$NAMESPACE created"
kubectl --context=$K8S_CONTEXT create namespace $NAMESPACE
fi

#config
#if [[ -d .k8/configmaps/ ]]; then
#config
#for file in $(ls -A1 .k8/configmaps/); do
#sed -i -e "s|REPLACE_NAMESPACE|${NAMESPACE}|g" ".k8/configmaps/${file}"
#done
#fi

#if [[ -d .k8/secrets/ ]]; then
#for file in $(ls -A1 .k8/secrets/); do
#sed -i -e "s|REPLACE_NAMESPACE|${NAMESPACE}|g" ".k8/secrets/${file}"
#done
#fi

DIR=".k8/hetzner-stage"
DEPLOY_FILES=(
"ssv-node-17-deployment.yml"
"ssv-node-18-deployment.yml"
"ssv-node-19-deployment.yml"
"ssv-node-20-deployment.yml"
)

if [[ -d $DIR ]]; then
for file in "${DEPLOY_FILES[@]}"; do
sed -i -e "s|REPLACE_NAMESPACE|${NAMESPACE}|g" \
-e "s|REPLACE_DOCKER_REPO|${DOCKERREPO}|g" \
-e "s|REPLACE_REPLICAS|${REPLICAS}|g" \
-e "s|REPLACE_DOMAIN_SUFFIX|${DOMAIN_SUFFIX}|g" \
-e "s|REPLACE_API_VERSION|${K8S_API_VERSION}|g" \
-e "s|REPLACE_HEALTH_IMAGE|${HEALTH_CHECK_IMAGE}|g" \
-e "s|REPLACE_NODES_CPU_LIMIT|${NODES_CPU_LIMIT}|g" \
-e "s|REPLACE_NODES_MEM_LIMIT|${NODES_MEM_LIMIT}|g" \
-e "s|REPLACE_IMAGETAG|${IMAGETAG}|g" "${DIR}/${file}" || exit 1
done
fi

#deploy
for file in "${DEPLOY_FILES[@]}"; do
kubectl --context=$K8S_CONTEXT apply -f "${DIR}/${file}" || exit 1
done
Loading

0 comments on commit 7e3a2b3

Please sign in to comment.