Files
inception-of-things/p3-bonus/scripts/argo-install.sh
2025-12-17 16:35:25 +01:00

94 lines
3.0 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"}]'
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 ">"
kubectl wait --namespace argocd \
--for=condition=ready pod \
--selector=app.kubernetes.io/name=argocd-server \
--timeout=600s
kubectl port-forward svc/argocd-server -n argocd 8080:443 1>/dev/null 2>/dev/null &
echo 'ArgoCD is running'
SCRIPT_PATH="$(realpath "${BASH_SOURCE[0]}")"
SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"
kubectl create namespace dev
echo '>'
echo '> App is starting (this takes around ~30 seconds)...'
echo '>'
kubectl apply -n argocd -f "$SCRIPT_DIR/../confs/argocd-app.yml"
echo 'App imported in ArgoCD'
kubectl create namespace gitlab
echo '>'
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 upgrade --install gitlab gitlab/gitlab \
--namespace gitlab \
--timeout 600s \
--set global.hosts.domain=gitlab-app.com \
--set global.ingress.enabled=true \
--set global.ingress.className=traefik \
--set certmanager.enabled=false \
--set certmanager-issuer.email=dummy@gitlab-app.com \
--set global.ingress.configureCertmanager=false \
--set nginx-ingress.enabled=false \
--set postgresql.enabled=true \
--set redis.install=true
kubectl wait --namespace gitlab \
--for=condition=available \
--timeout=600s \
deployment/gitlab-webservice-default
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
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
if grep -q gitlab-app.com /etc/hosts; then
sudo sed -i "/argo-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
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
echo "==============================="
echo
echo "=== Login into Gitlab with: ==="
echo Username: admin
echo -n "Password: "
kubectl -n gitlab get secret gitlab-gitlab-initial-root-password -o jsonpath='{.data.password}' | base64 -d
echo
echo "==============================="