From d2d3ee7c784601c3fa508a593b6056809fb6fbb1 Mon Sep 17 00:00:00 2001 From: rblundon Date: Thu, 7 Aug 2025 13:37:40 -0500 Subject: [PATCH] deploy homepage --- applications/homepage.yaml | 33 ++++++++ applications/homepage/clusterrole.yaml | 55 ++++++++++++ applications/homepage/configmap-eso.yaml | 30 +++++++ applications/homepage/configmap.yaml | 66 +++++++++++++++ applications/homepage/deployment.yaml | 84 +++++++++++++++++++ .../homepage/ingress-certificate.yaml | 20 +++++ applications/homepage/ingress.yaml | 46 ++++++++++ applications/homepage/kustomization.yaml | 15 ++++ applications/homepage/namespace.yaml | 12 +++ applications/homepage/route.yaml | 46 ++++++++++ applications/homepage/secret.yaml | 11 +++ applications/homepage/service.yaml | 18 ++++ applications/homepage/serviceaccount.yaml | 10 +++ applications/homepage/temp.yaml | 20 +++++ cluster/{temp => }/applications-AoA.yaml | 0 15 files changed, 466 insertions(+) create mode 100644 applications/homepage.yaml create mode 100644 applications/homepage/clusterrole.yaml create mode 100644 applications/homepage/configmap-eso.yaml create mode 100644 applications/homepage/configmap.yaml create mode 100644 applications/homepage/deployment.yaml create mode 100644 applications/homepage/ingress-certificate.yaml create mode 100644 applications/homepage/ingress.yaml create mode 100644 applications/homepage/kustomization.yaml create mode 100644 applications/homepage/namespace.yaml create mode 100644 applications/homepage/route.yaml create mode 100644 applications/homepage/secret.yaml create mode 100644 applications/homepage/service.yaml create mode 100644 applications/homepage/serviceaccount.yaml create mode 100644 applications/homepage/temp.yaml rename cluster/{temp => }/applications-AoA.yaml (100%) diff --git a/applications/homepage.yaml b/applications/homepage.yaml new file mode 100644 index 0000000..761cc6e --- /dev/null +++ b/applications/homepage.yaml @@ -0,0 +1,33 @@ +--- +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: homepage-app + finalizers: + - resources-finalizer.argocd.argoproj.io + annotations: + argocd.argoproj.io/sync-wave: "5" +spec: + destination: + name: internal + namespace: homepage-app + project: default + source: + path: applications/homepage + repoURL: git@github.com:rblundon/MK-Labs.git + targetRevision: HEAD + syncPolicy: + automated: + prune: false + selfHeal: true + syncOptions: + - RespectIgnoreDifferences=true + - CreateNamespace=true + managedNamespaceMetadata: + labels: + argocd.argoproj.io/managed-by: openshift-gitops + ignoreDifferences: + - group: apps + kind: Deployment + jsonPointers: + - /spec/replicas \ No newline at end of file diff --git a/applications/homepage/clusterrole.yaml b/applications/homepage/clusterrole.yaml new file mode 100644 index 0000000..2e9f174 --- /dev/null +++ b/applications/homepage/clusterrole.yaml @@ -0,0 +1,55 @@ +--- +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-app diff --git a/applications/homepage/configmap-eso.yaml b/applications/homepage/configmap-eso.yaml new file mode 100644 index 0000000..833aae9 --- /dev/null +++ b/applications/homepage/configmap-eso.yaml @@ -0,0 +1,30 @@ +--- +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: homepage-bookmarks-secret + namespace: homepage-app +spec: + secretStoreRef: + kind: ClusterSecretStore + name: doppler-cluster + refreshInterval: "1h" + data: + - secretKey: bookmarks.yaml + remoteRef: + key: HOMEPAGE_BOOKMARKS +--- +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: homepage-services-secret + namespace: homepage-app +spec: + secretStoreRef: + kind: ClusterSecretStore + name: doppler-cluster + refreshInterval: "1h" + data: + - secretKey: services.yaml + remoteRef: + key: HOMEPAGE_SERVICES diff --git a/applications/homepage/configmap.yaml b/applications/homepage/configmap.yaml new file mode 100644 index 0000000..858bd08 --- /dev/null +++ b/applications/homepage/configmap.yaml @@ -0,0 +1,66 @@ +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: homepage + namespace: homepage-app + labels: + app.kubernetes.io/name: homepage +data: + kubernetes.yaml: | + mode: cluster + settings.yaml: | + title: MK-Labs Homepage + + background: + image: https://images.unsplash.com/photo-1502790671504-542ad42d5189?auto=format&fit=crop&w=2560&q=80 + saturate: 100 # 0, 50, 100... see https://tailwindcss.com/docs/backdrop-saturate + brightness: 50 # 0, 50, 75... see https://tailwindcss.com/docs/backdrop-brightness + opacity: 100 # 0-100 + + theme: dark + color: slate + + useEqualHeights: true + + layout: + Proxmox: + header: true + style: row + columns: 4 + Network: + header: true + style: row + columns: 4 + Other: + header: true + style: row + columns: 4 + + providers: + openweathermap: openweathermapapikey + weatherapi: weatherapiapikey + custom.css: "" + custom.js: "" + 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/applications/homepage/deployment.yaml b/applications/homepage/deployment.yaml new file mode 100644 index 0000000..f916180 --- /dev/null +++ b/applications/homepage/deployment.yaml @@ -0,0 +1,84 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: homepage + namespace: homepage-app + 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.apps.ocp.int.mk-labs.cloud" + 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: bookmarks + 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: services + 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 +# - mountPath: /usr/local/etc/ssl/certs/tls.crt +# name: ssl-certs +# subPath: tls.crt +# - mountPath: /usr/local/etc/ssl/certs/tls.key +# name: ssl-certs +# subPath: tls.key + volumes: + - name: homepage-config + configMap: + name: homepage + - name: bookmarks + secret: + secretName: homepage-bookmarks-secret + - name: services + secret: + secretName: homepage-services-secret +# - name: ssl-certs +# secret: +# secretName: letsencrypt-homepage + - name: logs + emptyDir: {} \ No newline at end of file diff --git a/applications/homepage/ingress-certificate.yaml b/applications/homepage/ingress-certificate.yaml new file mode 100644 index 0000000..e95b3a4 --- /dev/null +++ b/applications/homepage/ingress-certificate.yaml @@ -0,0 +1,20 @@ +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + annotations: + name: letsencrypt-homepage + namespace: homepage-app +spec: + commonName: 'homepage.int.mk-labs.cloud' + dnsNames: + - homepage.int.mk-labs.cloud + duration: 2160h0m0s + issuerRef: + kind: ClusterIssuer + name: letsencrypt-prod + renewBefore: 360h0m0s + secretName: letsencrypt-homepage + usages: + - server auth + - client auth \ No newline at end of file diff --git a/applications/homepage/ingress.yaml b/applications/homepage/ingress.yaml new file mode 100644 index 0000000..929c868 --- /dev/null +++ b/applications/homepage/ingress.yaml @@ -0,0 +1,46 @@ +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: homepage-ingress + namespace: homepage-app + annotations: {} + +# route.openshift.io/termination: "reencrypt" +# route.openshift.io/destination-ca-certificate-secret: letsencrypt-homepage +spec: + ingressClassName: + openshift-default + rules: + - host: homepage.int.mk-labs.cloud + http: + paths: + - path: / + pathType: Exact + backend: + service: + name: homepage + port: + number: 443 +# tls: +# - hosts: +# - homepage.int.mk-labs.cloud +# secretName: letsencrypt-homepage +#--- +#apiVersion: networking.k8s.io/v1 +#kind: Ingress +#metadata: +# name: hello-openshift +#spec: +# rules: +# - host: hello-openshift.yourcluster.example.com +# http: +# paths: +# - backend: +# # Forward to a Service called 'hello-openshift' +# service: +# name: hello-openshift +# port: +# number: 8080 +# path: / +# pathType: Exact \ No newline at end of file diff --git a/applications/homepage/kustomization.yaml b/applications/homepage/kustomization.yaml new file mode 100644 index 0000000..4b40059 --- /dev/null +++ b/applications/homepage/kustomization.yaml @@ -0,0 +1,15 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: +- namespace.yaml +- secret.yaml +- serviceaccount.yaml +- configmap-eso.yaml +- configmap.yaml +- clusterrole.yaml +- service.yaml +- ingress-certificate.yaml +- deployment.yaml +- route.yaml \ No newline at end of file diff --git a/applications/homepage/namespace.yaml b/applications/homepage/namespace.yaml new file mode 100644 index 0000000..84461f5 --- /dev/null +++ b/applications/homepage/namespace.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + labels: + kubernetes.io/metadata.name: homepage-app + name: homepage-app + argocd.argoproj.io/managed-by: openshift-gitops-operator + name: homepage-app +spec: + finalizers: + - kubernetes diff --git a/applications/homepage/route.yaml b/applications/homepage/route.yaml new file mode 100644 index 0000000..01be54a --- /dev/null +++ b/applications/homepage/route.yaml @@ -0,0 +1,46 @@ +#--- +#3apiVersion: route.openshift.io/v1 +#kind: Route +#metadata: +# labels: +# app.kubernetes.io/instance: homepage-app +# app.kubernetes.io/name: homepage-app +# name: homepage-app +# namespace: homepage-app +#spec: +# host: homepage.int.mk-labs.cloud + +# port: +# targetPort: http +# tls: +# insecureEdgeTerminationPolicy: Redirect +# termination: edge +# externalCertificate: +# name: letsencrypt-homepage +# to: +# kind: Service +# name: homepage +# weight: 100 +# wildcardPolicy: None +--- +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + labels: + app.kubernetes.io/instance: homepage-app + app.kubernetes.io/name: homepage-app + name: homepage-app2 + namespace: homepage-app +spec: + host: homepage.apps.ocp.int.mk-labs.cloud + + port: + targetPort: http + tls: + insecureEdgeTerminationPolicy: Redirect + termination: edge + to: + kind: Service + name: homepage + weight: 100 + wildcardPolicy: None diff --git a/applications/homepage/secret.yaml b/applications/homepage/secret.yaml new file mode 100644 index 0000000..5bc4aee --- /dev/null +++ b/applications/homepage/secret.yaml @@ -0,0 +1,11 @@ +--- +apiVersion: v1 +kind: Secret +type: kubernetes.io/service-account-token +metadata: + name: homepage + namespace: homepage-app + labels: + app.kubernetes.io/name: homepage + annotations: + kubernetes.io/service-account.name: homepage diff --git a/applications/homepage/service.yaml b/applications/homepage/service.yaml new file mode 100644 index 0000000..1c309f9 --- /dev/null +++ b/applications/homepage/service.yaml @@ -0,0 +1,18 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: homepage + namespace: homepage-app + 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 \ No newline at end of file diff --git a/applications/homepage/serviceaccount.yaml b/applications/homepage/serviceaccount.yaml new file mode 100644 index 0000000..a4c561e --- /dev/null +++ b/applications/homepage/serviceaccount.yaml @@ -0,0 +1,10 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: homepage + namespace: homepage-app + labels: + app.kubernetes.io/name: homepage +secrets: + - name: homepage diff --git a/applications/homepage/temp.yaml b/applications/homepage/temp.yaml new file mode 100644 index 0000000..c94b2be --- /dev/null +++ b/applications/homepage/temp.yaml @@ -0,0 +1,20 @@ +--- +apiVersion: cert-manager.io/v1 +kind: Certificate +metadata: + annotations: + name: letsencrypt-homepage2 + namespace: homepage-app +spec: + commonName: 'homepage2.int.mk-labs.cloud' + dnsNames: + - homepage2.int.mk-labs.cloud + duration: 2160h0m0s + issuerRef: + kind: ClusterIssuer + name: letsencrypt-prod + renewBefore: 360h0m0s + secretName: letsencrypt-homepage2 + usages: + - server auth + - client auth \ No newline at end of file diff --git a/cluster/temp/applications-AoA.yaml b/cluster/applications-AoA.yaml similarity index 100% rename from cluster/temp/applications-AoA.yaml rename to cluster/applications-AoA.yaml