--- # Source: vikunja/charts/postgresql/templates/secrets.yaml apiVersion: v1 kind: Secret metadata: name: test1-postgresql namespace: "testing" labels: app.kubernetes.io/name: postgresql helm.sh/chart: postgresql-12.1.9 app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm type: Opaque data: postgres-password: "Y3czU2RLbTFIYg==" password: "dmlrdW5qYQ==" # We don't auto-generate LDAP password when it's not provided as we do for other passwords --- # Source: vikunja/templates/api.yaml apiVersion: v1 kind: ConfigMap metadata: name: test1-api-config labels: app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: api app.kubernetes.io/version: 0.21.0 helm.sh/chart: vikunja-0.4.1 data: config.yml: |- auth: openid: # https://vikunja.io/docs/config-options/#openid # Example: https://github.com/go-vikunja/api/blob/main/config.yml.sample#L289-L312 enabled: true redirecturl: "https://do-test.${domain}/auth/openid/" providers: - name: Stackspin authurl: "https://sso.${domain}/" clientid: "${client_id}" clientsecret: "${client_secret}" service: frontendurl: "https://do-test.${domain}" motd: "This is a test instance, do not use for production data as it can vanish without notice! Use Stackspin login, as usual." timezone: "CET" JWTSecret: "${jwt}" database: type: postgres host: vikunja-test-postgresql password: "${postgresql_password}" log: path: "/app/vikunja" http: stdout database: stderr databaselevel: debug defaultsettings: avatar_provider: gravatar discoverable_by_name: true discoverable_by_email: true week_start: 1 timezone: CET # TODO default_project_id --- # Source: vikunja/templates/api.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test1-api-data labels: app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: api app.kubernetes.io/version: 0.21.0 helm.sh/chart: vikunja-0.4.1 annotations: spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "10Gi" --- # Source: vikunja/templates/typesense.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test1-typesense-data labels: app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: typesense app.kubernetes.io/version: 0.21.0 helm.sh/chart: vikunja-0.4.1 annotations: spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "1Gi" --- # Source: vikunja/charts/postgresql/templates/primary/svc-headless.yaml apiVersion: v1 kind: Service metadata: name: test1-postgresql-hl namespace: "testing" labels: app.kubernetes.io/name: postgresql helm.sh/chart: postgresql-12.1.9 app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: primary # Use this annotation in addition to the actual publishNotReadyAddresses # field below because the annotation will stop being respected soon but the # field is broken in some versions of Kubernetes: # https://github.com/kubernetes/kubernetes/issues/58662 service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" spec: type: ClusterIP clusterIP: None # We want all pods in the StatefulSet to have their addresses published for # the sake of the other Postgresql pods even before they're ready, since they # have to be able to talk to each other in order to become ready. publishNotReadyAddresses: true ports: - name: tcp-postgresql port: 5432 targetPort: tcp-postgresql selector: app.kubernetes.io/name: postgresql app.kubernetes.io/instance: test1 app.kubernetes.io/component: primary --- # Source: vikunja/charts/postgresql/templates/primary/svc.yaml apiVersion: v1 kind: Service metadata: name: test1-postgresql namespace: "testing" labels: app.kubernetes.io/name: postgresql helm.sh/chart: postgresql-12.1.9 app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: primary annotations: spec: type: ClusterIP sessionAffinity: None ports: - name: tcp-postgresql port: 5432 targetPort: tcp-postgresql nodePort: null selector: app.kubernetes.io/name: postgresql app.kubernetes.io/instance: test1 app.kubernetes.io/component: primary --- # Source: vikunja/templates/api.yaml apiVersion: v1 kind: Service metadata: name: test1-api labels: app.kubernetes.io/service: test1-api app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: api app.kubernetes.io/version: 0.21.0 helm.sh/chart: vikunja-0.4.1 annotations: spec: type: ClusterIP ports: - port: 3456 targetPort: http protocol: TCP name: http selector: app.kubernetes.io/instance: test1 app.kubernetes.io/name: api --- # Source: vikunja/templates/frontend.yaml apiVersion: v1 kind: Service metadata: name: test1-frontend labels: app.kubernetes.io/service: test1-frontend app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: frontend app.kubernetes.io/version: 0.21.0 helm.sh/chart: vikunja-0.4.1 annotations: spec: type: ClusterIP ports: - port: 80 targetPort: http protocol: TCP name: http selector: app.kubernetes.io/instance: test1 app.kubernetes.io/name: frontend --- # Source: vikunja/templates/typesense.yaml apiVersion: v1 kind: Service metadata: name: test1-typesense labels: app.kubernetes.io/service: test1-typesense app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: typesense app.kubernetes.io/version: 0.21.0 helm.sh/chart: vikunja-0.4.1 annotations: spec: type: ClusterIP ports: - port: 8108 targetPort: http protocol: TCP name: http selector: app.kubernetes.io/instance: test1 app.kubernetes.io/name: typesense --- # Source: vikunja/templates/api.yaml apiVersion: apps/v1 kind: Deployment metadata: name: test1-api labels: app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: api app.kubernetes.io/version: 0.21.0 helm.sh/chart: vikunja-0.4.1 spec: revisionHistoryLimit: 3 replicas: 1 strategy: type: Recreate selector: matchLabels: app.kubernetes.io/name: api app.kubernetes.io/instance: test1 template: metadata: annotations: checksum/config: 72d3bfff836219177cab2ec2f94a8efc6e9c1ad2f80be37b95406e8b5524e06b labels: app.kubernetes.io/name: api app.kubernetes.io/instance: test1 spec: serviceAccountName: default automountServiceAccountToken: true dnsPolicy: ClusterFirst enableServiceLinks: true containers: - name: test1-api image: vikunja/api:unstable imagePullPolicy: Always env: - name: VIKUNJA_DATABASE_NAME value: vikunja - name: VIKUNJA_DATABASE_PASSWORD value: vikunja - name: VIKUNJA_DATABASE_TYPE value: postgres - name: VIKUNJA_DATABASE_USER value: vikunja - name: VIKUNJA_TYPESENSE_ENABLED value: "true" ports: - name: http containerPort: 3456 protocol: TCP volumeMounts: - name: config mountPath: /etc/vikunja/config.yml subPath: config.yml - name: data mountPath: /app/vikunja/files livenessProbe: failureThreshold: 3 httpGet: path: /api/v1/info port: http initialDelaySeconds: 0 periodSeconds: 10 timeoutSeconds: 1 readinessProbe: failureThreshold: 3 httpGet: path: /api/v1/info port: http initialDelaySeconds: 0 periodSeconds: 10 timeoutSeconds: 1 volumes: - name: config configMap: name: test1-api-config - name: data persistentVolumeClaim: claimName: test1-api-data --- # Source: vikunja/templates/frontend.yaml apiVersion: apps/v1 kind: Deployment metadata: name: test1-frontend labels: app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: frontend app.kubernetes.io/version: 0.21.0 helm.sh/chart: vikunja-0.4.1 spec: revisionHistoryLimit: 3 replicas: 1 strategy: type: Recreate selector: matchLabels: app.kubernetes.io/name: frontend app.kubernetes.io/instance: test1 template: metadata: labels: app.kubernetes.io/name: frontend app.kubernetes.io/instance: test1 spec: serviceAccountName: default automountServiceAccountToken: true dnsPolicy: ClusterFirst enableServiceLinks: true containers: - name: test1-frontend image: vikunja/frontend:unstable imagePullPolicy: Always env: - name: VIKUNJA_API_URL value: http://do-test.${domain} ports: - name: http containerPort: 80 protocol: TCP livenessProbe: failureThreshold: 3 initialDelaySeconds: 0 periodSeconds: 10 tcpSocket: port: 80 timeoutSeconds: 1 readinessProbe: failureThreshold: 3 initialDelaySeconds: 0 periodSeconds: 10 tcpSocket: port: 80 timeoutSeconds: 1 startupProbe: failureThreshold: 30 initialDelaySeconds: 0 periodSeconds: 5 tcpSocket: port: 80 timeoutSeconds: 1 --- # Source: vikunja/templates/typesense.yaml apiVersion: apps/v1 kind: Deployment metadata: name: test1-typesense labels: app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: typesense app.kubernetes.io/version: 0.21.0 helm.sh/chart: vikunja-0.4.1 spec: revisionHistoryLimit: 3 replicas: 1 strategy: type: Recreate selector: matchLabels: app.kubernetes.io/name: typesense app.kubernetes.io/instance: test1 template: metadata: labels: app.kubernetes.io/name: typesense app.kubernetes.io/instance: test1 spec: serviceAccountName: default automountServiceAccountToken: true dnsPolicy: ClusterFirst enableServiceLinks: true containers: - name: test1-typesense image: docker.io/typesense/typesense:0.25.1 imagePullPolicy: IfNotPresent env: - name: TYPESENSE_API_KEY value: typesense - name: TYPESENSE_DATA_DIR value: /data ports: - name: http containerPort: 8108 protocol: TCP volumeMounts: - name: data mountPath: /data livenessProbe: failureThreshold: 3 httpGet: path: /health port: http initialDelaySeconds: 0 periodSeconds: 10 timeoutSeconds: 1 readinessProbe: failureThreshold: 3 httpGet: path: /health port: http initialDelaySeconds: 0 periodSeconds: 10 timeoutSeconds: 1 volumes: - name: data persistentVolumeClaim: claimName: test1-typesense-data --- # Source: vikunja/charts/postgresql/templates/primary/statefulset.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: test1-postgresql namespace: "testing" labels: app.kubernetes.io/name: postgresql helm.sh/chart: postgresql-12.1.9 app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: primary annotations: spec: replicas: 1 serviceName: test1-postgresql-hl updateStrategy: rollingUpdate: {} type: RollingUpdate selector: matchLabels: app.kubernetes.io/name: postgresql app.kubernetes.io/instance: test1 app.kubernetes.io/component: primary template: metadata: name: test1-postgresql labels: app.kubernetes.io/name: postgresql helm.sh/chart: postgresql-12.1.9 app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/component: primary annotations: spec: serviceAccountName: default affinity: podAffinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchLabels: app.kubernetes.io/name: postgresql app.kubernetes.io/instance: test1 app.kubernetes.io/component: primary topologyKey: kubernetes.io/hostname weight: 1 nodeAffinity: securityContext: fsGroup: 1001 hostNetwork: false hostIPC: false initContainers: containers: - name: postgresql image: docker.io/bitnami/postgresql:15.1.0-debian-11-r20 imagePullPolicy: "IfNotPresent" securityContext: runAsUser: 1001 env: - name: BITNAMI_DEBUG value: "false" - name: POSTGRESQL_PORT_NUMBER value: "5432" - name: POSTGRESQL_VOLUME_DIR value: "/bitnami/postgresql" - name: PGDATA value: "/bitnami/postgresql/data" # Authentication - name: POSTGRES_USER value: "vikunja" - name: POSTGRES_POSTGRES_PASSWORD valueFrom: secretKeyRef: name: test1-postgresql key: postgres-password - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: test1-postgresql key: password - name: POSTGRES_DB value: "vikunja" # Replication # Initdb # Standby # LDAP - name: POSTGRESQL_ENABLE_LDAP value: "no" # TLS - name: POSTGRESQL_ENABLE_TLS value: "no" # Audit - name: POSTGRESQL_LOG_HOSTNAME value: "false" - name: POSTGRESQL_LOG_CONNECTIONS value: "false" - name: POSTGRESQL_LOG_DISCONNECTIONS value: "false" - name: POSTGRESQL_PGAUDIT_LOG_CATALOG value: "off" # Others - name: POSTGRESQL_CLIENT_MIN_MESSAGES value: "error" - name: POSTGRESQL_SHARED_PRELOAD_LIBRARIES value: "pgaudit" ports: - name: tcp-postgresql containerPort: 5432 livenessProbe: failureThreshold: 6 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 exec: command: - /bin/sh - -c - exec pg_isready -U "vikunja" -d "dbname=vikunja" -h 127.0.0.1 -p 5432 readinessProbe: failureThreshold: 6 initialDelaySeconds: 5 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 exec: command: - /bin/sh - -c - -e - | exec pg_isready -U "vikunja" -d "dbname=vikunja" -h 127.0.0.1 -p 5432 [ -f /opt/bitnami/postgresql/tmp/.initialized ] || [ -f /bitnami/postgresql/.initialized ] resources: limits: {} requests: cpu: 250m memory: 256Mi volumeMounts: - name: dshm mountPath: /dev/shm - name: data mountPath: /bitnami/postgresql volumes: - name: dshm emptyDir: medium: Memory volumeClaimTemplates: - metadata: name: data spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "8Gi" --- # Source: vikunja/templates/api.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test1-api labels: app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: api app.kubernetes.io/version: 0.21.0 helm.sh/chart: vikunja-0.4.1 annotations: kubernetes.io/tls-acme: "true" nginx.ingress.kubernetes.io/proxy-body-size: "0" spec: tls: - hosts: - "do-test.${domain}" secretName: "vikunja-test-tls" rules: - host: "do-test.${domain}" http: paths: - path: "/" pathType: Prefix backend: service: name: test1-api port: number: 3456 --- # Source: vikunja/templates/frontend.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test1-frontend labels: app.kubernetes.io/instance: test1 app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: frontend app.kubernetes.io/version: 0.21.0 helm.sh/chart: vikunja-0.4.1 annotations: kubernetes.io/tls-acme: "true" nginx.ingress.kubernetes.io/proxy-body-size: "0" spec: tls: - hosts: - "do-test.${domain}" secretName: "vikunja-test-tls" rules: - host: "do-test.${domain}" http: paths: - path: "/" pathType: Prefix backend: service: name: test1-frontend port: number: 80