stage for rebuilt

This commit is contained in:
2025-02-14 22:05:52 -06:00
parent 91c1b3931d
commit 8b4eee804f
329 changed files with 12 additions and 12 deletions

View File

@@ -1,21 +0,0 @@
apiVersion: v2
name: grafana
version: 1.0.0
description: Grafana
keywords:
- grafana
- dashboard
- metrics
- logs
home: https://wiki.alexlebens.dev/doc/grafana-BFwY2bvVzt
sources:
- https://github.com/grafana/grafana
- https://github.com/grafana/helm-charts/tree/main/charts/grafana
maintainers:
- name: alexlebens
dependencies:
- name: grafana
version: 8.9.0
repository: https://grafana.github.io/helm-charts
icon: https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/png/grafana.png
appVersion: 11.4.0

View File

@@ -1,121 +0,0 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: grafana-auth-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: admin-user
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/grafana/auth
metadataPolicy: None
property: admin-user
- secretKey: admin-password
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/grafana/auth
metadataPolicy: None
property: admin-password
---
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: grafana-oauth-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: GF_AUTH_GENERIC_OAUTH_CLIENT_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /authentik/oidc/grafana
metadataPolicy: None
property: client
- secretKey: GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /authentik/oidc/grafana
metadataPolicy: None
property: secret
---
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: grafana-backup-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: grafana-backup-secret
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: backup
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
target:
template:
mergePolicy: Merge
engineVersion: v2
data:
RESTIC_REPOSITORY: "{{ `{{ .BUCKET_ENDPOINT }}` }}/grafana/grafana"
data:
- secretKey: BUCKET_ENDPOINT
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/volsync/restic/config
metadataPolicy: None
property: S3_BUCKET_ENDPOINT
- secretKey: RESTIC_PASSWORD
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/volsync/restic/config
metadataPolicy: None
property: RESTIC_PASSWORD
- secretKey: AWS_DEFAULT_REGION
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /cl01tl/volsync/restic/config
metadataPolicy: None
property: AWS_DEFAULT_REGION
- secretKey: AWS_ACCESS_KEY_ID
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/volsync-backups
metadataPolicy: None
property: access_key
- secretKey: AWS_SECRET_ACCESS_KEY
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /digital-ocean/home-infra/volsync-backups
metadataPolicy: None
property: secret_key

View File

@@ -1,30 +0,0 @@
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: grafana-backup-source
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: grafana-backup-source
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: backup
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
sourcePVC: grafana
trigger:
schedule: 0 0 */3 * *
restic:
pruneIntervalDays: 14
repository: grafana-backup-secret
retain:
hourly: 1
daily: 1
weekly: 1
monthly: 2
yearly: 4
moverSecurityContext:
runAsUser: 472
runAsGroup: 472
copyMethod: Snapshot
storageClassName: ceph-block-delete
volumeSnapshotClassName: ceph-blockpool-snapshot

View File

