2026-07-11 19:17:54 -07:00
|
|
|
# k8s/portainer/portainer-values.yaml
|
|
|
|
|
# Portainer — web UI for browsing cluster workloads, exec-ing into pods,
|
|
|
|
|
# and viewing logs without kubectl. Operator-only access (ClusterIP + port-forward).
|
|
|
|
|
#
|
|
|
|
|
# Node failure behaviour:
|
|
|
|
|
# Portainer is a Deployment (not StatefulSet), so K8s auto-evicts and
|
|
|
|
|
# reschedules it ~5 min after a node becomes unreachable. Longhorn
|
|
|
|
|
# reattaches the PVC on the new node in ~1-2 min. Worst case: ~7-10 min.
|
|
|
|
|
#
|
|
|
|
|
# To cut that down: in Longhorn UI → Settings set
|
|
|
|
|
# nodeDownPodDeletionPolicy = delete-deployment-pod
|
|
|
|
|
# Longhorn will force-delete the stuck pod immediately when the node is
|
|
|
|
|
# fenced rather than waiting for Kubernetes' eviction timeout.
|
|
|
|
|
|
|
|
|
|
# ── Service ───────────────────────────────────────────────────────────────────
|
|
|
|
|
# ClusterIP — no external exposure. Access via:
|
|
|
|
|
# kubectl -n dashboard port-forward svc/portainer 9000:9000
|
|
|
|
|
# Portainer holds cluster-admin credentials; never expose as LoadBalancer.
|
|
|
|
|
service:
|
|
|
|
|
type: ClusterIP
|
|
|
|
|
|
|
|
|
|
# ── TLS ───────────────────────────────────────────────────────────────────────
|
|
|
|
|
# Portainer by default redirects HTTP → HTTPS using a self-signed cert.
|
|
|
|
|
# force: false disables the redirect so plain HTTP over port-forward works
|
|
|
|
|
# without browser cert warnings. TLS is terminated at the ingress layer
|
|
|
|
|
# if/when an ingress rule is added.
|
|
|
|
|
tls:
|
|
|
|
|
force: false
|
|
|
|
|
|
|
|
|
|
# ── Persistence ───────────────────────────────────────────────────────────────
|
|
|
|
|
# Stores Portainer's own config: environment registrations, user accounts,
|
|
|
|
|
# stack definitions, and access control settings. Longhorn provides the
|
|
|
|
|
# RWO block volume. 10Gi is generous for config data but cheap on Longhorn.
|
|
|
|
|
persistence:
|
|
|
|
|
enabled: true
|
2026-08-11 14:50:39 -07:00
|
|
|
storageClass: "longhorn"
|
2026-07-11 19:17:54 -07:00
|
|
|
size: 10Gi
|
|
|
|
|
|
|
|
|
|
resources:
|
|
|
|
|
requests:
|
|
|
|
|
cpu: 100m
|
|
|
|
|
memory: 128Mi
|
|
|
|
|
limits:
|
|
|
|
|
cpu: 500m
|
|
|
|
|
memory: 512Mi
|
|
|
|
|
|
|
|
|
|
# ── Scheduling ────────────────────────────────────────────────────────────────
|
|
|
|
|
# Allow scheduling on talos-cp-1 (carries NoSchedule taint) so Portainer
|
|
|
|
|
# keeps running even when the worker node is down.
|
|
|
|
|
tolerations:
|
|
|
|
|
- key: node-role.kubernetes.io/control-plane
|
|
|
|
|
operator: Exists
|
|
|
|
|
effect: NoSchedule
|
2026-07-20 23:51:46 -07:00
|
|
|
|
2026-08-11 16:12:13 -07:00
|
|
|
# Pin to az-b (talos-cp-2) — sole Longhorn storage node (dedicated disks).
|
|
|
|
|
# Its RWO PVC can only attach there; without this the pod may land on
|
|
|
|
|
# cp-1/cp-3 and fail to mount.
|
2026-07-20 23:51:46 -07:00
|
|
|
nodeSelector:
|
2026-08-11 16:12:13 -07:00
|
|
|
topology.kubernetes.io/zone: az-b
|