#0000 - Add Longhorn installation script and Helm values file

Introduce a bash script (`05_install_longhorn.sh`) to automate the installation of Longhorn using Helm, including S3 backup credentials setup. Include a new Helm values file (`longhorn.yaml`) to define default settings like replica count and S3 backup configuration.
This commit is contained in:
Guillaume "B.B." Van Hemmen 2024-12-28 13:51:25 +01:00
parent 6be0cdb8c3
commit 1cdedc26c7
2 changed files with 58 additions and 0 deletions

12
helm-values/longhorn.yaml Normal file
View file

@ -0,0 +1,12 @@
defaultSettings:
defaultReplicaCount: 2
storageReservedPercentageForDefaultDisk: 1
backupTarget: s3://longhorn-talos-backup@eu-west-1/
backupTargetCredentialSecret: longhorn-s3-secret
persistence:
defaultClassReplicaCount: 2
global:
nodeSelector:
extensions.talos.dev/iscsi-tools: v0.1.6

46
scripts/05_install_longhorn.sh Executable file
View file

@ -0,0 +1,46 @@
#!/bin/bash
set -e
# Check if the Cloudflare API token is provided as an argument
if [ -z "$1" ]; then
echo "Error: Missing S3 access key ID."
echo "Usage: $0 <AWS_ACCESS_KEY_ID> <AWS_SECRET_ACCESS_KEY>"
echo "You must provide your access key ID as a parameter to run this script."
exit 1
fi
# Check if the Cloudflare API token is provided as an argument
if [ -z "$2" ]; then
echo "Error: Missing S3 secret access key ID."
echo "Usage: $0 <AWS_ACCESS_KEY_ID> <AWS_SECRET_ACCESS_KEY>"
echo "You must provide your secret access key ID as a parameter to run this script."
exit 1
fi
AWS_ACCESS_KEY_ID=$1
AWS_SECRET_ACCESS_KEY=$2
# Add the longhorn Helm repository
helm repo add longhorn https://charts.longhorn.io
helm repo update
# Create the namespace for longhorn
kubectl create namespace longhorn-system || true
kubectl label namespace longhorn-system pod-security.kubernetes.io/enforce=privileged
kubectl label namespace longhorn-system pod-security.kubernetes.io/audit=privileged
kubectl label namespace longhorn-system pod-security.kubernetes.io/warn=privileged
kubectl delete secret longhorn-s3-secret -n longhorn-system || true
kubectl create secret generic longhorn-s3-secret \
--namespace longhorn-system \
--from-literal=AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
--from-literal=AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
--from-literal=AWS_REGION=eu-west-1
# Install the longhorn chart
helm install longhorn longhorn/longhorn \
--namespace longhorn-system \
--version 1.7.2 \
-f ./helm-values/longhorn.yaml