From a4fe0a7fe48ba3253bb27f6825c2476dac1ebff8 Mon Sep 17 00:00:00 2001 From: Remy Moll <me@moll.re> Date: Tue, 16 Apr 2024 12:43:20 +0200 Subject: [PATCH] add homepage as a deployment --- apps/homepage/configmap.yaml | 98 +++++++++++++++++++ apps/homepage/deployment.yaml | 64 ++++++++++++ apps/homepage/ingress.yaml | 16 +++ apps/homepage/kustomization.yaml | 17 ++++ apps/homepage/namespace.yaml | 4 + apps/homepage/service.yaml | 15 +++ apps/rss/namespace.yaml | 2 +- kluster-deployments/homepage/application.yaml | 19 ++++ kluster-deployments/kustomization.yaml | 1 + kluster-deployments/pg-ha/application.yaml | 4 +- 10 files changed, 237 insertions(+), 3 deletions(-) create mode 100644 apps/homepage/configmap.yaml create mode 100644 apps/homepage/deployment.yaml create mode 100644 apps/homepage/ingress.yaml create mode 100644 apps/homepage/kustomization.yaml create mode 100644 apps/homepage/namespace.yaml create mode 100644 apps/homepage/service.yaml create mode 100644 kluster-deployments/homepage/application.yaml diff --git a/apps/homepage/configmap.yaml b/apps/homepage/configmap.yaml new file mode 100644 index 0000000..e267db2 --- /dev/null +++ b/apps/homepage/configmap.yaml @@ -0,0 +1,98 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: config + labels: + app.kubernetes.io/name: homepage +data: + kubernetes.yaml: "" #| + # mode: cluster + settings.yaml: | + title: "Homepage" + background: https://images.unsplash.com/photo-1547327132-5d20850c62b5?q=80&w=3870&auto=format&fit=crop + cardBlur: sm + #settings.yaml: | + # providers: + # longhorn: + # url: https://longhorn.my.network + custom.css: "" + custom.js: "" + bookmarks.yaml: | + - Developer: + - Github: + - abbr: GH + href: https://github.com/moll-re + services.yaml: | + - Media: + - Jellyfin backend: + href: https://media-backend.kluster.moll.re + ping: media-backend.kluster.moll.re + - Jellyfin vue: + href: https://media.kluster.moll.re + ping: media.kluster.moll.re + - Immich: + href: https://immich.kluster.moll.re + ping: immich.kluster.moll.re + + - Productivity: + - OwnCloud: + href: https://ocis.kluster.moll.re + ping: ocis.kluster.moll.re + - ToDo: + href: https://todos.kluster.moll.re + ping: todos.kluster.moll.re + - Finance: + href: https://finance.kluster.moll.re + ping: finance.kluster.moll.re + + - Home: + - Home Assistant: + href: https://home.kluster.moll.re + ping: home.kluster.moll.re + - Grafana: + href: https://grafana.kluster.moll.re + ping: grafana.kluster.moll.re + - Recipes: + href: https://recipes.kluster.moll.re + ping: recipes.kluster.moll.re + + - Infra: + - Gitea: + href: https://git.kluster.moll.re + ping: git.kluster.moll.re + - ArgoCD: + href: https://argocd.kluster.moll.re + ping: argocd.kluster.moll.re + + widgets.yaml: | + # - kubernetes: + # cluster: + # show: true + # cpu: true + # memory: true + # showLabel: true + # label: "cluster" + # nodes: + # show: true + # cpu: true + # memory: true + # showLabel: true + - search: + provider: duckduckgo + - openmeteo: + label: Zürich # optional + latitude: 47.24236 + longitude: 8.30439 + units: metric # or imperial + cache: 30 # Time in minutes to cache API responses, to stay within limits + format: # optional, Intl.NumberFormat options + maximumFractionDigits: 1 + - datetime: + locale: de + format: + dateStyle: long + timeStyle: short + - adguard: + url: http://adguard-home-web.adguard-home:3000 + + docker.yaml: "" \ No newline at end of file diff --git a/apps/homepage/deployment.yaml b/apps/homepage/deployment.yaml new file mode 100644 index 0000000..3506dad --- /dev/null +++ b/apps/homepage/deployment.yaml @@ -0,0 +1,64 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: homepage + labels: + app.kubernetes.io/name: homepage +spec: + revisionHistoryLimit: 3 + replicas: 1 + strategy: + type: RollingUpdate + selector: + matchLabels: + app.kubernetes.io/name: homepage + template: + metadata: + labels: + app.kubernetes.io/name: homepage + spec: + # serviceAccountName: homepage + # automountServiceAccountToken: true + dnsPolicy: ClusterFirst + # enableServiceLinks: true + containers: + - name: homepage + image: homepage + imagePullPolicy: Always + ports: + - name: http + containerPort: 3000 + protocol: TCP + volumeMounts: + - mountPath: /app/config/custom.js + name: config + subPath: custom.js + - mountPath: /app/config/custom.css + name: config + subPath: custom.css + - mountPath: /app/config/bookmarks.yaml + name: config + subPath: bookmarks.yaml + - mountPath: /app/config/docker.yaml + name: config + subPath: docker.yaml + - mountPath: /app/config/kubernetes.yaml + name: config + subPath: kubernetes.yaml + - mountPath: /app/config/services.yaml + name: config + subPath: services.yaml + - mountPath: /app/config/settings.yaml + name: config + subPath: settings.yaml + - mountPath: /app/config/widgets.yaml + name: config + subPath: widgets.yaml + - mountPath: /app/config/logs + name: logs + volumes: + - name: config + configMap: + name: config + - name: logs + emptyDir: {} \ No newline at end of file diff --git a/apps/homepage/ingress.yaml b/apps/homepage/ingress.yaml new file mode 100644 index 0000000..6e3c543 --- /dev/null +++ b/apps/homepage/ingress.yaml @@ -0,0 +1,16 @@ +apiVersion: traefik.io/v1alpha1 +kind: IngressRoute +metadata: + name: homepage-ingressroute + +spec: + entryPoints: + - websecure + routes: + - match: Host(`start.kluster.moll.re`) + kind: Rule + services: + - name: homepage-web + port: 3000 + tls: + certResolver: default-tls diff --git a/apps/homepage/kustomization.yaml b/apps/homepage/kustomization.yaml new file mode 100644 index 0000000..a38ace0 --- /dev/null +++ b/apps/homepage/kustomization.yaml @@ -0,0 +1,17 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +namespace: homepage + +resources: + - namespace.yaml + - deployment.yaml + - service.yaml + - configmap.yaml + - ingress.yaml + + +images: + - name: homepage + newName: ghcr.io/gethomepage/homepage + newTag: v0.8.11 diff --git a/apps/homepage/namespace.yaml b/apps/homepage/namespace.yaml new file mode 100644 index 0000000..0a074bd --- /dev/null +++ b/apps/homepage/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: placeholder diff --git a/apps/homepage/service.yaml b/apps/homepage/service.yaml new file mode 100644 index 0000000..0d65595 --- /dev/null +++ b/apps/homepage/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: homepage-web + labels: + app.kubernetes.io/name: homepage +spec: + type: ClusterIP + ports: + - port: 3000 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: homepage \ No newline at end of file diff --git a/apps/rss/namespace.yaml b/apps/rss/namespace.yaml index 3900a62..0a074bd 100644 --- a/apps/rss/namespace.yaml +++ b/apps/rss/namespace.yaml @@ -1,4 +1,4 @@ apiVersion: v1 kind: Namespace metadata: - name: placeholder \ No newline at end of file + name: placeholder diff --git a/kluster-deployments/homepage/application.yaml b/kluster-deployments/homepage/application.yaml new file mode 100644 index 0000000..1cc6d7f --- /dev/null +++ b/kluster-deployments/homepage/application.yaml @@ -0,0 +1,19 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: homepage-application + namespace: argocd + +spec: + project: apps + source: + repoURL: ssh://git@git.kluster.moll.re:2222/remoll/k3s-infra.git + targetRevision: main + path: apps/homepage + destination: + server: https://kubernetes.default.svc + namespace: homepage + syncPolicy: + automated: + prune: true + selfHeal: true diff --git a/kluster-deployments/kustomization.yaml b/kluster-deployments/kustomization.yaml index ec1135c..49af0f4 100644 --- a/kluster-deployments/kustomization.yaml +++ b/kluster-deployments/kustomization.yaml @@ -28,6 +28,7 @@ resources: - files/ - finance/ - homeassistant/ + - homepage/application.yaml - immich/ - journal/ - media/ diff --git a/kluster-deployments/pg-ha/application.yaml b/kluster-deployments/pg-ha/application.yaml index 5f33a69..46862cf 100644 --- a/kluster-deployments/pg-ha/application.yaml +++ b/kluster-deployments/pg-ha/application.yaml @@ -18,5 +18,5 @@ spec: prune: true selfHeal: true syncOptions: - - Replace=true - # because the crds exceed the default 256Ki limit \ No newline at end of file + - Replace=true + # because the crd annotations exceed the default 256Ki limit \ No newline at end of file