From a3404bba2be7b1d728bf27eb6dcdfd0b3e7ff780 Mon Sep 17 00:00:00 2001 From: baschno Date: Sat, 26 Apr 2025 19:56:50 +0200 Subject: [PATCH] homepage setup without helm --- 09_Homepage/homepage-certificate.yaml | 2 +- 09_Homepage/homepage-configmap.yaml | 60 ++++++++ 09_Homepage/homepage-deployment.yaml | 177 ++++++++++++++++++++++++ 09_Homepage/homepage-ingress-route.yaml | 10 +- 09_Homepage/homepage-values.yaml | 72 ---------- 5 files changed, 247 insertions(+), 74 deletions(-) create mode 100644 09_Homepage/homepage-configmap.yaml create mode 100644 09_Homepage/homepage-deployment.yaml delete mode 100644 09_Homepage/homepage-values.yaml diff --git a/09_Homepage/homepage-certificate.yaml b/09_Homepage/homepage-certificate.yaml index a9a143b..f7db4c7 100644 --- a/09_Homepage/homepage-certificate.yaml +++ b/09_Homepage/homepage-certificate.yaml @@ -9,4 +9,4 @@ spec: name: cloudflare-cluster-issuer kind: ClusterIssuer dnsNames: - - homepage.k8s.internal.schnrbs.work \ No newline at end of file + - homepage.k8s.schnrbs.work \ No newline at end of file diff --git a/09_Homepage/homepage-configmap.yaml b/09_Homepage/homepage-configmap.yaml new file mode 100644 index 0000000..95e20f4 --- /dev/null +++ b/09_Homepage/homepage-configmap.yaml @@ -0,0 +1,60 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: homepage + namespace: homepage + labels: + app.kubernetes.io/name: homepage +data: + kubernetes.yaml: | + mode: cluster + settings.yaml: "" + #settings.yaml: | + # providers: + # longhorn: + # url: https://longhorn.my.network + custom.css: "" + custom.js: "" + bookmarks.yaml: | + - Developer: + - Github: + - abbr: GH + href: https://github.com/ + services.yaml: | + - My First Group: + - My First Service: + href: http://localhost/ + description: Homepage is awesome + + - My Second Group: + - My Second Service: + href: http://localhost/ + description: Homepage is the best + + - My Third Group: + - My Third Service: + href: http://localhost/ + description: Homepage is 😎 + widgets.yaml: | + - kubernetes: + cluster: + show: true + cpu: true + memory: true + showLabel: true + label: "cluster" + nodes: + show: true + cpu: true + memory: true + showLabel: true + - resources: + backend: resources + expanded: true + cpu: true + memory: true + network: default + - search: + provider: duckduckgo + target: _blank + docker.yaml: "" diff --git a/09_Homepage/homepage-deployment.yaml b/09_Homepage/homepage-deployment.yaml new file mode 100644 index 0000000..326148a --- /dev/null +++ b/09_Homepage/homepage-deployment.yaml @@ -0,0 +1,177 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: homepage + namespace: homepage + labels: + app.kubernetes.io/name: homepage +secrets: + - name: homepage + + +--- + +apiVersion: v1 +kind: Secret +type: kubernetes.io/service-account-token +metadata: + name: homepage + namespace: homepage + labels: + app.kubernetes.io/name: homepage + annotations: + kubernetes.io/service-account.name: homepage + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: homepage + labels: + app.kubernetes.io/name: homepage +rules: + - apiGroups: + - "" + resources: + - namespaces + - pods + - nodes + verbs: + - get + - list + - apiGroups: + - extensions + - networking.k8s.io + resources: + - ingresses + verbs: + - get + - list + - apiGroups: + - traefik.io + resources: + - ingressroutes + verbs: + - get + - list + - apiGroups: + - gateway.networking.k8s.io + resources: + - httproutes + - gateways + verbs: + - get + - list + - apiGroups: + - metrics.k8s.io + resources: + - nodes + - pods + verbs: + - get + - list +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: homepage + labels: + app.kubernetes.io/name: homepage +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: homepage +subjects: + - kind: ServiceAccount + name: homepage + namespace: homepage + +--- +apiVersion: v1 +kind: Service +metadata: + name: homepage + namespace: homepage + labels: + app.kubernetes.io/name: homepage + annotations: +spec: + type: ClusterIP + ports: + - port: 3000 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: homepage + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: homepage + namespace: 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: "ghcr.io/gethomepage/homepage:latest" + imagePullPolicy: Always + env: + - name: HOMEPAGE_ALLOWED_HOSTS + value: homepage.k8s.schnrbs.work # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts + ports: + - name: http + containerPort: 3000 + protocol: TCP + volumeMounts: + - mountPath: /app/config/custom.js + name: homepage-config + subPath: custom.js + - mountPath: /app/config/custom.css + name: homepage-config + subPath: custom.css + - mountPath: /app/config/bookmarks.yaml + name: homepage-config + subPath: bookmarks.yaml + - mountPath: /app/config/docker.yaml + name: homepage-config + subPath: docker.yaml + - mountPath: /app/config/kubernetes.yaml + name: homepage-config + subPath: kubernetes.yaml + - mountPath: /app/config/services.yaml + name: homepage-config + subPath: services.yaml + - mountPath: /app/config/settings.yaml + name: homepage-config + subPath: settings.yaml + - mountPath: /app/config/widgets.yaml + name: homepage-config + subPath: widgets.yaml + - mountPath: /app/config/logs + name: logs + volumes: + - name: homepage-config + configMap: + name: homepage + - name: logs + emptyDir: {} diff --git a/09_Homepage/homepage-ingress-route.yaml b/09_Homepage/homepage-ingress-route.yaml index 4090c85..a61aed1 100644 --- a/09_Homepage/homepage-ingress-route.yaml +++ b/09_Homepage/homepage-ingress-route.yaml @@ -3,11 +3,19 @@ kind: IngressRoute metadata: name: homepage-ingress-route namespace: homepage + labels: + app.kubernetes.io/name: homepage + annotations: + gethomepage.dev/description: Dynamically Detected Homepage + gethomepage.dev/enabled: "true" + gethomepage.dev/group: Cluster Management + gethomepage.dev/icon: homepage.png + gethomepage.dev/name: Homepage spec: entryPoints: - websecure routes: - - match: Host(`homepage.k8s.internal.schnrbs.work`) + - match: Host(`homepage.k8s.schnrbs.work`) kind: Rule services: - name: homepage diff --git a/09_Homepage/homepage-values.yaml b/09_Homepage/homepage-values.yaml deleted file mode 100644 index 1d45bd6..0000000 --- a/09_Homepage/homepage-values.yaml +++ /dev/null @@ -1,72 +0,0 @@ -config: - bookmarks: - - Developer: - - Github: - - abbr: GH - href: https://github.com/ - services: - - My First Group: - - My First Service: - href: http://localhost/ - description: Homepage is awesome - - - My Second Group: - - My Second Service: - href: http://localhost/ - description: Homepage is the best - - - My Third Group: - - My Third Service: - href: http://localhost/ - description: Homepage is 😎 - widgets: - # show the kubernetes widget, with the cluster summary and individual nodes - - kubernetes: - cluster: - show: true - cpu: true - memory: true - showLabel: true - label: "cluster" - nodes: - show: true - cpu: true - memory: true - showLabel: true - - pihole: - show: true - url: http://192.168.178.202 - key: 1eae9e87f4b4710981639ee591b7d75734811d61697092110cb748c3244e01cc - - fritzbox: - show: true - url: http://192.168.178.1 - - search: - provider: duckduckgo - target: _blank - kubernetes: - mode: cluster - settings: - -# The service account is necessary to allow discovery of other services -serviceAccount: - create: true - name: homepage - -# This enables the service account to access the necessary resources -enableRbac: true - -ingress: - main: - enabled: false - annotations: - # Example annotations to add Homepage to your Homepage! - gethomepage.dev/enabled: "true" - gethomepage.dev/name: "Homepage" - gethomepage.dev/description: "Dynamically Detected Homepage" - gethomepage.dev/group: "Dynamic" - gethomepage.dev/icon: "homepage.png" - hosts: - - host: homepage.k8s.internal.schnrbs.work - paths: - - path: / - pathType: Prefix \ No newline at end of file