apiVersion: apps/v1 kind: Deployment metadata: name: knowledge-explorer namespace: semantica labels: app.kubernetes.io/name: knowledge-explorer app.kubernetes.io/part-of: semantica spec: replicas: 2 strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 0 maxSurge: 1 selector: matchLabels: app.kubernetes.io/name: knowledge-explorer template: metadata: labels: app.kubernetes.io/name: knowledge-explorer app.kubernetes.io/part-of: semantica spec: securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault containers: - name: explorer image: semantica-knowledge-explorer:latest imagePullPolicy: IfNotPresent ports: - name: http containerPort: 8000 envFrom: - configMapRef: name: knowledge-explorer-config - secretRef: name: knowledge-explorer-secrets optional: true livenessProbe: httpGet: path: /api/health port: http initialDelaySeconds: 20 periodSeconds: 30 timeoutSeconds: 5 failureThreshold: 3 readinessProbe: httpGet: path: /api/health port: http initialDelaySeconds: 5 periodSeconds: 10 timeoutSeconds: 3 failureThreshold: 3 resources: requests: cpu: 100m memory: 256Mi limits: cpu: 500m memory: 512Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL