Files
oc-deploy/docker/demo/demo.sh

175 lines
4.3 KiB
Bash
Raw Normal View History

2026-04-13 16:35:42 +02:00
#!/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
2026-04-14 11:13:59 +02:00
if [ -f ~/.kube/config ]; then
cp ~/.kube/config ~/.kube/old_config || true
fi
2026-04-13 16:35:42 +02:00
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
2026-04-14 11:21:50 +02:00
sudo chown $(whoami):$(whoami) ~/.kube/config && chmod 644 ~/.kube/config
2026-04-13 16:35:42 +02:00
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
2026-04-14 10:54:31 +02:00
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
2026-04-13 16:35:42 +02:00
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..."
2026-04-14 10:17:07 +02:00
CLUSTER_IP=$(ip -4 addr show $(ip route | awk '/default/ {print $5}') | awk '/inet / {print $2}' | cut -d/ -f1)
2026-04-13 16:35:42 +02:00
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}')
2026-04-14 10:17:07 +02:00
docker network create \
--subnet=172.40.0.0/24 \
discovery || true
2026-04-13 16:35:42 +02:00
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
2026-04-14 10:54:31 +02:00
KUBE_CA=$ca KUBE_CERT=$cert KUBE_DATA=$key docker compose -f ./docker-compose.dev.yml up -d || true
2026-04-13 16:35:42 +02:00
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
2026-04-14 10:54:31 +02:00
KUBE_CA=$ca KUBE_CERT=$cert KUBE_DATA=$key docker compose -f ./docker-compose.dev2.yml up -d || true
2026-04-13 16:35:42 +02:00
# MISSING ADD DATAS
cd ./db-2 && ./add.sh && cd ..
echo "✅ DONE"