Files
poimen-memory/k8s/app/obsidian.yaml
T

173 lines
3.7 KiB
YAML
Raw Normal View History

---
# 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
securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 1000
containers:
- name: obsidian-server
image: ppatlabs/obsidian:latest
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8080
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: obsidian-config
mountPath: /config
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 10
periodSeconds: 10
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 5
periodSeconds: 5
volumes:
- name: vault
persistentVolumeClaim:
claimName: obsidian-vault
- name: obsidian-config
configMap:
name: obsidian-config
---
# 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: local-path
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: http
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
---
# ConfigMap for Obsidian configuration
apiVersion: v1
kind: ConfigMap
metadata:
name: obsidian-config
namespace: poimen
data:
obsidian.conf: |
# Obsidian Server Configuration
# Enable API endpoints for vault operations
enableApi: true
# Enable sync with external services
enableSync: true
# API settings
apiPath: /api
apiPort: 8080
vaultPath: /vault
restApiEnabled: true
---
# 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