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
|
|
|
|
|
|
cp ~/.kube/config ~/.kube/old_config | true
|
|
|
|
|
|
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 CD..."
|
|
|
|
|
|
kubectl create namespace argocd || true
|
|
|
|
|
|
helm upgrade --install argocd argo/argo-cd -n argocd
|
|
|
|
|
|
|
|
|
|
|
|
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:17:07 +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:17:07 +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"
|