Files
oc-deploy/docker/demo/demo.sh
2026-04-14 11:13:59 +02:00

174 lines
4.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -euo pipefail
echo "🧹 Uninstalling existing K3s (if any)..."
if [ -f /usr/local/bin/k3s-uninstall.sh ]; then
sudo /usr/local/bin/k3s-uninstall.sh
fi
if [ -f /usr/local/bin/k3s-agent-uninstall.sh ]; then
sudo /usr/local/bin/k3s-agent-uninstall.sh
fi
echo "🧼 Cleaning leftovers..."
sudo rm -rf /etc/rancher /var/lib/rancher /var/lib/kubelet /etc/cni /opt/cni
sudo ip link delete cni0 2>/dev/null || true
sudo ip link delete flannel.1 2>/dev/null || true
echo "🚀 Installing K3s..."
curl -sfL https://get.k3s.io | sh -
echo "📄 Setting kubeconfig..."
mkdir -p ~/.kube
if [ -f ~/.kube/config ]; then
cp ~/.kube/config ~/.kube/old_config || true
fi
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
export KUBECONFIG=~/.kube/config
echo "⏳ Waiting for CoreDNS deployment to exist..."
timeout 120 bash -c '
until kubectl get deployment coredns -n kube-system >/dev/null 2>&1; do
sleep 2
done
'
echo "⏳ Waiting for CoreDNS to be available..."
kubectl wait --for=condition=Available deployment/coredns -n kube-system --timeout=120s
echo "🔄 Restarting CoreDNS..."
kubectl -n kube-system rollout restart deployment coredns
echo "📦 Installing Helm..."
if ! command -v helm &>/dev/null; then
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
fi
echo " Adding Helm repos..."
helm repo add argo https://argoproj.github.io/argo-helm || true
helm repo add admiralty https://charts.admiralty.io || true
helm repo update
echo "🧩 Installing Argo..."
kubectl create namespace argo || true
echo "🧩 Installing Argo Workflows..."
helm upgrade --install argo-workflows argo/argo-workflows \
-n argo \
--set server.authMode=server \
--wait
echo "🧩 Installing Admiralty..."
helm uninstall cert-manager -n cert-manager || true
kubectl delete namespace cert-manager --grace-period=0 --force || true
helm install \
cert-manager oci://quay.io/jetstack/charts/cert-manager \
--version v1.20.2 \
--namespace cert-manager \
--create-namespace \
--set crds.enabled=true
kubectl wait --for=condition=Established crd --all --timeout=60s
helm install admiralty oci://public.ecr.aws/admiralty/admiralty \
--namespace admiralty --create-namespace \
--version 0.17.0 \
--wait
echo "🌐 Configuring /etc/hosts..."
CLUSTER_IP=$(ip -4 addr show $(ip route | awk '/default/ {print $5}') | awk '/inet / {print $2}' | cut -d/ -f1)
if grep -q "kubernetes.default.svc.cluster.local" /etc/hosts; then
sudo sed -i "s/^.*kubernetes.default.svc.cluster.local/$CLUSTER_IP kubernetes.default.svc.cluster.local/" /etc/hosts
else
echo "$CLUSTER_IP kubernetes.default.svc.cluster.local" | sudo tee -a /etc/hosts
fi
ca=$(kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}')
cert=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-certificate-data}')
key=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-key-data}')
docker network create \
--subnet=172.40.0.0/24 \
discovery || true
REPOS=(
"mongo"
"mongo-express"
"nats"
"loki"
"hydra"
"ldap"
"keto"
"traefik"
"oc-auth"
"oc-catalog"
"oc-datacenter"
"oc-peer"
"oc-shared"
"oc-scheduler"
"oc-schedulerd"
"oc-workflow"
"oc-workspace"
"oc-discovery_1"
"oc-discovery_2"
"oc-discovery_3"
"oc-front"
)
echo "🧩 Installing Node 1..."
docker network create oc || true
for i in "${REPOS[@]}"
do
docker kill $i || true
docker rm $i || true
done
KUBE_CA=$ca KUBE_CERT=$cert KUBE_DATA=$key docker compose -f ./docker-compose.dev.yml up -d || true
cd ./db-1 && ./add.sh && cd ..
# MISSING ADD DATAS
echo "🧩 Installing Node 2..."
docker network create oc2 || true
REPOS2=(
"mongo2"
"mongo-express2"
"nats2"
"loki2"
"hydra2"
"ldap2"
"keto2"
"traefik2"
"oc-auth2"
"oc-catalog2"
"oc-datacenter2"
"oc-peer2"
"oc-shared2"
"oc-scheduler2"
"oc-schedulerd2"
"oc-workflow2"
"oc-workspace2"
"oc-discovery_4"
)
for i in "${REPOS2[@]}"
do
docker kill "$i" || true
docker rm "$i" || true
done
KUBE_CA=$ca KUBE_CERT=$cert KUBE_DATA=$key docker compose -f ./docker-compose.dev2.yml up -d || true
# MISSING ADD DATAS
cd ./db-2 && ./add.sh && cd ..
echo "✅ DONE"