deploy homepage
This commit is contained in:
33
applications/homepage.yaml
Normal file
33
applications/homepage.yaml
Normal file
@@ -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
|
||||||
55
applications/homepage/clusterrole.yaml
Normal file
55
applications/homepage/clusterrole.yaml
Normal file
@@ -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
|
||||||
30
applications/homepage/configmap-eso.yaml
Normal file
30
applications/homepage/configmap-eso.yaml
Normal file
@@ -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
|
||||||
66
applications/homepage/configmap.yaml
Normal file
66
applications/homepage/configmap.yaml
Normal file
@@ -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: ""
|
||||||
84
applications/homepage/deployment.yaml
Normal file
84
applications/homepage/deployment.yaml
Normal file
@@ -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: {}
|
||||||
20
applications/homepage/ingress-certificate.yaml
Normal file
20
applications/homepage/ingress-certificate.yaml
Normal file
@@ -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
|
||||||
46
applications/homepage/ingress.yaml
Normal file
46
applications/homepage/ingress.yaml
Normal file
@@ -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
|
||||||
15
applications/homepage/kustomization.yaml
Normal file
15
applications/homepage/kustomization.yaml
Normal file
@@ -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
|
||||||
12
applications/homepage/namespace.yaml
Normal file
12
applications/homepage/namespace.yaml
Normal file
@@ -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
|
||||||
46
applications/homepage/route.yaml
Normal file
46
applications/homepage/route.yaml
Normal file
@@ -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
|
||||||
11
applications/homepage/secret.yaml
Normal file
11
applications/homepage/secret.yaml
Normal file
@@ -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
|
||||||
18
applications/homepage/service.yaml
Normal file
18
applications/homepage/service.yaml
Normal file
@@ -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
|
||||||
10
applications/homepage/serviceaccount.yaml
Normal file
10
applications/homepage/serviceaccount.yaml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: homepage
|
||||||
|
namespace: homepage-app
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: homepage
|
||||||
|
secrets:
|
||||||
|
- name: homepage
|
||||||
20
applications/homepage/temp.yaml
Normal file
20
applications/homepage/temp.yaml
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user