-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[homer] Persistence settings #44
Comments
Thanks for reporting. I will check this out tonight |
I've had a look at this. I think this is because the Homer chart isn't supposed to be used with a PVC, but with a yaml file in a ConfigMap that gets mounted as a volume. This is hard-coded as a volume called I think if you rename your PVC to anything else except |
Hi djjuas21. I agree with you, but keep in mind that if you want to use icons in your URL entries PVC is neccesary. Have a look the example URLs which logos are in asset/tools folder by default. I tried to create my own PVC outside the chart and then used the parameter persistence.config.existingClaim without success. The deployment never takes this config. Regards |
I think never ran into this problem with PVCs because I'm actually using a ConfigMap to store my images, as it is easy to populate the ConfigMap at deployment time. You just have to keep the total size of logos under 256KB. This also means Homer does not depend on any persistent storage and can start up fast. There's nothing secret on my Homer site so I can share my entire config. I have a deployment directory like this:
deploy.sh#!/bin/sh
helm upgrade -i --create-namespace \
-n homer homer \
-f values.yaml \
djjudas21/homer
kubectl create configmap -n homer homer-images --from-file=logos --dry-run=client -o yaml | kubectl apply -f - values.yamlenv:
# -- Set the container timezone
TZ: Europe/London
controller:
replicas: 2
strategy: RollingUpdate
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app.kubernetes.io
operator: In
values:
- homer
topologyKey: kubernetes.io/hostname
ingress:
main:
enabled: true
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
ingressClassName: "public"
hosts:
- host: apps.gazeley.uk
paths:
- path: /
pathType: Prefix
tls:
- secretName: homer-tls
hosts:
- apps.gazeley.uk
persistence:
images:
name: homer-images
enabled: true
mountPath: /www/assets/custom
type: configMap
priorityClassName: normal-priority
resources:
limits:
memory: 64Mi
requests:
cpu: 1m
memory: 4Mi
configmap:
images:
enabled: true
config:
# -- Store homer configuration as a ConfigMap
enabled: true
# -- Homer configuration. See [image documentation](https://github.com/bastienwirtz/homer/blob/main/docs/configuration.md) for more information.
# @default -- See values.yaml
data:
config.yml: |
# Homepage configuration
# See https://fontawesome.com/icons for icons options
title: "App dashboard"
subtitle: "Jonathan Gazeley"
icon: "fas fa-icons" # Optional icon
header: true
footer: '<p>Created with <span class="has-text-danger">❤️</span> with <a href="https://bulma.io/">bulma</a>, <a href="https://vuejs.org/">vuejs</a> & <a href="https://fontawesome.com/">font awesome</a> // Fork me on <a href="https://github.com/bastienwirtz/homer"><i class="fab fa-github-alt"></i></a></p>' # set false if you want to hide it.
# Optional navbar
# links: [] # Allows for navbar (dark mode, layout, and search) without any links
links: []
# - name: "Contribute"
# icon: "fab fa-github"
# url: "https://github.com/bastienwirtz/homer"
# target: "_blank"
#- name: "Wiki"
# icon: "fas fa-book"
# url: "https://www.wikipedia.org/"
# Services
# First level array represent a group.
# Leave only a "items" key if not using group (group name, icon & tagstyle are optional, section separation will not be displayed).
services:
- name: "Public apps"
icon: "fas fa-cloud"
items:
- name: "Biosite"
icon: "fas fa-user"
subtitle: "Biosite for Jonathan Gazeley"
tag: "app"
url: "https://jonathan.gazeley.uk"
target: "_blank"
- name: "LittleLink"
icon: "fas fa-link"
subtitle: "Social links for Jonathan Gazeley"
tag: "app"
url: "https://littlelink.gazeley.uk"
target: "_blank"
- name: "CameraHub"
logo: "assets/custom/camerahub.png"
subtitle: "App for cataloguing vintage cameras"
tag: "app"
url: "https://camerahub.info"
target: "_blank"
- name: "CameraHub Dev"
logo: "assets/custom/camerahub.png"
subtitle: "App for cataloguing vintage cameras"
tag: "app"
url: "https://dev.camerahub.info"
target: "_blank"
- name: "BookStack"
logo: "assets/custom/bookstack.png"
subtitle: "Platform for organising and storing information"
tag: "app"
url: "https://docs.gazeley.uk/"
target: "_blank"
- name: "St Mary's Music Library"
logo: "assets/custom/navidrome.png"
subtitle: "Music collection server and streamer"
tag: "app"
url: "https://music.stmarysfishponds.org.uk/"
target: "_blank"
- name: "Private apps"
icon: "fas fa-user-shield"
items:
- name: "ownCloud"
logo: "assets/custom/owncloud.png"
subtitle: "File sync server"
tag: "app"
url: "https://owncloud.jonathangazeley.com"
target: "_blank"
- name: "Navidrome"
logo: "assets/custom/navidrome.png"
subtitle: "Music collection server and streamer"
tag: "app"
url: "https://music.gazeley.uk/"
target: "_blank"
- name: "PhotoPrism"
logo: "assets/custom/photoprism.png"
subtitle: "Photo album"
tag: "app"
url: "https://photos.gazeley.uk/"
target: "_blank"
- name: "Webtrees"
logo: "assets/custom/webtrees.png"
subtitle: "Online collaborative genealogy application"
tag: "app"
url: "https://webtrees.gazeley.uk"
target: "_blank"
- name: "Hammond"
icon: "fas fa-gas-pump"
subtitle: "Vehicle expense tracking system"
tag: "app"
url: "https://hammond.gazeley.uk"
target: "_blank"
- name: "Portainer"
logo: "assets/custom/portainer.png"
subtitle: "Manage your Kubernetes cluster"
tag: "management"
url: "https://kube.gazeley.uk"
target: "_blank"
- name: "Grafana"
logo: "assets/custom/grafana.png"
subtitle: "Analytics & monitoring solution"
tag: "monitoring"
url: "https://grafana.gazeley.uk"
target: "_blank"
- name: "Paperless"
logo: "assets/custom/paperless.png"
subtitle: "Archive all of your paper documents"
tag: "app"
url: "https://paperless.gazeley.uk"
target: "_blank"
- name: "Joplin"
logo: "assets/custom/joplin.png"
subtitle: "Note-taking app"
tag: "app"
url: "https://joplin.gazeley.uk"
target: "_blank"
- name: "InfluxDB"
logo: "assets/custom/influxdb.png"
subtitle: "Time series database"
tag: "monitoring"
url: "https://influxdb.gazeley.uk"
target: "_blank"
- name: "Prometheus"
logo: "assets/custom/prometheus.png"
subtitle: "Monitoring system & time series database"
tag: "monitoring"
url: "https://prometheus.gazeley.uk"
target: "_blank"
- name: "Alertmanager"
logo: "assets/custom/prometheus.png"
subtitle: "Handle alerts sent by Prometheus"
tag: "monitoring"
url: "https://alertmanager.gazeley.uk"
target: "_blank"
- name: "Minio"
logo: "assets/custom/minio.png"
subtitle: "Minio Console for object storage"
tag: "monitoring"
url: "https://console.minio.gazeley.uk"
target: "_blank"
- name: "Ceph Dashboard"
logo: "assets/custom/ceph.png"
subtitle: "Dashboard for Rook/Ceph"
tag: "monitoring"
url: "https://ceph.gazeley.uk"
target: "_blank"
- name: "LAN devices"
icon: "fas fa-server"
items:
- name: "Router"
icon: "fas fa-wifi"
subtitle: ""
tag: ""
url: "http://router.gazeley.lan"
target: "_blank"
- name: "Pi-hole"
logo: "assets/custom/pihole.png"
subtitle: "Network-wide Ad Blocking"
tag: "monitoring"
url: "https://pihole.gazeley.uk/admin/login.php"
target: "_blank"
- name: "TrueNAS"
logo: "assets/custom/truenas.png"
tag: ""
url: "http://nas.gazeley.lan"
target: "_blank"
- name: "Printer"
icon: "fas fa-print"
subtitle: "HP LaserJet P1606dn"
tag: ""
url: "http://printer.gazeley.lan"
target: "_blank" |
The problem with this solution is the limit storage in the ControlPlane, as you said. Using other persistent group different of config solve this issue, but only accepts RWO because Many not allow mountPath option, so is neccesary to play with RollingUpdates options (maxUnavailable and surge). But I solve my issue using URLs instead of relative paths in the logo section of each item. No storage is neccesary. Thanks for your help and time. |
Oh cool, I didn't realise you could use URLs in there! Glad you have a solution now. It's also worth noting that I copied this chart from the deprecated k8sathome/charts repo and adapted it for my needs. The upstream chart may have different options for PVC, I can't remember. |
Describe the bug a clear and concise description of what the bug is.
Hello.
In you Homer HomeLab Dashboard Chart persistence configuration in the values.yaml file hasn't any effect in the deployment. No PVC is created in the helm apply command (I used helmfile instead of helm):
In your other Chart for Heimdall Dashboards it works properly, and the resource PVC is created:
I have got both Charts but I couldn't find any difference yet.
Regards
What's your helm version?
version.BuildInfo{Version:"v3.12.1", GitCommit:"f32a527a060157990e2aa86bf45010dfb3cc8b8d", GitTreeState:"clean", GoVersion:"go1.20.5"}
What's your kubectl version?
Client Version: v1.24.13 Kustomize Version: v4.5.4 Server Version: v1.24.12-gke.1000
Which chart?
https://github.com/djjudas21/charts/tree/main/charts/homer
What's the chart version?
8.1.7
What happened?
No effect with Persistence values, so no PVC is created.
What you expected to happen?
Something wrong in the Chart.
How to reproduce it?
With helmfile -i apply no PVC resource to create is shown.
Enter the changed values of values.yaml?
persistence:
config:
enabled: true
mountPath: /www/assets
type: pvc
retain: true
readOnly: false
storageClass: regional-ssd
accessMode: ReadWriteOnce
size: 10Gi
Enter the command that you execute and failing/misfunctioning.
helmfile -i apply
Anything else we need to know?
In https://github.com/djjudas21/charts/tree/bd2d95da3e068765b9a3e3ab31b0b7981a35b7ee/charts/heimdall with the same configuration and, apparently, same Charts it works properly.
The text was updated successfully, but these errors were encountered: