diff --git a/core-deployments.yaml b/core-deployments.yaml index 5aa8da9..9b77676 100644 --- a/core-deployments.yaml +++ b/core-deployments.yaml @@ -177,6 +177,27 @@ spec: destination: server: https://kubernetes.default.svc namespace: dashboard + syncPolicy: + syncOptions: + - CreateNamespace=true + automated: + selfHeal: false + prune: true +--- +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: dashboard-staging + namespace: argocd +spec: + project: default + source: + repoURL: https://git.ar21.de/yolokube/core-deployments.git + targetRevision: HEAD + path: dashboard/staging + destination: + server: https://kubernetes.default.svc + namespace: dashboard-staging syncPolicy: syncOptions: - CreateNamespace=true diff --git a/dashboard/README.md b/dashboard/README.md new file mode 100644 index 0000000..b3dc29f --- /dev/null +++ b/dashboard/README.md @@ -0,0 +1,2 @@ + +Please make changes only in the "base" folder. The resources in the prod and staging folders are automatically generated by the yolokube/dashboard pipeline. \ No newline at end of file diff --git a/dashboard/base/dashboard.yaml b/dashboard/base/dashboard.yaml new file mode 100644 index 0000000..704e438 --- /dev/null +++ b/dashboard/base/dashboard.yaml @@ -0,0 +1,343 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: dashboard +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: dashboard-data + namespace: dashboard +data: + greeter.json: | + { + "greeter": { + "months": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "days": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "greetings": [ + { + "greeting": "Good night!", + "start": 0, + "end": 6 + }, + { + "greeting": "Good morning!", + "start": 6, + "end": 12 + }, + { + "greeting": "Good afternoon!", + "start": 12, + "end": 18 + }, + { + "greeting": "Good evening!", + "start": 18, + "end": 24 + } + ], + "dateformat": "%wd, %m %d%e %y" + } + } + themes.json: | + { + "themes": [ + { + "label": "Classic", + "value": 0, + "mainColor": "#000000", + "accentColor": "#1e272e", + "backgroundColor": "#ffffff" + }, + { + "label": "Dark", + "value": 1, + "mainColor": "#ffffff", + "accentColor": "#999999", + "backgroundColor": "#000000" + }, + { + "label": "Raw", + "value": 2, + "mainColor": "", + "accentColor": "", + "backgroundColor": "#ffffff" + }, + { + "label": "Blackboard", + "value": 3, + "mainColor": "#fffdea", + "accentColor": "#5c5c5c", + "backgroundColor": "#1a1a1a" + }, + { + "label": "Gazette", + "value": 4, + "mainColor": "#000000", + "accentColor": "#5c5c5c", + "backgroundColor": "#F2F7FF" + }, + { + "label": "Espresso", + "value": 5, + "mainColor": "#d1b59a", + "accentColor": "#4e4e4e", + "backgroundColor": "#21211f" + }, + { + "label": "Cab", + "value": 6, + "mainColor": "#1f1f1f", + "accentColor": "#424242", + "backgroundColor": "#f6d305" + }, + { + "label": "Cloud", + "value": 7, + "mainColor": "#35342f", + "accentColor": "#37bbe4", + "backgroundColor": "#f1f2f0" + }, + { + "label": "Lime", + "value": 8, + "mainColor": "#aabbc3", + "accentColor": "#aeea00", + "backgroundColor": "#263238" + }, + { + "label": "White", + "value": 9, + "mainColor": "#222222", + "accentColor": "#dddddd", + "backgroundColor": "#ffffff" + }, + { + "label": "Tron", + "value": 10, + "mainColor": "#effbff", + "accentColor": "#6ee2ff", + "backgroundColor": "#242b33" + }, + { + "label": "Blues", + "value": 11, + "mainColor": "#eff1fc", + "accentColor": "#6677eb", + "backgroundColor": "#2b2c56" + }, + { + "label": "Passion", + "value": 12, + "mainColor": "#12005e", + "accentColor": "#8e24aa", + "backgroundColor": "#f5f5f5" + }, + { + "label": "Chalk", + "value": 13, + "mainColor": "#aabbc3", + "accentColor": "#ff869a", + "backgroundColor": "#263238" + }, + { + "label": "Paper", + "value": 14, + "mainColor": "#4c432e", + "accentColor": "#aa9a73", + "backgroundColor": "#f8f6f1" + } + ] + } + apps.json: | + { + "categories": [ + { + "name": "Monitoring", + "items": [ + { + "name": "Grafana", + "displayURL": "grafana.services.yolokube.de", + "url": "https://grafana.services.yolokube.de", + "icon": "e6e1", + "newTab": true + }, + { + "name": "Prometheus", + "displayURL": "prometheus.services.yolokube.de", + "url": "https://prometheus.services.yolokube.de", + "icon": "e876", + "newTab": true + }, + { + "name": "Alert Manager", + "displayURL": "alertmanager.services.yolokube.de", + "url": "https://alertmanager.services.yolokube.de", + "icon": "e7f4", + "newTab": true + } + ] + }, + { + "name": "Storage", + "items": [ + { + "name": "Longhorn", + "displayURL": "longhorn.services.yolokube.de", + "url": "https://longhorn.services.yolokube.de", + "icon": "e161", + "newTab": true + } + ] + }, + { + "name": "Deployment", + "items": [ + { + "name": "Argo", + "displayURL": "argo.services.yolokube.de", + "url": "https://argo.services.yolokube.de", + "icon": "e037", + "newTab": true + } + ] + } + ] + } + search.json: | + { + "placeholder": "", + "defaultProvider": "https://duckduckgo.com/?q=", + "autoFocus": false, + "providers": [ + { + "name": "Allmusic", + "url": "https://www.allmusic.com/search/all/", + "prefix": "/a" + }, + { + "name": "Discogs", + "url": "https://www.discogs.com/search/?q=", + "prefix": "/di" + }, + { + "name": "iMDB", + "url": "https://www.imdb.com/find?q=", + "prefix": "/i" + }, + { + "name": "TheMovieDB", + "url": "https://www.themoviedb.org/search?query=", + "prefix": "/m" + }, + { + "name": "Reddit", + "url": "https://www.reddit.com/search?q=", + "prefix": "/r" + }, + { + "name": "Soundcloud", + "url": "https://soundcloud.com/search?q=", + "prefix": "/so" + }, + { + "name": "Spotify", + "url": "https://open.spotify.com/search/results/", + "prefix": "/s" + }, + { + "name": "TheTVDB", + "url": "https://www.thetvdb.com/search?q=", + "prefix": "/tv" + }, + { + "name": "YouTube", + "url": "https://youtube.com/results?search_query=", + "prefix": "/yt" + } + ] + } +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: dashboard-deployment + namespace: dashboard + labels: + app: dashboard +spec: + replicas: 3 + selector: + matchLabels: + app: dashboard + template: + metadata: + labels: + app: dashboard + spec: + volumes: + - name: dashboard-data + configMap: + name: dashboard-data + defaultMode: 0666 + containers: + - name: dashboard + image: yolokube/dashboard:latest + imagePullPolicy: Always + ports: + - containerPort: 8080 + volumeMounts: + - mountPath: "/app/data" + name: dashboard-data +--- +apiVersion: v1 +kind: Service +metadata: + name: dashboard-service + namespace: dashboard +spec: + selector: + app: dashboard + ports: + - protocol: TCP + port: 80 + targetPort: 8080 +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: dashboard-ingress + namespace: dashboard +spec: + rules: + - host: "dashboard.services.yolokube.de" + http: + paths: + - pathType: Prefix + path: "/" + backend: + service: + name: dashboard-service + port: + number: 80 diff --git a/dashboard/base/kustomization.yaml b/dashboard/base/kustomization.yaml new file mode 100644 index 0000000..0ffad88 --- /dev/null +++ b/dashboard/base/kustomization.yaml @@ -0,0 +1,4 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: +- dashboard.yaml \ No newline at end of file diff --git a/dashboard/kustomization.yaml b/dashboard/overlays/prod/kustomization.yaml similarity index 73% rename from dashboard/kustomization.yaml rename to dashboard/overlays/prod/kustomization.yaml index 1ec6d13..f1a5182 100644 --- a/dashboard/kustomization.yaml +++ b/dashboard/overlays/prod/kustomization.yaml @@ -1,8 +1,9 @@ resources: -- prod/dashboard.yaml +- ../../base apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization images: - name: yolokube/dashboard newName: yolokube/dashboard - newTag: "236" + newTag: "228" +namespace: dashboard diff --git a/dashboard/overlays/staging/kustomization.yaml b/dashboard/overlays/staging/kustomization.yaml new file mode 100644 index 0000000..b17960e --- /dev/null +++ b/dashboard/overlays/staging/kustomization.yaml @@ -0,0 +1,24 @@ +resources: +- ../../base +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +images: +- name: yolokube/dashboard + newName: yolokube/dashboard + newTag: "228" +namespace: dashboard-staging +patches: + - target: + kind: Ingress + name: dashboard-ingress + patch: |- + - op: replace + path: /spec/rules/0/host + value: "dashboard-staging.services.yolokube.de" + - target: + kind: Deployment + name: dashboard-deployment + patch: |- + - op: replace + path: /spec/replicas + value: 1 diff --git a/dashboard/dashboard.yaml b/dashboard/staging/dashboard.yaml similarity index 97% rename from dashboard/dashboard.yaml rename to dashboard/staging/dashboard.yaml index 2c16b48..74c69f2 100644 --- a/dashboard/dashboard.yaml +++ b/dashboard/staging/dashboard.yaml @@ -1,7 +1,7 @@ apiVersion: v1 kind: Namespace metadata: - name: dashboard + name: dashboard-staging --- apiVersion: v1 data: @@ -277,13 +277,13 @@ data: kind: ConfigMap metadata: name: dashboard-data - namespace: dashboard + namespace: dashboard-staging --- apiVersion: v1 kind: Service metadata: name: dashboard-service - namespace: dashboard + namespace: dashboard-staging spec: ports: - port: 80 @@ -298,9 +298,9 @@ metadata: labels: app: dashboard name: dashboard-deployment - namespace: dashboard + namespace: dashboard-staging spec: - replicas: 3 + replicas: 1 selector: matchLabels: app: dashboard @@ -328,10 +328,10 @@ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: dashboard-ingress - namespace: dashboard + namespace: dashboard-staging spec: rules: - - host: dashboard.services.yolokube.de + - host: dashboard-staging.services.yolokube.de http: paths: - backend: