k3s: Portainer CE mit übernommener Datenbank von appsrv08 (Manifest + Playbook mit Rollback BE→CE)
ci / test (push) Failing after 24s

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Robert Rapp
2026-10-15 18:45:37 +02:00
co-authored by Claude Fable 5.1
parent 26e1079f3d
commit 4d31dda0e5
2 changed files with 198 additions and 0 deletions
+95
View File
@@ -0,0 +1,95 @@
# Portainer CE im Cluster, Umzug von appsrv08 (Portainer EE 2.45.1) mit übernommener Datenbank (Benutzer,
# API-Schlüssel, Umgebungen, Stacks). Läuft auf der Dienst-VM k3s (tank, HA), Daten auf local-path dieser VM.
# Erst-Befüllung und Rollback BE→CE macht playbooks/portainer-k3s.yml aus /root/.config/knaster/portainer_data.tgz.
# Erreichbar: https://<Knoten-IP>:30779 (NodePort), von außen über den nginx auf appsrv08 (portainer.mygodel.de).
# Dieselbe Version wie auf appsrv08 (2.45.1): die Datenbank wird beim Start nicht migriert.
apiVersion: v1
kind: Namespace
metadata:
name: portainer-ce
labels:
knaster.app: portainer
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: portainer-data
namespace: portainer-ce
spec:
accessModes: [ReadWriteOnce]
storageClassName: local-path
resources:
requests:
storage: 2Gi
---
# Portainer verwaltet den eigenen Cluster über ein ServiceAccount (Umgebung „local“ wird beim ersten Start angelegt).
apiVersion: v1
kind: ServiceAccount
metadata:
name: portainer-sa-clusteradmin
namespace: portainer-ce
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: portainer-ce-crb
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: portainer-sa-clusteradmin
namespace: portainer-ce
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: portainer
namespace: portainer-ce
labels: {app: portainer-ce}
spec:
replicas: 1
strategy: {type: Recreate}
selector:
matchLabels: {app: portainer-ce}
template:
metadata:
labels: {app: portainer-ce}
spec:
serviceAccountName: portainer-sa-clusteradmin
nodeSelector:
knaster.role: control # Dienst-VM k3s: tank, HA, Replikation
containers:
- name: portainer
image: portainer/portainer-ce:2.45.1
ports:
- {name: https, containerPort: 9443}
- {name: edge, containerPort: 8000}
resources:
requests: {cpu: 50m, memory: 128Mi}
limits: {memory: 512Mi}
volumeMounts:
- {name: data, mountPath: /data}
readinessProbe:
httpGet: {path: /api/system/status, port: https, scheme: HTTPS}
periodSeconds: 10
livenessProbe:
httpGet: {path: /api/system/status, port: https, scheme: HTTPS}
periodSeconds: 30
failureThreshold: 3
volumes:
- name: data
persistentVolumeClaim: {claimName: portainer-data}
---
apiVersion: v1
kind: Service
metadata:
name: portainer
namespace: portainer-ce
labels: {app: portainer-ce}
spec:
type: NodePort
selector: {app: portainer-ce}
ports:
- {name: https, port: 9443, targetPort: https, nodePort: 30779}