deploy Sealed Secrets controller for encrypted secret management
Adds Sealed Secrets (Bitnami) to the platform stack so cluster users can encrypt secrets with a public key and commit SealedSecret YAMLs to git. The in-cluster controller decrypts them into regular K8s Secrets. - New module: sealed-secrets (namespace + Helm chart v2.18.3, cluster tier) - k8s-portal setup script: adds kubeseal CLI install for Linux and Mac
This commit is contained in:
parent
d352d6e7f8
commit
6b3e84f465
3 changed files with 76 additions and 0 deletions
|
|
@ -432,6 +432,14 @@ module "cnpg" {
|
||||||
tier = local.tiers.cluster
|
tier = local.tiers.cluster
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Sealed Secrets — encrypts secrets for safe git storage
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
module "sealed-secrets" {
|
||||||
|
source = "./modules/sealed-secrets"
|
||||||
|
tier = local.tiers.cluster
|
||||||
|
}
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# NVIDIA — GPU device plugin
|
# NVIDIA — GPU device plugin
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -92,6 +92,19 @@ else
|
||||||
echo "[OK] kubelogin installed"
|
echo "[OK] kubelogin installed"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Install kubeseal
|
||||||
|
if command -v kubeseal &>/dev/null; then
|
||||||
|
echo "[OK] kubeseal already installed"
|
||||||
|
else
|
||||||
|
echo "[..] Installing kubeseal..."
|
||||||
|
KUBESEAL_VERSION=\$(curl -fsSL -o /dev/null -w "%{url_effective}" https://github.com/bitnami-labs/sealed-secrets/releases/latest | grep -o '[^/]*\$')
|
||||||
|
curl -fsSLO "https://github.com/bitnami-labs/sealed-secrets/releases/download/\${KUBESEAL_VERSION}/kubeseal-\${KUBESEAL_VERSION#v}-linux-amd64.tar.gz"
|
||||||
|
tar -xzf "kubeseal-\${KUBESEAL_VERSION#v}-linux-amd64.tar.gz" kubeseal
|
||||||
|
\$SUDO mv kubeseal "\$INSTALL_DIR/"
|
||||||
|
rm -f "kubeseal-\${KUBESEAL_VERSION#v}-linux-amd64.tar.gz"
|
||||||
|
echo "[OK] kubeseal installed"
|
||||||
|
fi
|
||||||
|
|
||||||
# Write kubeconfig
|
# Write kubeconfig
|
||||||
mkdir -p ~/.kube
|
mkdir -p ~/.kube
|
||||||
cat > ~/.kube/config-home << 'KUBECONFIG_EOF'
|
cat > ~/.kube/config-home << 'KUBECONFIG_EOF'
|
||||||
|
|
@ -146,6 +159,15 @@ else
|
||||||
echo "[OK] kubelogin installed"
|
echo "[OK] kubelogin installed"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Install kubeseal
|
||||||
|
if command -v kubeseal &>/dev/null; then
|
||||||
|
echo "[OK] kubeseal already installed"
|
||||||
|
else
|
||||||
|
echo "[..] Installing kubeseal..."
|
||||||
|
brew install kubeseal
|
||||||
|
echo "[OK] kubeseal installed"
|
||||||
|
fi
|
||||||
|
|
||||||
# Write kubeconfig
|
# Write kubeconfig
|
||||||
mkdir -p ~/.kube
|
mkdir -p ~/.kube
|
||||||
cat > ~/.kube/config-home << 'KUBECONFIG_EOF'
|
cat > ~/.kube/config-home << 'KUBECONFIG_EOF'
|
||||||
|
|
|
||||||
46
stacks/platform/modules/sealed-secrets/main.tf
Normal file
46
stacks/platform/modules/sealed-secrets/main.tf
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
variable "tier" { type = string }
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Namespace
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
resource "kubernetes_namespace" "sealed_secrets" {
|
||||||
|
metadata {
|
||||||
|
name = "sealed-secrets"
|
||||||
|
labels = {
|
||||||
|
tier = var.tier
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# Sealed Secrets — encrypts secrets for safe git storage
|
||||||
|
# https://github.com/bitnami-labs/sealed-secrets
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
resource "helm_release" "sealed_secrets" {
|
||||||
|
namespace = kubernetes_namespace.sealed_secrets.metadata[0].name
|
||||||
|
create_namespace = false
|
||||||
|
name = "sealed-secrets"
|
||||||
|
atomic = true
|
||||||
|
timeout = 300
|
||||||
|
|
||||||
|
repository = "https://bitnami-labs.github.io/sealed-secrets"
|
||||||
|
chart = "sealed-secrets"
|
||||||
|
version = "2.18.3"
|
||||||
|
|
||||||
|
values = [yamlencode({
|
||||||
|
crds = {
|
||||||
|
create = true
|
||||||
|
}
|
||||||
|
|
||||||
|
resources = {
|
||||||
|
requests = {
|
||||||
|
cpu = "50m"
|
||||||
|
memory = "64Mi"
|
||||||
|
}
|
||||||
|
limits = {
|
||||||
|
cpu = "250m"
|
||||||
|
memory = "256Mi"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})]
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue