From 844ad0ff2132584cb07e8231e127af56f89f2877 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 25 Oct 2023 12:29:55 +0200 Subject: [PATCH] Add Kubernetes cluster installation script to Kubernetes deployment --- deployment/scripts/cluster.install.sh | 58 +++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 deployment/scripts/cluster.install.sh diff --git a/deployment/scripts/cluster.install.sh b/deployment/scripts/cluster.install.sh new file mode 100755 index 000000000..9dd7ed15a --- /dev/null +++ b/deployment/scripts/cluster.install.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +# !!! never tested !!! + +# base setup +SCRIPT_PATH=$(realpath $0) +SCRIPT_DIR=$(dirname $SCRIPT_PATH) + +# check CONFIGURATION +if [ -z ${CONFIGURATION} ]; then + echo "You must provide a `CONFIGURATION` via environment variable" + exit 1 +fi +echo "Using CONFIGURATION=${CONFIGURATION}" + +# configuration +KUBECONFIG=${KUBECONFIG:-${SCRIPT_DIR}/../configurations/${CONFIGURATION}/kubeconfig.yaml} +VALUES=${SCRIPT_DIR}/../configurations/${CONFIGURATION}/kubernetes/values.yaml +DOCKERHUB_OCELOT_TAG=${DOCKERHUB_OCELOT_TAG:-"latest"} + + +## install Ingress-Nginx +helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx +helm repo update +helm install \ + ingress-nginx ingress-nginx/ingress-nginx \ + --kubeconfig=${KUBECONFIG} \ + -f ${SCRIPT_DIR}/../src/kubernetes/nginx.values.yaml + +## install Cert-Manager +helm repo add jetstack https://charts.jetstack.io +helm repo update +helm install \ + cert-manager jetstack/cert-manager \ + --kubeconfig=${KUBECONFIG} \ + --namespace cert-manager \ + --create-namespace \ + --version v1.13.1 \ + --set installCRDs=true + +## install Ocelot with helm +helm install \ + ocelot \ + --kubeconfig=${KUBECONFIG} \ + --values ${VALUES} \ + --set appVersion="${DOCKERHUB_OCELOT_TAG}" \ + ${SCRIPT_DIR}/../src/kubernetes/ \ + --timeout 10m + +## set Neo4j database indexes, constrains, and initial admin account plus run migrate up +kubectl --kubeconfig=${KUBECONFIG} \ + -n default \ + exec -it \ + $(kubectl --kubeconfig=${KUBECONFIG} -n default get pods | grep ocelot-backend | awk '{ print $1 }') -- \ + /bin/sh -c "yarn prod:migrate init && yarn prod:migrate up" + # /bin/sh -c "node --experimental-repl-await build/src/db/clean.js && node --experimental-repl-await build/src/db/seed.js" + +echo "!!! You must install a firewall or similar !!! (for DigitalOcean see: deployment/src/kubernetes/README.md)"