fix: corrected ApplicationSet template, drop secret stubs from manifests
- appset: goTemplate, filename-based app names, .path.path IS the directory, exclude apps/root from the glob (v3.5 git files-generator schema) - remove empty Secret stubs: with prune:true they would overwrite live secret values (openwebui, paperless, vaultwarden-admin-token, password) - secrets stay cluster-managed, not in git
This commit is contained in:
@@ -0,0 +1,226 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: homepage
|
||||
name: homepage
|
||||
namespace: default
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: homepage
|
||||
strategy:
|
||||
type: Recreate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: homepage
|
||||
spec:
|
||||
automountServiceAccountToken: true
|
||||
containers:
|
||||
- env:
|
||||
- name: POD_IP
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
apiVersion: v1
|
||||
fieldPath: status.podIP
|
||||
- name: HOMEPAGE_ALLOWED_HOSTS
|
||||
value: '*'
|
||||
image: ghcr.io/gethomepage/homepage:latest
|
||||
imagePullPolicy: Always
|
||||
livenessProbe:
|
||||
failureThreshold: 3
|
||||
httpGet:
|
||||
path: /
|
||||
port: 3000
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 10
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 1
|
||||
name: homepage
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
name: http
|
||||
protocol: TCP
|
||||
readinessProbe:
|
||||
failureThreshold: 3
|
||||
httpGet:
|
||||
path: /
|
||||
port: 3000
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 5
|
||||
successThreshold: 1
|
||||
timeoutSeconds: 1
|
||||
resources:
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
terminationMessagePath: /dev/termination-log
|
||||
terminationMessagePolicy: File
|
||||
volumeMounts:
|
||||
- mountPath: /app/config/logs
|
||||
name: logs
|
||||
- mountPath: /app/config
|
||||
name: homepage-config
|
||||
- mountPath: /app/public/images
|
||||
name: homepage-config
|
||||
subPath: images
|
||||
dnsPolicy: ClusterFirst
|
||||
enableServiceLinks: true
|
||||
restartPolicy: Always
|
||||
schedulerName: default-scheduler
|
||||
securityContext: {}
|
||||
serviceAccount: homepage
|
||||
serviceAccountName: homepage
|
||||
terminationGracePeriodSeconds: 30
|
||||
volumes:
|
||||
- name: homepage-config
|
||||
persistentVolumeClaim:
|
||||
claimName: homepage-config
|
||||
- emptyDir: {}
|
||||
name: logs
|
||||
status:
|
||||
availableReplicas: 1
|
||||
conditions:
|
||||
- lastTransitionTime: '2026-05-19T01:51:47Z'
|
||||
lastUpdateTime: '2026-08-17T09:07:50Z'
|
||||
message: ReplicaSet "homepage-7b47bf67fb" has successfully progressed.
|
||||
reason: NewReplicaSetAvailable
|
||||
status: 'True'
|
||||
type: Progressing
|
||||
- lastTransitionTime: '2026-08-28T06:04:23Z'
|
||||
lastUpdateTime: '2026-08-28T06:04:23Z'
|
||||
message: Deployment has minimum availability.
|
||||
reason: MinimumReplicasAvailable
|
||||
status: 'True'
|
||||
type: Available
|
||||
observedGeneration: 96
|
||||
readyReplicas: 1
|
||||
replicas: 1
|
||||
terminatingReplicas: 0
|
||||
updatedReplicas: 1
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: homepage
|
||||
name: homepage
|
||||
namespace: default
|
||||
spec:
|
||||
internalTrafficPolicy: Cluster
|
||||
ipFamilies:
|
||||
- IPv4
|
||||
ipFamilyPolicy: SingleStack
|
||||
ports:
|
||||
- name: http
|
||||
port: 3000
|
||||
protocol: TCP
|
||||
targetPort: http
|
||||
selector:
|
||||
app.kubernetes.io/name: homepage
|
||||
sessionAffinity: None
|
||||
type: ClusterIP
|
||||
status:
|
||||
loadBalancer: {}
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: homepage
|
||||
name: homepage
|
||||
namespace: default
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
rules:
|
||||
- host: homepage.haven
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: homepage
|
||||
port:
|
||||
number: 3000
|
||||
path: /
|
||||
pathType: Prefix
|
||||
status:
|
||||
loadBalancer:
|
||||
ingress:
|
||||
- ip: 192.168.20.204
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: homepage-config
|
||||
namespace: default
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
||||
storageClassName: nfs-client
|
||||
volumeMode: Filesystem
|
||||
status:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
capacity:
|
||||
storage: 1Gi
|
||||
phase: Bound
|
||||
---
|
||||
apiVersion: v1
|
||||
data:
|
||||
bookmarks.yaml: "- Developer:\n - Github:\n - abbr: GH\n href:\
|
||||
\ https://github.com/\n"
|
||||
custom.css: ''
|
||||
custom.js: ''
|
||||
docker.yaml: ''
|
||||
kubernetes.yaml: 'mode: cluster
|
||||
|
||||
'
|
||||
services.yaml: "- Essentials:\n - AdGuard Home:\n href: http://adguard.haven/\n\
|
||||
\ icon: adguard-home\n widget:\n type: adguard\n \
|
||||
\ url: http://adguard.haven/\n username: ivanch\n password:\
|
||||
\ ESVEPnull\n - AdGuard Home 2:\n href: http://adguard2.haven/\n \
|
||||
\ icon: adguard-home\n widget:\n type: adguard\n \
|
||||
\ url: http://adguard2.haven/\n username: ivanch\n password:\
|
||||
\ ESVEPnull\n - Home Assistant:\n href: http://homeassistant.haven/\n\
|
||||
\ - Traefik:\n href: http://traefik.haven/\n - Dockge:\n href:\
|
||||
\ http://dockge.haven/\n - Proxmox:\n href: https://proxmox.haven:8006/\n\
|
||||
\ widget:\n type: proxmox\n url: https://proxmox.haven:8006/\n\
|
||||
\ token: homepage@pam!token\n secret: 7cadfc2d-560a-4bb4-8d5f-a29f394bc9a0\n\
|
||||
\n- Media:\n - Jellyfin:\n href: http://tv.haven/\n icon: jellyfin.png\n\
|
||||
\ widget:\n type: jellyfin\n url: http://tv.haven/\n\
|
||||
\ key: c933070d9c8341bf8c64e7a792aaa6b9\n enableBlocks: true\n\
|
||||
\ enableNowPlaying: true\n - Sonarr:\n href: http://sonarr.haven/\n\
|
||||
\ - Radarr:\n href: http://radarr.haven/\n - Prowlarr:\n href:\
|
||||
\ http://prowlarr.haven/\n\n- Storage:\n - Transmission:\n href: http://transmission.haven/\n\
|
||||
\ - qBitTorrent:\n href: http://qbittorrent.haven/\n - OpenMediaVault:\n\
|
||||
\ href: http://omv.haven/\n - ArchiveBox:\n href: http://archive.haven/\n\
|
||||
\ - FileBrowser:\n href: http://files.haven/\n - Paperless:\n \
|
||||
\ href: http://paperless.haven/\n\n- Other:\n - Uptime Kuma:\n href:\
|
||||
\ http://uptimekuma.haven/\n - WireGuard:\n href: http://vpn.haven/\n\
|
||||
\ - Beszel:\n href: http://beszel.haven/\n\n- Zephyr:\n - Gitea:\n\
|
||||
\ href: http://gitea.ivanch.me/\n - Portainer:\n href: http://portainer.ivanch.me/\n\
|
||||
\ - Nginx Proxy Manager:\n href: http://manager.ivanch.me/\n - Homepage:\n\
|
||||
\ href: http://ivanch.me/\n"
|
||||
settings.yaml: ''
|
||||
widgets.yaml: "- kubernetes:\n cluster:\n show: true\n cpu: true\n\
|
||||
\ memory: true\n # network: true\n showLabel: true\n label:\
|
||||
\ \"Haven\"\n nodes:\n show: true\n cpu: true\n memory: true\n\
|
||||
\ showLabel: true\n- resources:\n backend: resources\n expanded: true\n\
|
||||
\ cpu: true\n memory: true\n network: default\n- search:\n provider:\
|
||||
\ duckduckgo\n target: _blank\n"
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: homepage
|
||||
name: homepage
|
||||
namespace: default
|
||||
Reference in New Issue
Block a user