# Applique aussi beszel-namespace.yml et beszel-agent-secret.yml (avant celui-ci). apiVersion: apps/v1 kind: DaemonSet metadata: name: beszel-agent namespace: monitoring labels: app: beszel-agent spec: selector: matchLabels: app: beszel-agent updateStrategy: type: RollingUpdate rollingUpdate: maxUnavailable: 1 template: metadata: labels: app: beszel-agent spec: hostNetwork: true dnsPolicy: ClusterFirstWithHostNet tolerations: - effect: NoSchedule key: node-role.kubernetes.io/master operator: Exists - effect: NoSchedule key: node-role.kubernetes.io/control-plane operator: Exists # Niveau pod : s'applique à tous les containers (ici un seul). securityContext: runAsNonRoot: true runAsUser: 101 runAsGroup: 101 fsGroup: 101 seccompProfile: type: RuntimeDefault containers: - name: beszel-agent image: henrygd/beszel-agent:latest imagePullPolicy: Always envFrom: - secretRef: name: beszel-agent-hub env: - name: LISTEN value: "10002" - name: SYSTEM_NAME valueFrom: fieldRef: fieldPath: spec.nodeName volumeMounts: - name: data mountPath: /var/lib/beszel-agent # Filet de sécurité pour readOnlyRootFilesystem : couvre d'éventuelles # écritures temporaires (non documentées) sans réouvrir tout le rootfs. - name: tmp mountPath: /tmp resources: requests: cpu: 10m memory: 16Mi limits: cpu: 50m memory: 32Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: [ALL] # Inféré (pas de doc officielle confirmant l'absence d'écriture # ailleurs) : le seul chemin persistant documenté par le projet # est /var/lib/beszel-agent (déjà monté ci-dessous), ce qui # suggère que c'est le seul état écrit sur disque (ex. clé hôte # SSH). À VÉRIFIER après rollout (kubectl logs -n monitoring # -l app=beszel-agent) — si le pod crash-loop ou que le Hub ne # voit plus l'agent, repasser cette valeur à false. readOnlyRootFilesystem: true volumes: - name: data hostPath: path: /var/lib/beszel-agent type: DirectoryOrCreate - name: tmp emptyDir: {} # - name: docker-sock # hostPath: # path: /var/run/docker.sock # type: Socket