@@ -1,151 +0,0 @@
grafana:
deploymentStrategy:
type: Recreate
createConfigmap: true
serviceMonitor:
enabled: true
ingress:
enabled: true
ingressClassName: tailscale
hosts:
- grafana-cl01tl
tls:
- secretName: grafana-cl01tl
hosts:
- grafana-cl01tl
persistence:
enabled: true
storageClassName: ceph-block
admin:
existingSecret: grafana-auth-secret
userKey: admin-user
passwordKey: admin-password
envFromSecret: grafana-oauth-secret
plugins:
- grafana-clock-panel
- grafana-worldmap-panel
- grafana-lokiexplore-app
- isovalent-hubble-datasource
- marcusolsson-treemap-panel
- camptocamp-prometheus-alertmanager-datasource
datasources:
datasources.yaml:
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
uid: prometheus
url: http://kube-prometheus-stack-prometheus.kube-prometheus-stack:9090/
access: proxy
isDefault: true
jsonData:
timeInterval: 30s
- name: Loki
type: loki
url: http://loki.loki:3100
jsonData:
httpHeaderName1: "X-Scope-OrgID"
secureJsonData:
httpHeaderValue1: "1"
dashboardProviders:
dashboardproviders.yaml:
apiVersion: 1
providers:
- name: "app-gitea"
orgId: 1
folder: "Application"
type: file
disableDeletion: true
editable: false
options:
path: /var/lib/grafana/dashboards/app-gitea
- name: "srv-gitea"
orgId: 1
folder: "Service"
type: file
disableDeletion: true
editable: false
options:
path: /var/lib/grafana/dashboards/srv-gitea
- name: "sys-gitea"
orgId: 1
folder: "System"
type: file
disableDeletion: true
editable: false
options:
path: /var/lib/grafana/dashboards/sys-gitea
dashboards:
app-gitea:
immich:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/application/immich.json
radarr:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/application/radarr.json
sonarr:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/application/sonarr.json
srv-gitea:
alertmanager:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/alertmanager.json
argocd:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/argocd.json
authentik:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/authentik.json
blocky:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/blocky.json
cert-manager:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/cert-manager.json
cloudnativepg:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/cloudnativepg.json
coredns:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/coredns.json
descheduler:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/descheduler.json
minio:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/minio.json
speedtest-exporter:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/speedtest-exporter.json
spegel:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/spegel.json
traefik:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/traefik.json
trivy:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/trivy.json
unpoller:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/unpoller.json
vault:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/vault.json
volsync:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/service/volsync.json
sys-gitea:
ceph:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/system/ceph.json
etcd:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/system/etcd.json
loki:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/system/loki.json
node-full:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/system/node-full.json
node-short:
url: https://gitea.alexlebens.dev/alexlebens/grafana-dashboards/raw/branch/main/dashboards/system/node-short.json
grafana.ini:
analytics:
check_for_updates: false
server:
domain: alexlebens.net
root_url: https://grafana-cl01tl.boreal-beaufort.ts.net
users:
auto_assign_org: true
auto_assign_org_id: 1
auth:
disable_login_form: true
oauth_auto_login: true
signout_redirect_url: https://auth-cl01tl.boreal-beaufort.ts.net/application/o/grafana/end-session/
auth.generic_oauth:
enabled: true
name: Authentik
allow_sign_up: true
scopes: openid profile email
auth_url: https://auth-cl01tl.boreal-beaufort.ts.net/application/o/authorize/
token_url: https://auth-cl01tl.boreal-beaufort.ts.net/application/o/token/
api_url: https://auth-cl01tl.boreal-beaufort.ts.net/application/o/userinfo/
role_attribute_path: contains(groups, 'Grafana Admins') && 'Admin' || contains(groups, 'Grafana Editors') && 'Editor' || 'Viewer'

View File

@@ -1,23 +0,0 @@
apiVersion: v2
name: kube-prometheus-stack
version: 1.0.0
description: Kube Prometheus Stack
keywords:
- kube-prometheus-stack
- prometheus
- alertmanager
- metrics
- alerts
- kubernetes
home: https://wiki.alexlebens.dev/doc/kube-prometheus-stack-pPGJlzAqur
sources:
- https://github.com/prometheus/prometheus
- https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack
maintainers:
- name: alexlebens
dependencies:
- name: kube-prometheus-stack
version: 68.4.5
repository: https://prometheus-community.github.io/helm-charts
icon: https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/png/prometheus.png
appVersion: v0.79.2

View File

@@ -1,37 +0,0 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: alertmanager-config-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: discord_webhook
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /discord/alertmanager
metadataPolicy: None
property: webhook
- secretKey: pushover_token
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /pushover/key
metadataPolicy: None
property: alertmanager_key
- secretKey: user_key
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /pushover/key
metadataPolicy: None
property: user_key

View File

