55 lines
2.5 KiB
Bash
55 lines
2.5 KiB
Bash
#!/usr/bin/env bash
|
|||
|
|
# portainer/bootstrap.sh
|
||
|
|
# Deploys Portainer CE into the dashboard namespace.
|
||
|
|
# No credentials needed — Portainer prompts you to create an admin account
|
||
|
|
# on first browser visit.
|
||
|
|
#
|
||
|
|
# Prerequisites:
|
||
|
|
# - kubectl configured (KUBECONFIG pointing to cluster-config/kubeconfig)
|
||
|
|
# - helm >= 3.x
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
||
|
|
KUBECONFIG="${KUBECONFIG:-${REPO_ROOT}/cluster-config/kubeconfig}"
|
||
|
|
export KUBECONFIG
|
||
|
|
|
||
|
|
# ── Namespace ─────────────────────────────────────────────────────────────────
|
||
|
|
echo "==> Creating dashboard namespace..."
|
||
|
|
kubectl create namespace dashboard --dry-run=client -o yaml | kubectl apply -f -
|
||
|
|
kubectl label namespace dashboard \
|
||
|
|
pod-security.kubernetes.io/enforce=privileged \
|
||
|
|
pod-security.kubernetes.io/enforce-version=latest \
|
||
|
|
--overwrite
|
||
|
|
|
||
|
|
# ── Helm repo ─────────────────────────────────────────────────────────────────
|
||
|
|
echo "==> Adding Portainer Helm repo..."
|
||
|
|
helm repo add portainer https://portainer.github.io/k8s/
|
||
|
|
helm repo update portainer
|
||
|
|
|
||
|
|
# ── Portainer ─────────────────────────────────────────────────────────────────
|
||
|
|
echo "==> Installing Portainer..."
|
||
|
|
helm upgrade --install portainer portainer/portainer \
|
||
|
|
--namespace dashboard \
|
||
|
|
--values "${SCRIPT_DIR}/portainer-values.yaml" \
|
||
|
|
--wait \
|
||
|
|
--timeout 5m
|
||
|
|
|
||
|
|
echo "==> Waiting for Portainer Deployment to be ready..."
|
||
|
|
kubectl rollout status deployment/portainer -n dashboard --timeout=120s
|
||
|
|
|
||
|
|
# ── Done ──────────────────────────────────────────────────────────────────────
|
||
|
|
echo ""
|
||
|
|
echo "==> Portainer is up."
|
||
|
|
echo ""
|
||
|
|
echo "Access Portainer UI:"
|
||
|
|
echo " make pf-portainer"
|
||
|
|
echo " http://localhost:9000"
|
||
|
|
echo ""
|
||
|
|
echo "First-time setup: Portainer will prompt you to create an admin account."
|
||
|
|
echo "Choose 'Manage the local Kubernetes environment' when asked."
|
||
|
|
echo ""
|
||
|
|
echo "Node failure resilience tip:"
|
||
|
|
echo " For faster PVC failover on hard node failure, enable in Longhorn UI → Settings:"
|
||
|
|
echo " nodeDownPodDeletionPolicy = delete-deployment-pod"
|