Files
inception-of-things/p3/scripts/argo-install.sh
2025-12-17 14:05:12 +01:00

66 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env sh
k3d cluster create inception-of-things
# Setup a metrics-server to prevent dumb errors
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
kubectl patch deployment metrics-server -n kube-system --type='json' \
-p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--kubelet-insecure-tls"}]'
echo '> Waiting for metrics-server to be ready...'
kubectl wait --for=condition=available deployment/metrics-server -n kube-system --timeout=300s
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
echo "> ArgoCD is starting (this takes around ~5 minutes)..."
sleep 10
echo '> Starting watch...'
sleep 5
# So we have a progress-ish indicator visual
while true; do
ready=$(kubectl get pods -n argocd --no-headers 2>/dev/null | grep -E "([0-9]+)/\1" | wc -l)
total=$(kubectl get pods -n argocd --no-headers 2>/dev/null | wc -l)
clear
kubectl get pods -n argocd
if [ "$ready" -eq "$total" ] && [ "$total" -gt 0 ]; then
echo "All ArgoCD pods are ready!"
sleep 5
break
fi
sleep 30
done
SCRIPT_PATH="$(realpath "${BASH_SOURCE[0]}")"
SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"
kubectl create namespace dev
kubectl apply -n argocd -f "$SCRIPT_DIR/../confs/argocd-app.yml"
echo '> App is starting (this takes around ~30 seconds)...'
kubectl wait --namespace dev \
--for=condition=ready pod \
--selector=app.kubernetes.io/name=app-deployment \
--timeout=300s
echo 'App imported in ArgoCD'
sleep 10
TRAEFIK_IP=$(kubectl get service -n kube-system traefik -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo Traefik IP is: $TRAEFIK_IP
if grep -q argo-app.com /etc/hosts; then
sudo sed -i "/argo-app.com/d" /etc/hosts
fi
echo "$TRAEFIK_IP argo-app.com" | sudo tee -a "/etc/hosts"
echo App is now reachable at argo-app.com
echo
echo "=== Login into ArgoCD with: ==="
echo Username: admin
echo -n "Password: "
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
echo "==============================="