@@ -1,154 +0,0 @@
kube-prometheus-stack:
crds:
enabled: false
defaultRules:
create: true
rules:
kubeControllerManager: false
kubeSchedulerAlerting: false
kubeSchedulerRecording: false
global:
rbac:
create: true
createAggregateClusterRoles: true
alertmanager:
enabled: true
config:
route:
group_by: ["namespace", "alertname"]
group_wait: 30s
group_interval: 5m
repeat_interval: 24h
receiver: discord
routes:
- receiver: "null"
matchers:
- alertname = "Watchdog"
- receiver: "pushover"
group_wait: 10s
group_interval: 5m
repeat_interval: 24h
matchers:
- severity = "critical"
receivers:
- name: "null"
- name: discord
discord_configs:
- send_resolved: true
webhook_url: https://discord.com/api/webhooks/1215465356315983922/CSaWG3SygslTNQo0uw07FB-0eKGl9nw2kDAqbAfH7JMe1ExVin8UvjlP4qkJoEyjDawz
- name: pushover
pushover_configs:
- send_resolved: true
user_key_file: /etc/alertmanager/secrets/alertmanager-config-secret/user_key
token_file: /etc/alertmanager/secrets/alertmanager-config-secret/pushover_token
ingress:
enabled: true
ingressClassName: tailscale
hosts:
- alertmanager-cl01tl
tls:
- secretName: alertmanager-cl01tl
hosts:
- alertmanager-cl01tl
alertmanagerSpec:
secrets:
- alertmanager-config-secret
replicas: 1
externalUrl: https://alertmanager-cl01tl.boreal-beaufort.ts.net
grafana:
enabled: false
kubeApiServer:
tlsConfig:
insecureSkipVerify: true
kubeControllerManager:
enabled: false
kubeEtcd:
enabled: true
kubeScheduler:
enabled: false
kubeProxy:
enabled: false
kubeStateMetrics:
enabled: true
nodeExporter:
operatingSystems:
darwin:
enabled: false
prometheusOperator:
admissionWebhooks:
enabled: true
namespaces:
releaseNamespace: true
additional:
- kube-system
- argo-workflows
- argocd
- authentik
- blocky
- cert-manager
- cloudnative-pg
- descheduler
- directus
- external-dns
- freshrss
- generic-device-plugin
- gitea
- grafana
- hoarder
- home-assistant
- immich
- jellystat
- lidarr2
- linkwarden
- loki
- matrix-synapse
- ollama
- outline
- penpot
- qbittorrent
- radarr5
- radarr5-4k
- radarr5-anime
- radarr5-standup
- reloader
- rook-ceph
- roundcube
- ryot
- slskd
- sonarr4
- sonarr4-4k
- sonarr4-anime
- speedtest-exporter
- spegel
- stalwart
- tdarr
- traefik
- trivy
- unpoller
- vault
- vaultwarden
- volsync
prometheus:
ingress:
enabled: true
ingressClassName: tailscale
hosts:
- prometheus-cl01tl
tls:
- secretName: prometheus-cl01tl
hosts:
- prometheus-cl01tl
prometheusSpec:
scrapeInterval: 30s
retention: 30d
externalUrl: https://prometheus-cl01tl.boreal-beaufort.ts.net
serviceMonitorSelectorNilUsesHelmValues: false
podMonitorSelectorNilUsesHelmValues: false
storageSpec:
volumeClaimTemplate:
spec:
storageClassName: synology-iscsi-delete
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 200Gi

View File

@@ -1,24 +0,0 @@
apiVersion: v2
name: loki
version: 1.0.0
description: Loki
keywords:
- loki
- promtail
- logs
- kubernetes
home: https://wiki.alexlebens.dev/doc/loki-nWZjwkFZCo
sources:
- https://github.com/grafana/loki
- https://github.com/grafana/helm-charts
maintainers:
- name: alexlebens
dependencies:
- name: loki
version: 6.25.1
repository: https://grafana.github.io/helm-charts
- name: promtail
version: 6.16.6
repository: https://grafana.github.io/helm-charts
icon: https://raw.githubusercontent.com/walkxcode/dashboard-icons/main/png/loki.png
appVersion: 3.3.2

View File

@@ -1,64 +0,0 @@
loki:
deploymentMode: SingleBinary
loki:
auth_enabled: true
commonConfig:
replication_factor: 1
ingester_client:
pool_config:
remote_timeout: 10s
remote_timeout: 10s
limits_config:
allow_structured_metadata: false
max_streams_per_user: 100000
ingestion_rate_mb: 1024
ingestion_burst_size_mb: 1024
retention_period: 7d
compactor:
delete_request_store: filesystem
working_directory: /var/loki/compactor
compaction_interval: 10m
retention_enabled: true
retention_delete_delay: 2h
retention_delete_worker_count: 150
storage:
type: filesystem
schemaConfig:
configs:
- from: "2024-01-11"
store: boltdb-shipper
object_store: filesystem
schema: v13
index:
period: 24h
enterprise:
enabled: false
gateway:
enabled: true
basicAuth:
enabled: false
singleBinary:
replicas: 1
persistence:
enableStatefulSetAutoDeletePVC: true
enabled: true
size: 100Gi
storageClass: synology-iscsi-delete
write:
replicas: 0
read:
replicas: 0
backend:
replicas: 0
promtail:
service:
labels:
promtail: 3.0.0
serviceMonitor:
enabled: true
prometheusRule:
enabled: false
config:
clients:
- url: http://loki-gateway.loki.svc.cluster.local:80/loki/api/v1/push
tenant_id: 1

View File

