From 0e268b795202722b251daa94bd42512da26ea080 Mon Sep 17 00:00:00 2001 From: Paul Bennett Date: Mon, 10 Jun 2024 10:07:29 +0100 Subject: [PATCH] deploying homepage-dashboard --- .../cluster-role-binding.yaml | 14 ++++ .../apps/homepage-dashboard/cluster-role.yaml | 39 +++++++++++ .../apps/homepage-dashboard/config-map.yaml | 63 ++++++++++++++++++ .../apps/homepage-dashboard/deployment.yaml | 65 +++++++++++++++++++ .../apps/homepage-dashboard/secret.yaml | 10 +++ .../homepage-dashboard/service-account.yaml | 9 +++ .../apps/homepage-dashboard/service.yaml | 17 +++++ kubernetes/registry/homepage-dashboard.yaml | 30 +++++++++ 8 files changed, 247 insertions(+) create mode 100644 kubernetes/apps/homepage-dashboard/cluster-role-binding.yaml create mode 100644 kubernetes/apps/homepage-dashboard/cluster-role.yaml create mode 100644 kubernetes/apps/homepage-dashboard/config-map.yaml create mode 100644 kubernetes/apps/homepage-dashboard/deployment.yaml create mode 100644 kubernetes/apps/homepage-dashboard/secret.yaml create mode 100644 kubernetes/apps/homepage-dashboard/service-account.yaml create mode 100644 kubernetes/apps/homepage-dashboard/service.yaml create mode 100644 kubernetes/registry/homepage-dashboard.yaml diff --git a/kubernetes/apps/homepage-dashboard/cluster-role-binding.yaml b/kubernetes/apps/homepage-dashboard/cluster-role-binding.yaml new file mode 100644 index 00000000..10710320 --- /dev/null +++ b/kubernetes/apps/homepage-dashboard/cluster-role-binding.yaml @@ -0,0 +1,14 @@ +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-dashboard diff --git a/kubernetes/apps/homepage-dashboard/cluster-role.yaml b/kubernetes/apps/homepage-dashboard/cluster-role.yaml new file mode 100644 index 00000000..05360d38 --- /dev/null +++ b/kubernetes/apps/homepage-dashboard/cluster-role.yaml @@ -0,0 +1,39 @@ +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.containo.us + resources: + - ingressroutes + verbs: + - get + - list + - apiGroups: + - metrics.k8s.io + resources: + - nodes + - pods + verbs: + - get + - list diff --git a/kubernetes/apps/homepage-dashboard/config-map.yaml b/kubernetes/apps/homepage-dashboard/config-map.yaml new file mode 100644 index 00000000..062ed453 --- /dev/null +++ b/kubernetes/apps/homepage-dashboard/config-map.yaml @@ -0,0 +1,63 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: homepage + namespace: homepage-dashboard + labels: + app.kubernetes.io/name: homepage +data: + kubernetes.yaml: | + mode: cluster + settings.yaml: | + title: homelab | pnfb.home + theme: dark + color: slate + + layout: + Google: + style: row + columns: 3 + + custom.css: "" + custom.js: "" + bookmarks.yaml: | + - Developer: + - Github: + - abbr: GH + href: https://github.com/ + services.yaml: | + - Google: + - Gmail: + icon: https://raw.githubusercontent.com/walkxcode/dashboard-icons/a02a5999fe56948671721da8b0830cdd5b609ed7/svg/google.svg + href: https://mail.google.com/mail/u/0/#inbox + target: _blank + - Gcal: + icon: https://raw.githubusercontent.com/walkxcode/dashboard-icons/a02a5999fe56948671721da8b0830cdd5b609ed7/svg/google-calendar.svg + href: https://calendar.google.com/calendar/u/0 + target: _blank + - Google Cloud: + icon: https://raw.githubusercontent.com/walkxcode/dashboard-icons/a02a5999fe56948671721da8b0830cdd5b609ed7/svg/google-cloud-platform.svg + href: https://console.cloud.google.com/welcome?authuser=1 + target: _blank + 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 + - search: + provider: duckduckgo + target: _blank + docker.yaml: "" diff --git a/kubernetes/apps/homepage-dashboard/deployment.yaml b/kubernetes/apps/homepage-dashboard/deployment.yaml new file mode 100644 index 00000000..9a32d211 --- /dev/null +++ b/kubernetes/apps/homepage-dashboard/deployment.yaml @@ -0,0 +1,65 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: homepage + namespace: homepage-dashboard + 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 + 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/kubernetes/apps/homepage-dashboard/secret.yaml b/kubernetes/apps/homepage-dashboard/secret.yaml new file mode 100644 index 00000000..dffdf008 --- /dev/null +++ b/kubernetes/apps/homepage-dashboard/secret.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Secret +type: kubernetes.io/service-account-token +metadata: + name: homepage + namespace: homepage-dashboard + labels: + app.kubernetes.io/name: homepage + annotations: + kubernetes.io/service-account.name: homepage diff --git a/kubernetes/apps/homepage-dashboard/service-account.yaml b/kubernetes/apps/homepage-dashboard/service-account.yaml new file mode 100644 index 00000000..b21e8424 --- /dev/null +++ b/kubernetes/apps/homepage-dashboard/service-account.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: homepage + namespace: homepage-dashboard + labels: + app.kubernetes.io/name: homepage +secrets: + - name: homepage diff --git a/kubernetes/apps/homepage-dashboard/service.yaml b/kubernetes/apps/homepage-dashboard/service.yaml new file mode 100644 index 00000000..441d6549 --- /dev/null +++ b/kubernetes/apps/homepage-dashboard/service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + name: homepage + namespace: homepage-dashboard + labels: + app.kubernetes.io/name: homepage + annotations: +spec: + type: LoadBalancer + ports: + - port: 3000 + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: homepage diff --git a/kubernetes/registry/homepage-dashboard.yaml b/kubernetes/registry/homepage-dashboard.yaml new file mode 100644 index 00000000..3704c640 --- /dev/null +++ b/kubernetes/registry/homepage-dashboard.yaml @@ -0,0 +1,30 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: &app homepage-dashboard + namespace: argocd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: default + source: + repoURL: "https://github.com/mrpbennett/home-ops.git" + path: kubernetes/apps/homepage-dashboard + targetRevision: HEAD + directory: + recurse: true + destination: + namespace: *app + server: "https://kubernetes.default.svc" + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + retry: + limit: 5 + backoff: + duration: 5s + maxDuration: 5m0s + factor: 2