#!/bin/bash source .env LB_IP="10.50.3.35" IP_POOL_RANGE="10.50.3.30-10.50.3.40" ## Setup all the needed repos helm repo add metallb https://metallb.github.io/metallb helm repo add traefik https://traefik.github.io/charts helm repo add jetstack https://charts.jetstack.io helm repo add longhorn https://charts.longhorn.io helm repo update ## Let's install metallb! helm install \ metallb metallb/metallb \ -n metallb-system \ --create-namespace echo "Waiting for all the pods to start..." kubectl wait --namespace metallb-system \ --for=condition=Ready pod \ --all \ --timeout=200s ## Apply the load-balancer IPs range envsubst < ./manifests/metallb/metallb-config.yaml | kubectl apply -f - ## Let's install traefik! helm install \ traefik traefik/traefik \ -n traefik \ -f ./manifests/traefik/values.yaml \ --set service.spec.loadBalancerIP="$LB_IP" \ --create-namespace ## Let's install Cert-Manager! helm install \ cert-manager jetstack/cert-manager \ -n cert-manager \ -f ./manifests/certmanager/values.yaml \ --create-namespace ## Set up the cloudflare API token secret kubectl create secret generic cloudflare-api-token-secret \ --from-literal=api-token="$CF_API" \ -n=cert-manager ## Apply the cloudflare Issuer kubectl apply -f ./manifests/certmanager/issuer.yaml ## Let's install longhorn! helm install longhorn longhorn/longhorn -n longhorn-system --create-namespace echo "Waiting for all the pods to start..." kubectl wait --namespace longhorn-system \ --for=condition=Ready pod \ --all \ --timeout=120s ## Apply ingress rule and certificate kubectl apply -f manifests/longhorn/certificate.yaml kubectl apply -f manifests/longhorn/ingress.yaml