--- # Obsidian server deployment # Serves local vault with web UI and API apiVersion: apps/v1 kind: Deployment metadata: name: obsidian-server namespace: poimen labels: app.kubernetes.io/name: obsidian-server app.kubernetes.io/part-of: poimen-memory spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: obsidian-server template: metadata: labels: app.kubernetes.io/name: obsidian-server app.kubernetes.io/part-of: poimen-memory spec: serviceAccountName: obsidian-server containers: - name: obsidian-server image: ppatlabs/obsidian:latest imagePullPolicy: IfNotPresent ports: - name: http containerPort: 27124 protocol: TCP env: - name: VAULT_NAME value: poimen-vault - name: VAULT_PATH value: /vault - name: REST_API_ENABLED value: "true" - name: REST_API_PORT value: "8080" volumeMounts: - name: vault mountPath: /vault - name: config mountPath: /config resources: requests: cpu: 100m memory: 256Mi limits: cpu: 500m memory: 512Mi livenessProbe: httpGet: path: / port: http scheme: HTTPS initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 5 readinessProbe: httpGet: path: / port: http scheme: HTTPS initialDelaySeconds: 15 periodSeconds: 5 timeoutSeconds: 5 volumes: - name: vault persistentVolumeClaim: claimName: obsidian-vault - name: config emptyDir: {} --- # PVC for vault storage apiVersion: v1 kind: PersistentVolumeClaim metadata: name: obsidian-vault namespace: poimen labels: app.kubernetes.io/name: obsidian-server spec: accessModes: - ReadWriteOnce storageClassName: longhorn resources: requests: storage: 10Gi --- # Service for Obsidian server apiVersion: v1 kind: Service metadata: name: obsidian-server namespace: poimen labels: app.kubernetes.io/name: obsidian-server spec: type: ClusterIP ports: - name: http port: 80 targetPort: 27124 protocol: TCP selector: app.kubernetes.io/name: obsidian-server --- # ServiceAccount for Obsidian apiVersion: v1 kind: ServiceAccount metadata: name: obsidian-server namespace: poimen labels: app.kubernetes.io/name: obsidian-server --- # Ingress for external access apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: obsidian-server namespace: poimen annotations: cert-manager.io/cluster-issuer: letsencrypt-prod nginx.ingress.kubernetes.io/auth-type: bearer nginx.ingress.kubernetes.io/auth-url: http://authentik-server.iam.svc.cluster.local/application/o/oauth2/token/ spec: ingressClassName: nginx tls: - hosts: - vault.riotpiao.com secretName: obsidian-tls rules: - host: vault.riotpiao.com http: paths: - path: / pathType: Prefix backend: service: name: obsidian-server port: number: 80