apiVersion: v1 kind: Namespace metadata: name: kereru-forms --- apiVersion: v1 kind: ConfigMap metadata: name: kereru-forms-config namespace: kereru-forms data: KERERU_LOG_LEVEL: info KERERU_LOG_FORMAT: json KERERU_ENVIRONMENT: production KERERU_LISTEN_ADDR: 0.0.0.0 KERERU_PORT: "8080" KERERU_DB_DRIVER: sqlite KERERU_DB_DSN: "file:/data/kereru.db?_pragma=busy_timeout(5000)&_pragma=foreign_keys(1)" KERERU_STATIC_DIR: /app/static KERERU_CORS_ORIGINS: "*" KERERU_TELEMETRY_ENABLED: "false" OTEL_EXPORTER_OTLP_ENDPOINT: "http://otel-collector.observability.svc.cluster.local:4318" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: kereru-forms-data namespace: kereru-forms spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: kereru-forms namespace: kereru-forms labels: app: kereru-forms spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app: kereru-forms template: metadata: labels: app: kereru-forms spec: securityContext: runAsNonRoot: true runAsUser: 10001 runAsGroup: 10001 fsGroup: 10001 fsGroupChangePolicy: OnRootMismatch containers: - name: kereru-forms image: kereru-forms:1.0.0 imagePullPolicy: IfNotPresent ports: - name: http containerPort: 8080 envFrom: - configMapRef: name: kereru-forms-config volumeMounts: - name: data mountPath: /data - name: tmp mountPath: /tmp readinessProbe: httpGet: path: /health port: http initialDelaySeconds: 5 periodSeconds: 10 livenessProbe: httpGet: path: /health port: http initialDelaySeconds: 15 periodSeconds: 20 resources: requests: cpu: 50m memory: 64Mi limits: cpu: 500m memory: 256Mi securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true capabilities: drop: ["ALL"] volumes: - name: data persistentVolumeClaim: claimName: kereru-forms-data - name: tmp emptyDir: {} --- apiVersion: v1 kind: Service metadata: name: kereru-forms namespace: kereru-forms spec: selector: app: kereru-forms ports: - name: http port: 80 targetPort: http --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: kereru-forms namespace: kereru-forms annotations: kubernetes.io/ingress.class: nginx spec: rules: - host: forms.example.com http: paths: - path: / pathType: Prefix backend: service: name: kereru-forms port: name: http