From 0f78d56eaa51d74cab7b930db2c189538121fa7b Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Mon, 15 Apr 2024 21:26:22 +0200 Subject: [PATCH] install homepage on camperpi --- apps/camper/homepage/configmap.yaml | 58 +++++++++++++++++++++ apps/camper/homepage/deployment.yaml | 65 ++++++++++++++++++++++++ apps/camper/homepage/ingress.yaml | 24 +++++++++ apps/camper/homepage/rbac.yaml | 54 ++++++++++++++++++++ apps/camper/homepage/secret.yaml | 9 ++++ apps/camper/homepage/service,yaml | 15 ++++++ apps/camper/homepage/serviceaccount.yaml | 8 +++ argoapps/camper/homepage.yaml | 18 +++++++ 8 files changed, 251 insertions(+) create mode 100644 apps/camper/homepage/configmap.yaml create mode 100644 apps/camper/homepage/deployment.yaml create mode 100644 apps/camper/homepage/ingress.yaml create mode 100644 apps/camper/homepage/rbac.yaml create mode 100644 apps/camper/homepage/secret.yaml create mode 100644 apps/camper/homepage/service,yaml create mode 100644 apps/camper/homepage/serviceaccount.yaml create mode 100644 argoapps/camper/homepage.yaml diff --git a/apps/camper/homepage/configmap.yaml b/apps/camper/homepage/configmap.yaml new file mode 100644 index 0000000..1ae6169 --- /dev/null +++ b/apps/camper/homepage/configmap.yaml @@ -0,0 +1,58 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: 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 + - search: + provider: duckduckgo + target: _blank + docker.yaml: "" \ No newline at end of file diff --git a/apps/camper/homepage/deployment.yaml b/apps/camper/homepage/deployment.yaml new file mode 100644 index 0000000..4682cb8 --- /dev/null +++ b/apps/camper/homepage/deployment.yaml @@ -0,0 +1,65 @@ +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: ghcr.io/gethomepage/homepage:v0.8.11 + imagePullPolicy: IfNotPresent + 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 + resources: {} + volumes: + - name: homepage-config + configMap: + name: homepage + - name: logs + emptyDir: {} \ No newline at end of file diff --git a/apps/camper/homepage/ingress.yaml b/apps/camper/homepage/ingress.yaml new file mode 100644 index 0000000..309c2b7 --- /dev/null +++ b/apps/camper/homepage/ingress.yaml @@ -0,0 +1,24 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: 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: + rules: + - host: "camper.tobru.ch" + http: + paths: + - path: "/" + pathType: Prefix + backend: + service: + name: homepage + port: + number: 3000 \ No newline at end of file diff --git a/apps/camper/homepage/rbac.yaml b/apps/camper/homepage/rbac.yaml new file mode 100644 index 0000000..a2c7234 --- /dev/null +++ b/apps/camper/homepage/rbac.yaml @@ -0,0 +1,54 @@ +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 +--- +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 \ No newline at end of file diff --git a/apps/camper/homepage/secret.yaml b/apps/camper/homepage/secret.yaml new file mode 100644 index 0000000..1f4ace0 --- /dev/null +++ b/apps/camper/homepage/secret.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +type: kubernetes.io/service-account-token +metadata: + name: homepage + labels: + app.kubernetes.io/name: homepage + annotations: + kubernetes.io/service-account.name: homepage \ No newline at end of file diff --git a/apps/camper/homepage/service,yaml b/apps/camper/homepage/service,yaml new file mode 100644 index 0000000..788c15f --- /dev/null +++ b/apps/camper/homepage/service,yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: homepage + 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/camper/homepage/serviceaccount.yaml b/apps/camper/homepage/serviceaccount.yaml new file mode 100644 index 0000000..6f7876e --- /dev/null +++ b/apps/camper/homepage/serviceaccount.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: homepage + labels: + app.kubernetes.io/name: homepage +secrets: + - name: homepage \ No newline at end of file diff --git a/argoapps/camper/homepage.yaml b/argoapps/camper/homepage.yaml new file mode 100644 index 0000000..5475ab0 --- /dev/null +++ b/argoapps/camper/homepage.yaml @@ -0,0 +1,18 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: camper-homepage + namespace: argocd +spec: + project: apps-camper + source: + path: apps/camper/homepage + repoURL: https://git.tbrnt.ch/tobru/gitops-zurrli.git + targetRevision: HEAD + destination: + name: camper + namespace: homepage + syncPolicy: + syncOptions: + - ServerSideApply=true + - CreateNamespace=true