diff --git a/apps/vikunja/deployment.yaml b/apps/vikunja/deployment.yaml new file mode 100644 index 0000000..52a62e8 --- /dev/null +++ b/apps/vikunja/deployment.yaml @@ -0,0 +1,51 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: vikunja + namespace: vikunja +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app: vikunja + template: + metadata: + labels: + app: vikunja + spec: + securityContext: + runAsNonRoot: true + runAsUser: 1000 + fsGroup: 1000 + containers: + - name: vikunja + image: vikunja/vikunja:0.24.6 + securityContext: + allowPrivilegeEscalation: false + runAsNonRoot: true + runAsUser: 1000 + capabilities: + drop: + - ALL + ports: + - containerPort: 3456 + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + cpu: 500m + memory: 512Mi + volumeMounts: + - name: vikunja-data + mountPath: /app/vikunja/files + subPath: files + - name: vikunja-data + mountPath: /db + subPath: db + volumes: + - name: vikunja-data + persistentVolumeClaim: + claimName: vikunja-data diff --git a/apps/vikunja/kustomization.yaml b/apps/vikunja/kustomization.yaml new file mode 100644 index 0000000..fd26d01 --- /dev/null +++ b/apps/vikunja/kustomization.yaml @@ -0,0 +1,10 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - namespace.yaml + - pvc.yaml + - network-policy.yaml + - deployment.yaml + - service.yaml + - route.yaml diff --git a/apps/vikunja/namespace.yaml b/apps/vikunja/namespace.yaml new file mode 100644 index 0000000..0f6366f --- /dev/null +++ b/apps/vikunja/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: vikunja diff --git a/apps/vikunja/network-policy.yaml b/apps/vikunja/network-policy.yaml new file mode 100644 index 0000000..c6b477b --- /dev/null +++ b/apps/vikunja/network-policy.yaml @@ -0,0 +1,17 @@ +apiVersion: cilium.io/v2 +kind: CiliumNetworkPolicy +metadata: + name: allow-ingress + namespace: vikunja +spec: + endpointSelector: + matchLabels: + app: vikunja + + ingress: + - fromEntities: + - ingress + toPorts: + - ports: + - port: "3456" + protocol: TCP diff --git a/apps/vikunja/pvc.yaml b/apps/vikunja/pvc.yaml new file mode 100644 index 0000000..35927d2 --- /dev/null +++ b/apps/vikunja/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: vikunja-data + namespace: vikunja +spec: + storageClassName: nfs-retain + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi diff --git a/apps/vikunja/route.yaml b/apps/vikunja/route.yaml new file mode 100644 index 0000000..10caeef --- /dev/null +++ b/apps/vikunja/route.yaml @@ -0,0 +1,41 @@ +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: vikunja + namespace: vikunja +spec: + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: shared-edge-gateway + namespace: cilium-ingress + hostnames: + - todo.local.gwg313.xyz + - todo.gwg313.xyz + - todo.zerotier.gwg313.xyz + rules: + - matches: + - path: + type: PathPrefix + value: / + backendRefs: + - group: "" + kind: Service + name: vikunja + port: 80 + weight: 1 +--- +apiVersion: gateway.networking.k8s.io/v1beta1 +kind: ReferenceGrant +metadata: + name: allow-gateway-to-vikunja + namespace: vikunja +spec: + from: + - group: gateway.networking.k8s.io + kind: Gateway + namespace: cilium-ingress + to: + - group: "" + kind: Service + name: vikunja diff --git a/apps/vikunja/service.yaml b/apps/vikunja/service.yaml new file mode 100644 index 0000000..49efbab --- /dev/null +++ b/apps/vikunja/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: vikunja + namespace: vikunja +spec: + selector: + app: vikunja + ports: + - port: 80 + targetPort: 3456 + protocol: TCP diff --git a/management/platform-apps/kustomization.yaml b/management/platform-apps/kustomization.yaml index 1da5f99..792bfea 100644 --- a/management/platform-apps/kustomization.yaml +++ b/management/platform-apps/kustomization.yaml @@ -19,3 +19,4 @@ resources: - bytestash.yaml - stirling-pdf.yaml - soulsync.yaml + - vikunja.yaml diff --git a/management/platform-apps/vikunja.yaml b/management/platform-apps/vikunja.yaml new file mode 100644 index 0000000..1986bd7 --- /dev/null +++ b/management/platform-apps/vikunja.yaml @@ -0,0 +1,23 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: vikunja + namespace: argocd + annotations: + argoproj.io/sync-wave: "0" +spec: + project: default + source: + repoURL: https://github.com/gwg313/homelab-gitops.git + targetRevision: main + path: apps/vikunja + destination: + server: https://kubernetes.default.svc + namespace: vikunja + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + - ServerSideApply=true