diff --git a/bonus/scripts/argo-install.sh b/bonus/scripts/argo-install.sh index ffb06e7..e7bbf0a 100755 --- a/bonus/scripts/argo-install.sh +++ b/bonus/scripts/argo-install.sh @@ -3,47 +3,64 @@ 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"}]' +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 '> metrics-server is starting (this takes around ~3 minutes)...' +kubectl wait --for=condition=available deployment/metrics-server -n kube-system --timeout=500s kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml -echo ">" -echo "> ArgoCD is starting (this takes around ~4 minutes)..." -echo ">" +echo "> ArgoCD is starting (this takes around ~6 minutes)..." +sleep 10 +echo '> Starting watch...' +sleep 5 -kubectl wait --namespace argocd \ - --for=condition=ready pod \ - --selector=app.kubernetes.io/name=argocd-server \ - --timeout=600s +# 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) -kubectl port-forward svc/argocd-server -n argocd 8080:443 1>/dev/null 2>/dev/null & -echo 'ArgoCD is running' + 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 '>' echo '> App is starting (this takes around ~30 seconds)...' echo '>' -kubectl apply -n argocd -f "$SCRIPT_DIR/../confs/argocd-app.yml" +kubectl wait --namespace dev \ + --for=condition=ready pod \ + --selector=app=app-p3 \ + --timeout=300s echo 'App imported in ArgoCD' +sleep 2 kubectl create namespace gitlab echo '>' -echo '> Gitlab is starting (this takes around ~10 minutes)...' +echo '> GitLab is starting (this takes around ~10 minutes)...' echo '>' -helm repo add gitlab https://charts.gitlab.io/ > /dev/null 2>&1 -help repo update > /dev/null 2>&1 +helm repo add gitlab https://charts.gitlab.io/ +help repo update helm upgrade --install gitlab gitlab/gitlab \ --namespace gitlab \ - --timeout 600s \ + --timeout 1200s \ --set global.hosts.domain=gitlab-app.com \ --set global.ingress.enabled=true \ --set global.ingress.className=traefik \ @@ -56,14 +73,14 @@ helm upgrade --install gitlab gitlab/gitlab \ kubectl wait --namespace gitlab \ --for=condition=available \ - --timeout=600s \ + --timeout=1200s \ deployment/gitlab-webservice-default -kubectl port-forward -n gitlab svc/gitlab-webservice-default 8081:8181 1>/dev/null 2>/dev/null & +# kubectl port-forward -n gitlab svc/gitlab-webservice-default 8081:8181 1>/dev/null 2>/dev/null & TRAEFIK_IP=$(kubectl get service -n kube-system traefik -o jsonpath='{.status.loadBalancer.ingress[0].ip}') -echo Traefik ip is : $TRAEFIK_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 @@ -72,7 +89,7 @@ echo App is now reachable at argo-app.com echo if grep -q gitlab-app.com /etc/hosts; then - sudo sed -i "/argo-app.com/d" /etc/hosts + sudo sed -i "/gitlab-app.com/d" /etc/hosts fi echo "$TRAEFIK_IP gitlab-app.com" | sudo tee -a "/etc/hosts" echo Gitlab is now reachable at gitlab-app.com diff --git a/p3/scripts/argo-install.sh b/p3/scripts/argo-install.sh index 253af71..990db09 100755 --- a/p3/scripts/argo-install.sh +++ b/p3/scripts/argo-install.sh @@ -47,7 +47,7 @@ kubectl wait --namespace dev \ --selector=app=app-p3 \ --timeout=300s echo 'App imported in ArgoCD' -sleep 10 +sleep 2 TRAEFIK_IP=$(kubectl get service -n kube-system traefik -o jsonpath='{.status.loadBalancer.ingress[0].ip}') echo Traefik IP is: $TRAEFIK_IP