From 91d252ae0af31a23f058569e1122b4d30e82720c Mon Sep 17 00:00:00 2001 From: Nate J Date: Wed, 5 Feb 2025 15:14:20 -0800 Subject: [PATCH] first commit --- gen-cnpg-and-firezone-new-new.sh | 144 +++++++++++++++ gen-cnpg-and-firezone-new.sh | 149 ++++++++++++++++ gen-cnpg-and-firezone.sh | 134 ++++++++++++++ secret-generator.sh | 61 +++++++ values.yaml | 295 +++++++++++++++++++++++++++++++ 5 files changed, 783 insertions(+) create mode 100755 gen-cnpg-and-firezone-new-new.sh create mode 100755 gen-cnpg-and-firezone-new.sh create mode 100755 gen-cnpg-and-firezone.sh create mode 100755 secret-generator.sh create mode 100644 values.yaml diff --git a/gen-cnpg-and-firezone-new-new.sh b/gen-cnpg-and-firezone-new-new.sh new file mode 100755 index 0000000..881aebb --- /dev/null +++ b/gen-cnpg-and-firezone-new-new.sh @@ -0,0 +1,144 @@ +#!/usr/bin/env bash +set -euo pipefail + +####################################################################### +### 1) CONFIGURATION +####################################################################### + +# Namespace and resource names +NAMESPACE="firezone" # Namespace where everything lives +CLUSTER_NAME="cluster-firezone" # CloudNativePG Cluster CR name +SECRET_USER_NAME="firezone" # Secret name for the normal DB user (used in bootstrap) +SECRET_SUPERUSER_NAME="izadmin" # Secret name for the Postgres superuser +SECRET_FIREZONE="firezone-database" # Secret name that Firezone will use + +# CloudNativePG cluster settings +POSTGRES_IMAGE="ghcr.io/cloudnative-pg/postgresql:16.2" +STORAGE_CLASS="ceph-block" +STORAGE_SIZE="20Gi" + +# Database credentials and names +# IMPORTANT: Firezone is trying to connect to a database named "firebase" +# so we set DB_NAME to "firebase" here. If you prefer a different name, +# you must update Firezone’s configuration accordingly. +DB_NAME="firebase" # The database to be created by initdb +DB_APP_USER="firezone" # The owner (normal DB user) for the database +DB_SUPERUSER="postgres" # Typical Postgres superuser name + +# Additional PostgreSQL parameters +MAX_CONNECTIONS="200" +SHARED_BUFFERS="256MB" + +# Generate random passwords (or set fixed ones if desired) +DB_APP_PASSWORD="$(openssl rand -hex 16)" +DB_SUPERUSER_PASSWORD="$(openssl rand -hex 16)" + +####################################################################### +### 2) CREATE/UPDATE SECRETS FOR CLOUDNATIVE-PG +####################################################################### + +echo "Creating/updating secrets for CloudNativePG..." + +# Secret for the normal DB user (used during initdb bootstrap) +oc -n "$NAMESPACE" create secret generic "$SECRET_USER_NAME" \ + --type=kubernetes.io/basic-auth \ + --from-literal=username="$DB_APP_USER" \ + --from-literal=password="$DB_APP_PASSWORD" \ + --dry-run=client -o yaml | oc apply -f - + +# Secret for the Postgres superuser +oc -n "$NAMESPACE" create secret generic "$SECRET_SUPERUSER_NAME" \ + --type=kubernetes.io/basic-auth \ + --from-literal=username="$DB_SUPERUSER" \ + --from-literal=password="$DB_SUPERUSER_PASSWORD" \ + --dry-run=client -o yaml | oc apply -f - + +echo "Secrets for CloudNativePG created/updated." + +####################################################################### +### 3) HANDLE THE CLOUDNATIVE-PG CLUSTER CR (FOR INITDB) +####################################################################### + +# The bootstrap (initdb) phase only runs when the cluster is first created. +# To force a re‑initialization with the new settings, delete any existing cluster. + +if oc get cluster "$CLUSTER_NAME" -n "$NAMESPACE" >/dev/null 2>&1; then + echo "CloudNativePG Cluster '$CLUSTER_NAME' already exists." + echo "Deleting the existing cluster to force re‑initialization (initdb)..." + oc delete cluster "$CLUSTER_NAME" -n "$NAMESPACE" + + # Wait until the cluster CR is fully deleted. + echo "Waiting for cluster '$CLUSTER_NAME' to be deleted..." + while oc get cluster "$CLUSTER_NAME" -n "$NAMESPACE" >/dev/null 2>&1; do + sleep 5 + done + echo "Existing cluster deleted." +fi + +echo "Creating CloudNativePG Cluster '$CLUSTER_NAME' with initdb bootstrap..." +cat </dev/null 2>&1; then + echo "CloudNativePG Cluster '$CLUSTER_NAME' already exists." + echo "Deleting the existing cluster to force re‑initialization (initdb)..." + oc delete cluster "$CLUSTER_NAME" -n "$NAMESPACE" + + # Wait until the cluster CR is fully deleted. + echo "Waiting for cluster '$CLUSTER_NAME' to be deleted..." + while oc get cluster "$CLUSTER_NAME" -n "$NAMESPACE" >/dev/null 2>&1; do + sleep 5 + done + echo "Existing cluster deleted." +fi + +echo "Creating CloudNativePG Cluster '$CLUSTER_NAME' with initdb bootstrap..." +cat <