@@ -1,19 +0,0 @@
apiVersion: v2
name: speedtest-exporter
version: 1.0.0
description: Speedtest Exporter
keywords:
- speedtest-exporter
- internet
- metrics
home: https://wiki.alexlebens.dev/doc/speedtest-exporter-kzRJxX7GUb
sources:
- https://github.com/MiguelNdeCarvalho/speedtest-exporter
- https://gitlab.com/alexander-chernov/helm/speedtest-exporter
maintainers:
- name: alexlebens
dependencies:
- name: speedtest-exporter
version: 0.1.1
repository: https://charts.alekc.dev
appVersion: v3.5.4

View File

@@ -1,16 +0,0 @@
speedtest-exporter:
image:
repository: ghcr.io/miguelndecarvalho/speedtest-exporter
tag: v3.5.4
securityContext:
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
serviceMonitor:
enabled: true
namespace: speedtest-exporter
interval: "180m"
scrapeTimeout: "2m"

View File

@@ -1,23 +0,0 @@
apiVersion: v2
name: unpoller
version: 1.0.0
description: Unpoller
keywords:
- unpoller
- ubiquiti
- unifi
- metrics
home: https://wiki.alexlebens.dev/doc/unpoller-ZG6iBCZATk
sources:
- https://github.com/unpoller/unpoller
- https://github.com/unpoller/unpoller/pkgs/container/unpoller
- https://github.com/bjw-s/helm-charts/blob/main/charts/other/app-template/values.yaml
maintainers:
- name: alexlebens
dependencies:
- name: app-template
alias: unpoller
repository: https://bjw-s.github.io/helm-charts/
version: 3.6.1
icon: https://camo.githubusercontent.com/c5d07a5b3acfeac8e1c25bf56f440ffe032b86e4e7f15de82357f022a43fc927/68747470733a2f2f756e706f6c6c65722e636f6d2f696d672f6c6f676f2e706e67
appVersion: v2.11.2

View File

@@ -1,30 +0,0 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: unpoller-unifi-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: unpoller-unifi-secret
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
secretStoreRef:
kind: ClusterSecretStore
name: vault
data:
- secretKey: UP_UNIFI_CONTROLLER_0_USER
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /unifi/auth
metadataPolicy: None
property: user
- secretKey: UP_UNIFI_CONTROLLER_0_PASS
remoteRef:
conversionStrategy: Default
decodingStrategy: None
key: /unifi/auth
metadataPolicy: None
property: password

View File

@@ -1,21 +0,0 @@
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: unpoller
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: unpoller
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: metrics
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: unpoller
app.kubernetes.io/instance: {{ .Release.Name }}
endpoints:
- port: metrics
interval: 30s
scrapeTimeout: 10s
path: /metrics

View File

@@ -1,57 +0,0 @@
unpoller:
controllers:
main:
type: deployment
replicas: 1
strategy: Recreate
revisionHistoryLimit: 3
containers:
main:
image:
repository: ghcr.io/unpoller/unpoller
tag: v2.14.1
pullPolicy: IfNotPresent
env:
- name: UP_UNIFI_CONTROLLER_0_SAVE_ALARMS
value: 'false'
- name: UP_UNIFI_CONTROLLER_0_SAVE_ANOMALIES
value: 'false'
- name: UP_UNIFI_CONTROLLER_0_SAVE_DPI
value: 'false'
- name: UP_UNIFI_CONTROLLER_0_SAVE_EVENTS
value: 'false'
- name: UP_UNIFI_CONTROLLER_0_SAVE_IDS
value: 'false'
- name: UP_UNIFI_CONTROLLER_0_SAVE_SITES
value: 'true'
- name: UP_UNIFI_CONTROLLER_0_URL
value: https://unifi.alexlebens.net/
- name: UP_UNIFI_CONTROLLER_0_VERIFY_SSL
value: 'false'
- name: UP_INFLUXDB_DISABLE
value: 'true'
- name: UP_PROMETHEUS_HTTP_LISTEN
value: 0.0.0.0:9130
- name: UP_PROMETHEUS_NAMESPACE
value: unpoller
- name: UP_POLLER_DEBUG
value: 'false'
- name: UP_POLLER_QUIET
value: 'false'
envFrom:
- secretRef:
name: unpoller-unifi-secret
resources:
requests:
cpu: 10m
memory: 64Mi
serviceAccount:
create: true
service:
main:
controller: main
ports:
metrics:
port: 9130
targetPort: 9130
protocol: TCP