apiVersion: apps/v1 kind: Deployment metadata: name: app-memos spec: replicas: 1 # Pour les bases de données type SQLite, on reste sur 1 pod pour éviter la corruption selector: matchLabels: app: notes template: metadata: labels: app: notes spec: containers: - name: memos image: neosmemo/memos:stable ports: - containerPort: 5230 volumeMounts: - name: data mountPath: /var/opt/memos # Chemin où Memos stocke sa base de données volumes: - name: data persistentVolumeClaim: claimName: pvc-notes-longhorn tolerations: - key: "node.kubernetes.io/unreachable" operator: "Exists" effect: "NoExecute" tolerationSeconds: 10 # Il s'enfuit après 10 secondes d'unreachable - key: "node.kubernetes.io/not-ready" operator: "Exists" effect: "NoExecute" tolerationSeconds: 10 --- apiVersion: v1 kind: Service metadata: name: svc-notes spec: ports: - port: 80 targetPort: 5230 # Memos écoute sur le 5230 par défaut selector: app: notes --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-notes annotations: cert-manager.io/cluster-issuer: "step-ca-issuer" traefik.ingress.kubernetes.io/router.entrypoints: websecure spec: tls: - hosts: - memo.kube.teyssier.lan secretName: memo-tls rules: - host: memo.kube.teyssier.lan http: paths: - path: / pathType: Prefix backend: service: name: svc-notes port: number: 80