apiVersion: apps/v1 kind: Deployment metadata: name: writefreely namespace: writefreely spec: replicas: 1 strategy: type: Recreate selector: matchLabels: component: web template: metadata: labels: component: web spec: securityContext: runAsUser: 0 runAsNonRoot: false seccompProfile: type: RuntimeDefault containers: - name: writefreely image: jrasanen/writefreely:latest ports: - name: http containerPort: 8080 protocol: TCP env: - name: WRITEFREELY_HOST value: https://{{ .domain }} - name: WRITEFREELY_SITE_NAME value: {{ .siteName }} - name: WRITEFREELY_BIND_PORT value: "8080" - name: WRITEFREELY_DATABASE_DATABASE value: mysql - name: WRITEFREELY_DATABASE_HOST value: {{ .db.host }} - name: WRITEFREELY_DATABASE_PORT value: "{{ .db.port }}" - name: WRITEFREELY_DATABASE_NAME value: {{ .db.name }} - name: WRITEFREELY_DATABASE_USERNAME value: {{ .db.user }} - name: WRITEFREELY_DATABASE_PASSWORD valueFrom: secretKeyRef: name: writefreely-secrets key: dbPassword - name: WRITEFREELY_ADMIN_USER value: {{ .adminUser }} - name: WRITEFREELY_ADMIN_PASSWORD valueFrom: secretKeyRef: name: writefreely-secrets key: adminPassword - name: WRITEFREELY_FEDERATION value: "true" - name: WRITEFREELY_OPEN_REGISTRATION value: "false" resources: limits: cpu: 500m ephemeral-storage: 1Gi memory: 512Mi requests: cpu: 50m ephemeral-storage: 50Mi memory: 128Mi volumeMounts: - name: writefreely-data mountPath: /data livenessProbe: httpGet: path: / port: 8080 initialDelaySeconds: 60 timeoutSeconds: 5 periodSeconds: 15 failureThreshold: 6 readinessProbe: httpGet: path: / port: 8080 initialDelaySeconds: 30 timeoutSeconds: 3 periodSeconds: 10 failureThreshold: 3 securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: false volumes: - name: writefreely-data persistentVolumeClaim: claimName: writefreely-data restartPolicy: Always