70 lines
1.6 KiB
Bash
Executable File
70 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
source .env
|
|
|
|
## 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
|
|
|
|
kubectl apply -f manifests/metallb/metallb-config.yaml
|
|
|
|
## Let's install traefik!
|
|
|
|
helm install \
|
|
traefik traefik/traefik \
|
|
-n traefik \
|
|
-f ./manifests/traefik/values.yaml \
|
|
--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 |