167 lines
4.1 KiB
Bash
Executable File
167 lines
4.1 KiB
Bash
Executable File
#!/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..."
|
||
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
|
||
|
||
OC_KUBE_CA=$ca OC_KUBE_CERT=$cert OC_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
|
||
|
||
OC_KUBE_CA=$ca OC_KUBE_CERT=$cert OC_KUBE_DATA=$key docker compose -f ./docker-compose.dev2.yml up -d || true
|
||
# MISSING ADD DATAS
|
||
cd ./db-2 && ./add.sh && cd ..
|
||
|
||
echo "✅ DONE"
|