Replace Hajimari with Homepage (#1127)

* feat: replace hajimari with homepage

* fix: add secret

* fix: homepage configmap kubernetes widget

Signed-off-by: Jory Irving <jory@jory.dev>

* feat: wrap annotations in blocks

* chore: homepage change ingress to internal

Signed-off-by: Jory Irving <jory@jory.dev>

---------

Signed-off-by: Jory Irving <jory@jory.dev>
This commit is contained in:
Jory Irving authored and GitHub committed 2024-01-11 15:05:24 -05:00
1 parent d093d0a4e1
commit ee5de426a4
19 files changed
+230 -94

No files matched your search

@@ -159,8 +159,17 @@ spec:
ingress:
enabled: true
ingressClassName: internal
{% if homepage.enabled | default(false) %}
annotations:
hajimari.io/icon: simple-icons:grafana
gethomepage.dev/enabled: "true"
gethomepage.dev/icon: grafana.png
gethomepage.dev/name: Grafana
gethomepage.dev/group: Observability
gethomepage.dev/widget.type: grafana
gethomepage.dev/widget.url: http://grafana.observability
gethomepage.dev/widget.username: '{{`{{HOMEPAGE_VAR_GRAFANA_USERNAME}}`}}'
gethomepage.dev/widget.password: '{{`{{HOMEPAGE_VAR_GRAFANA_PASSWORD}}`}}'
{% endif %}
hosts:
- &host "grafana.${SECRET_DOMAIN}"
tls:
@@ -1,65 +0,0 @@
---
apiVersion: helm.toolkit.fluxcd.io/v2beta2
kind: HelmRelease
metadata:
name: hajimari
spec:
interval: 30m
chart:
spec:
chart: hajimari
version: 2.0.2
sourceRef:
kind: HelmRepository
name: hajimari
namespace: flux-system
maxHistory: 2
install:
remediation:
retries: 3
upgrade:
cleanupOnFail: true
remediation:
retries: 3
uninstall:
keepHistory: false
values:
hajimari:
title: Apps
darkTheme: espresso
alwaysTargetBlank: true
showGreeting: false
showAppGroups: false
showAppStatus: false
showBookmarkGroups: false
showGlobalBookmarks: false
showAppUrls: false
defaultEnable: true
namespaceSelector:
matchNames:
- default
- observability
ingress:
main:
enabled: true
ingressClassName: internal
annotations:
hajimari.io/enable: "false"
hosts:
- host: &host "hajimari.${SECRET_DOMAIN}"
paths:
- path: /
pathType: Prefix
tls:
- hosts:
- *host
podAnnotations:
configmap.reloader.stakater.com/reload: hajimari-settings
persistence:
data:
enabled: true
type: emptyDir
resources:
requests:
cpu: 100m
memory: 128M
@@ -0,0 +1,77 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: homepage-config
labels:
app.kubernetes.io/name: homepage
data:
bookmarks.yaml: |
- Communitcate:
- Discord:
- icon: discord.png # https://github.com/walkxcode/dashboard-icons
href: 'https://discord.com/app'
- Media:
- YouTube:
- icon: youtube.png
href: 'https://youtube.com/feed/subscriptions'
- Reading:
- Reddit:
- icon: reddit.png
href: 'https://reddit.com'
- Git:
- kubesearch:
- icon: kubernetes-dashboard.png
href: 'https://kubesearch.dev/'
- flux-cluster-template:
- icon: github.png
href: 'https://github.com/onedr0p/flux-cluster-template'
docker.yaml: ""
kubernetes.yaml: |
mode: cluster
services.yaml: |
- Network:
- Cloudflared:
href: https://dash.cloudflare.com/
icon: cloudflare-zero-trust.png
description: Cloudflared Tunnel
widget:
type: cloudflared
accountid: {{HOMEPAGE_VAR_CLOUDFLARED_ACCOUNTID}}
tunnelid: {{HOMEPAGE_VAR_CLOUDFLARED_TUNNELID}}
key: {{HOMEPAGE_VAR_CLOUDFLARED_API_TOKEN}}
settings.yaml: |
title: Dashboard
theme: dark
color: slate
headerStyle: clean
layout:
Home:
style: column
icon: mdi-home-analytics
Network:
style: row
columns: 3
icon: mdi-server
Observability:
style: column
icon: mdi-chart-line
widgets.yaml: |
- resources:
backend: kubernetes
cpu: true
expanded: true
memory: true
- search:
provider: [duckduckgo]
focus: false
target: _blank
- greeting:
text_size: xl
text: "Welcome!"
- datetime:
text_size: l
format:
dateStyle: long
timeStyle: short
hourCycle: h23
@@ -0,0 +1,88 @@
---
apiVersion: helm.toolkit.fluxcd.io/v2beta2
kind: HelmRelease
metadata:
name: homepage
spec:
interval: 30m
chart:
spec:
chart: app-template
version: 2.4.0
interval: 30m
sourceRef:
kind: HelmRepository
name: bjw-s
namespace: flux-system
maxHistory: 2
install:
createNamespace: true
remediation:
retries: 3
upgrade:
cleanupOnFail: true
remediation:
retries: 3
uninstall:
keepHistory: false
values:
controllers:
main:
annotations:
reloader.stakater.com/auto: "true"
containers:
main:
image:
repository: ghcr.io/gethomepage/homepage
tag: v0.8.4
env:
TZ: "${TIMEZONE}"
envFrom:
- secretRef:
name: homepage-secret
resources:
requests:
cpu: 15m
memory: 100M
limits:
memory: 250M
service:
main:
ports:
http:
port: 3000
ingress:
main:
enabled: true
className: internal
hosts:
- host: &host home.${SECRET_DOMAIN}
paths:
- path: /
pathType: Prefix
service:
name: main
port: http
tls:
- hosts:
- *host
persistence:
config:
enabled: true
type: configMap
name: homepage-config
globalMounts:
- subPath: bookmarks.yaml
path: /app/config/bookmarks.yaml
- subPath: docker.yaml
path: /app/config/docker.yaml
- subPath: kubernetes.yaml
path: /app/config/kubernetes.yaml
- subPath: services.yaml
path: /app/config/services.yaml
- subPath: settings.yaml
path: /app/config/settings.yaml
- subPath: widgets.yaml
path: /app/config/widgets.yaml
serviceAccount:
create: true
@@ -2,4 +2,6 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ./configmap.yaml
- ./helmrelease.yaml
- ./secret.sops.yaml
@@ -0,0 +1,11 @@
---
apiVersion: v1
kind: Secret
metadata:
name: homepage-secret
stringData:
HOMEPAGE_VAR_CLOUDFLARED_ACCOUNTID: "{{ bootstrap_cloudflare_account_tag }}"
HOMEPAGE_VAR_CLOUDFLARED_TUNNELID: "{{ bootstrap_cloudflare_tunnel_id }}"
HOMEPAGE_VAR_CLOUDFLARED_API_TOKEN: "{{ bootstrap_cloudflare_token }}"
HOMEPAGE_VAR_GRAFANA_USERNAME: admin
HOMEPAGE_VAR_GRAFANA_PASSWORD: "{{ grafana.password }}"
@@ -2,14 +2,14 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: &app hajimari
name: &app homepage
namespace: flux-system
spec:
targetNamespace: default
commonMetadata:
labels:
app.kubernetes.io/name: *app
path: ./kubernetes/apps/default/hajimari/app
path: ./kubernetes/apps/default/homepage/app
prune: true
sourceRef:
kind: GitRepository
@@ -93,9 +93,14 @@ data:
ingress:
enabled: true
ingressClassName: internal
{% if homepage.enabled | default(false) %}
annotations:
hajimari.io/appName: Prometheus
hajimari.io/icon: simple-icons:prometheus
gethomepage.dev/enabled: "true"
gethomepage.dev/icon: prometheus.png
gethomepage.dev/name: Prometheus
gethomepage.dev/group: Observability
gethomepage.dev/widget.type: prometheus
{% endif %}
pathType: Prefix
hosts:
- "prometheus.${SECRET_DOMAIN}"
@@ -31,8 +31,13 @@ spec:
ingress:
enabled: true
className: internal
annotations:
hajimari.io/icon: mdi:kubernetes
{% if homepage.enabled | default(false) %}
annotations:
gethomepage.dev/enabled: "true"
gethomepage.dev/icon: kubernetes-dashboard.png
gethomepage.dev/name: Kubernetes Dashboard
gethomepage.dev/group: Observability
{% endif %}
hosts:
- &host "kubernetes.${SECRET_DOMAIN}"
tls:
@@ -31,8 +31,13 @@ spec:
ingress:
enabled: true
className: internal
{% if homepage.enabled | default(false) %}
annotations:
hajimari.io/icon: sawtooth-wave
gethomepage.dev/enabled: "true"
gethomepage.dev/group: Home
gethomepage.dev/name: Weave-gitops
gethomepage.dev/icon: flux-cd.png
{% endif %}
hosts:
- host: &host "gitops.${SECRET_DOMAIN}"
paths: