init
This commit is contained in:
11
clusters/cl01tl/services/cert-manager/Chart.yaml
Normal file
11
clusters/cl01tl/services/cert-manager/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: v2
|
||||
name: cert-manager
|
||||
version: 1.0.0
|
||||
sources:
|
||||
- https://github.com/cert-manager/cert-manager
|
||||
- https://github.com/cert-manager/cert-manager/tree/master/deploy/charts/cert-manager
|
||||
dependencies:
|
||||
- name: cert-manager
|
||||
version: v1.14.5
|
||||
repository: https://charts.jetstack.io
|
||||
appVersion: v1.14.3
|
@@ -0,0 +1,21 @@
|
||||
apiVersion: cert-manager.io/v1
|
||||
kind: ClusterIssuer
|
||||
metadata:
|
||||
name: letsencrypt-issuer
|
||||
spec:
|
||||
acme:
|
||||
email: alexanderlebens@gmail.com
|
||||
server: https://acme-v02.api.letsencrypt.org/directory
|
||||
privateKeySecretRef:
|
||||
name: letsencrypt-issuer-account-key
|
||||
solvers:
|
||||
- selector:
|
||||
dnsZones:
|
||||
- "alexlebens.net"
|
||||
- "*.alexlebens.net"
|
||||
dns01:
|
||||
cloudflare:
|
||||
email: alexanderlebens@gmail.com
|
||||
apiTokenSecretRef:
|
||||
name: cloudflare-api-token
|
||||
key: api-token
|
11
clusters/cl01tl/services/cert-manager/values.yaml
Normal file
11
clusters/cl01tl/services/cert-manager/values.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
cert-manager:
|
||||
installCRDs: true
|
||||
replicaCount: 2
|
||||
prometheus:
|
||||
enabled: true
|
||||
servicemonitor:
|
||||
enabled: true
|
||||
honorLabels: true
|
||||
cainjector:
|
||||
enabled: true
|
||||
replicaCount: 2
|
13
clusters/cl01tl/services/intel-device-plugin/Chart.yaml
Normal file
13
clusters/cl01tl/services/intel-device-plugin/Chart.yaml
Normal file
@@ -0,0 +1,13 @@
|
||||
apiVersion: v2
|
||||
name: node-feature-discovery
|
||||
version: 1.0.0
|
||||
sources:
|
||||
- https://github.com/intel/intel-device-plugins-for-kubernetes
|
||||
dependencies:
|
||||
- name: intel-device-plugins-operator
|
||||
version: 0.30.0
|
||||
repository: https://intel.github.io/helm-charts/
|
||||
- name: intel-device-plugins-gpu
|
||||
version: 0.30.0
|
||||
repository: https://intel.github.io/helm-charts/
|
||||
appVersion: 0.29.0
|
28
clusters/cl01tl/services/intel-device-plugin/values.yaml
Normal file
28
clusters/cl01tl/services/intel-device-plugin/values.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
intel-device-plugins-operator:
|
||||
nodeSelector:
|
||||
kubernetes.io/arch: amd64
|
||||
manager:
|
||||
image:
|
||||
hub: intel
|
||||
kubeRbacProxy:
|
||||
image:
|
||||
hub: gcr.io
|
||||
resources:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 120Mi
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 100Mi
|
||||
intel-device-plugins-gpu:
|
||||
name: gpudeviceplugin
|
||||
image:
|
||||
hub: intel
|
||||
sharedDevNum: 5
|
||||
logLevel: 2
|
||||
resourceManager: false
|
||||
enableMonitoring: true
|
||||
allocationPolicy: "none"
|
||||
nodeSelector:
|
||||
intel.feature.node.kubernetes.io/gpu: 'true'
|
||||
nodeFeatureRule: false
|
11
clusters/cl01tl/services/kube-prometheus-stack/Chart.yaml
Normal file
11
clusters/cl01tl/services/kube-prometheus-stack/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: v2
|
||||
name: kube-prometheus-stack
|
||||
version: 1.0.0
|
||||
sources:
|
||||
- https://github.com/prometheus/prometheus
|
||||
- https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack
|
||||
dependencies:
|
||||
- name: kube-prometheus-stack
|
||||
version: 58.5.3
|
||||
repository: https://prometheus-community.github.io/helm-charts
|
||||
appVersion: v0.72.0
|
@@ -0,0 +1,37 @@
|
||||
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
|
140
clusters/cl01tl/services/kube-prometheus-stack/values.yaml
Normal file
140
clusters/cl01tl/services/kube-prometheus-stack/values.yaml
Normal file
@@ -0,0 +1,140 @@
|
||||
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: traefik
|
||||
annotations:
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
cert-manager.io/cluster-issuer: letsencrypt-issuer
|
||||
hosts:
|
||||
- alertmanager.alexlebens.net
|
||||
tls:
|
||||
- secretName: alertmanager-secret-tls
|
||||
hosts:
|
||||
- alertmanager.alexlebens.net
|
||||
alertmanagerSpec:
|
||||
secrets:
|
||||
- alertmanager-config-secret
|
||||
replicas: 1
|
||||
externalUrl: https://alertmanager.alexlebens.net
|
||||
grafana:
|
||||
enabled: false
|
||||
kubeApiServer:
|
||||
tlsConfig:
|
||||
insecureSkipVerify: true
|
||||
kubeControllerManager:
|
||||
enabled: false
|
||||
kubeScheduler:
|
||||
enabled: false
|
||||
kubeProxy:
|
||||
enabled: false
|
||||
kube-state-metrics:
|
||||
selfMonitor:
|
||||
enabled: true
|
||||
nodeExporter:
|
||||
operatingSystems:
|
||||
darwin:
|
||||
enabled: false
|
||||
prometheusOperator:
|
||||
admissionWebhooks:
|
||||
enabled: true
|
||||
namespaces:
|
||||
releaseNamespace: true
|
||||
additional:
|
||||
- kube-system
|
||||
- argocd
|
||||
- authentik
|
||||
- cert-manager
|
||||
- cloudnative-pg
|
||||
- freshrss
|
||||
- gitea
|
||||
- grafana
|
||||
- home-assistant
|
||||
- local-static-provisioner
|
||||
- loki
|
||||
- matrix-synapse
|
||||
- outline
|
||||
- rook-ceph
|
||||
- speedtest-exporter
|
||||
- unpoller
|
||||
- vault
|
||||
- vikunja
|
||||
- lidarr2
|
||||
- qbittorrent
|
||||
- radarr5
|
||||
- radarr5-4k
|
||||
- readarr-audiobooks
|
||||
- readarr-books
|
||||
- sonarr4
|
||||
- sonarr4-4k
|
||||
- tdarr
|
||||
prometheus:
|
||||
ingress:
|
||||
enabled: true
|
||||
ingressClassName: traefik
|
||||
annotations:
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
traefik.ingress.kubernetes.io/router.tls: "true"
|
||||
cert-manager.io/cluster-issuer: letsencrypt-issuer
|
||||
hosts:
|
||||
- prometheus.alexlebens.net
|
||||
tls:
|
||||
- secretName: prometheus-secret-tls
|
||||
hosts:
|
||||
- prometheus.alexlebens.net
|
||||
prometheusSpec:
|
||||
scrapeInterval: 30s
|
||||
retention: 30d
|
||||
externalUrl: https://prometheus.alexlebens.net
|
||||
serviceMonitorSelectorNilUsesHelmValues: false
|
||||
podMonitorSelectorNilUsesHelmValues: false
|
||||
storageSpec:
|
||||
volumeClaimTemplate:
|
||||
spec:
|
||||
storageClassName: nfs-client
|
||||
accessModes: ["ReadWriteOnce"]
|
||||
resources:
|
||||
requests:
|
||||
storage: 1Gi
|
@@ -0,0 +1,11 @@
|
||||
apiVersion: v2
|
||||
name: kubernetes-cloudflare-ddns
|
||||
version: 0.0.1
|
||||
sources:
|
||||
- https://github.com/kubitodev/kubernetes-cloudflare-ddns
|
||||
- https://github.com/kubitodev/helm/tree/main/charts/kubernetes-cloudflare-ddns
|
||||
dependencies:
|
||||
- name: kubernetes-cloudflare-ddns
|
||||
version: 1.0.6
|
||||
repository: https://charts.kubito.dev
|
||||
appVersion: "1.0.1"
|
@@ -0,0 +1,44 @@
|
||||
apiVersion: external-secrets.io/v1beta1
|
||||
kind: ExternalSecret
|
||||
metadata:
|
||||
name: kubernetes-cloudflare-ddns-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: AUTH_KEY
|
||||
remoteRef:
|
||||
conversionStrategy: Default
|
||||
decodingStrategy: None
|
||||
key: /cloudflare/alexlebens-net
|
||||
metadataPolicy: None
|
||||
property: auth-key
|
||||
- secretKey: NAME
|
||||
remoteRef:
|
||||
conversionStrategy: Default
|
||||
decodingStrategy: None
|
||||
key: /cloudflare/alexlebens-net
|
||||
metadataPolicy: None
|
||||
property: name
|
||||
- secretKey: RECORD_ID
|
||||
remoteRef:
|
||||
conversionStrategy: Default
|
||||
decodingStrategy: None
|
||||
key: /cloudflare/alexlebens-net
|
||||
metadataPolicy: None
|
||||
property: record-id
|
||||
- secretKey: ZONE_ID
|
||||
remoteRef:
|
||||
conversionStrategy: Default
|
||||
decodingStrategy: None
|
||||
key: /cloudflare/alexlebens-net
|
||||
metadataPolicy: None
|
||||
property: zone-id
|
@@ -0,0 +1,12 @@
|
||||
kubernetes-cloudflare-ddns:
|
||||
image:
|
||||
repository: kubitodev/kubernetes-cloudflare-ddns
|
||||
tag: "2.0.0"
|
||||
cron:
|
||||
job:
|
||||
schedule: '"0 0 * * *"'
|
||||
successfulJobsHistoryLimit: 1
|
||||
pod:
|
||||
restartPolicy: OnFailure
|
||||
secret:
|
||||
existingSecret: kubernetes-cloudflare-ddns-secret
|
14
clusters/cl01tl/services/loki/Chart.yaml
Normal file
14
clusters/cl01tl/services/loki/Chart.yaml
Normal file
@@ -0,0 +1,14 @@
|
||||
apiVersion: v2
|
||||
name: loki
|
||||
version: 1.0.0
|
||||
sources:
|
||||
- https://github.com/grafana/loki
|
||||
- https://github.com/grafana/helm-charts
|
||||
dependencies:
|
||||
- name: loki
|
||||
version: 6.5.2
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
- name: promtail
|
||||
version: 6.15.5
|
||||
repository: https://grafana.github.io/helm-charts
|
||||
appVersion: 3.0.0
|
48
clusters/cl01tl/services/loki/values.yaml
Normal file
48
clusters/cl01tl/services/loki/values.yaml
Normal file
@@ -0,0 +1,48 @@
|
||||
loki:
|
||||
deploymentMode: SingleBinary
|
||||
loki:
|
||||
auth_enabled: true
|
||||
commonConfig:
|
||||
replication_factor: 1
|
||||
limits_config:
|
||||
allow_structured_metadata: false
|
||||
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: 10Gi
|
||||
storageClass: ceph-block
|
||||
write:
|
||||
replicas: 0
|
||||
read:
|
||||
replicas: 0
|
||||
backend:
|
||||
replicas: 0
|
||||
promtail:
|
||||
daemonset:
|
||||
enabled: true
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
prometheusRule:
|
||||
enabled: false
|
||||
config:
|
||||
clients:
|
||||
- url: http://loki-gateway/loki/api/v1/push
|
||||
tenant_id: 1
|
11
clusters/cl01tl/services/metallb/Chart.yaml
Normal file
11
clusters/cl01tl/services/metallb/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: v2
|
||||
name: metallb
|
||||
version: 1.0.0
|
||||
sources:
|
||||
- https://github.com/metallb/metallb
|
||||
- https://github.com/metallb/metallb/tree/main/charts/metallb
|
||||
dependencies:
|
||||
- name: metallb
|
||||
version: 0.14.5
|
||||
repository: https://metallb.github.io/metallb
|
||||
appVersion: 0.15.1
|
@@ -0,0 +1,16 @@
|
||||
apiVersion: metallb.io/v1beta1
|
||||
kind: IPAddressPool
|
||||
metadata:
|
||||
name: default
|
||||
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: network
|
||||
app.kubernetes.io/part-of: {{ .Release.Name }}
|
||||
spec:
|
||||
addresses:
|
||||
- 192.168.1.17/32
|
||||
- 192.168.1.16/32
|
||||
- 192.168.1.15/32
|
@@ -0,0 +1,8 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: metallb
|
||||
labels:
|
||||
pod-security.kubernetes.io/enforce: privileged
|
||||
pod-security.kubernetes.io/warn: privileged
|
||||
pod-security.kubernetes.io/audit: privileged
|
15
clusters/cl01tl/services/metallb/values.yaml
Normal file
15
clusters/cl01tl/services/metallb/values.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
metallb:
|
||||
controller:
|
||||
metrics:
|
||||
enabled: true
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
speaker:
|
||||
metrics:
|
||||
enabled: true
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
labels:
|
||||
pod-security.kubernetes.io/enforce: privileged
|
||||
pod-security.kubernetes.io/audit: privileged
|
||||
pod-security.kubernetes.io/warn: privileged
|
10
clusters/cl01tl/services/node-feature-discovery/Chart.yaml
Normal file
10
clusters/cl01tl/services/node-feature-discovery/Chart.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
apiVersion: v2
|
||||
name: node-feature-discovery
|
||||
version: 1.0.0
|
||||
sources:
|
||||
- https://github.com/kubernetes-sigs/node-feature-discovery
|
||||
dependencies:
|
||||
- name: node-feature-discovery
|
||||
version: 0.15.4
|
||||
repository: https://kubernetes-sigs.github.io/node-feature-discovery/charts
|
||||
appVersion: 0.15.1
|
256
clusters/cl01tl/services/node-feature-discovery/values.yaml
Normal file
256
clusters/cl01tl/services/node-feature-discovery/values.yaml
Normal file
@@ -0,0 +1,256 @@
|
||||
node-feature-discovery:
|
||||
enableNodeFeatureApi: true
|
||||
master:
|
||||
enable: true
|
||||
config: ### <NFD-MASTER-CONF-START-DO-NOT-REMOVE>
|
||||
# noPublish: false
|
||||
# autoDefaultNs: true
|
||||
# extraLabelNs: ["added.ns.io","added.kubernets.io","intel.com","devicetree.org"]
|
||||
# denyLabelNs: ["denied.ns.io","denied.kubernetes.io"]
|
||||
# resourceLabels: ["vendor-1.com/feature-1","vendor-2.io/feature-2"]
|
||||
# enableTaints: false
|
||||
# labelWhiteList: "foo"
|
||||
# resyncPeriod: "2h"
|
||||
# klog:
|
||||
# addDirHeader: false
|
||||
# alsologtostderr: false
|
||||
# logBacktraceAt:
|
||||
# logtostderr: true
|
||||
# skipHeaders: false
|
||||
# stderrthreshold: 2
|
||||
# v: 0
|
||||
# vmodule:
|
||||
## NOTE: the following options are not dynamically run-time configurable
|
||||
## and require a nfd-master restart to take effect after being changed
|
||||
# logDir:
|
||||
# logFile:
|
||||
# logFileMaxSize: 1800
|
||||
# skipLogHeaders: false
|
||||
# leaderElection:
|
||||
# leaseDuration: 15s
|
||||
# # this value has to be lower than leaseDuration and greater than retryPeriod*1.2
|
||||
# renewDeadline: 10s
|
||||
# # this value has to be greater than 0
|
||||
# retryPeriod: 2s
|
||||
# nfdApiParallelism: 10
|
||||
### <NFD-MASTER-CONF-END-DO-NOT-REMOVE>
|
||||
port: 8080
|
||||
metricsPort: 8081
|
||||
instance:
|
||||
featureApi:
|
||||
resyncPeriod:
|
||||
denyLabelNs: []
|
||||
extraLabelNs: []
|
||||
resourceLabels: []
|
||||
enableTaints: false
|
||||
crdController: null
|
||||
featureRulesController: null
|
||||
nfdApiParallelism: null
|
||||
deploymentAnnotations: {}
|
||||
replicaCount: 1
|
||||
podSecurityContext: {}
|
||||
# fsGroup: 2000
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop: ["ALL"]
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
# runAsUser: 1000
|
||||
serviceAccount:
|
||||
create: true
|
||||
name:
|
||||
rbac:
|
||||
create: true
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 8080
|
||||
resources:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
tolerations:
|
||||
- key: "node-role.kubernetes.io/control-plane"
|
||||
operator: "Equal"
|
||||
value: ""
|
||||
effect: "NoSchedule"
|
||||
affinity:
|
||||
nodeAffinity:
|
||||
preferredDuringSchedulingIgnoredDuringExecution:
|
||||
- weight: 1
|
||||
preference:
|
||||
matchExpressions:
|
||||
- key: "node-role.kubernetes.io/control-plane"
|
||||
operator: In
|
||||
values: [""]
|
||||
worker:
|
||||
enable: true
|
||||
config: ### <NFD-WORKER-CONF-START-DO-NOT-REMOVE>
|
||||
#core:
|
||||
# labelWhiteList:
|
||||
# noPublish: false
|
||||
# sleepInterval: 60s
|
||||
# featureSources: [all]
|
||||
# labelSources: [all]
|
||||
# klog:
|
||||
# addDirHeader: false
|
||||
# alsologtostderr: false
|
||||
# logBacktraceAt:
|
||||
# logtostderr: true
|
||||
# skipHeaders: false
|
||||
# stderrthreshold: 2
|
||||
# v: 0
|
||||
# vmodule:
|
||||
## NOTE: the following options are not dynamically run-time configurable
|
||||
## and require a nfd-worker restart to take effect after being changed
|
||||
# logDir:
|
||||
# logFile:
|
||||
# logFileMaxSize: 1800
|
||||
# skipLogHeaders: false
|
||||
sources:
|
||||
cpu:
|
||||
cpuid:
|
||||
attributeWhitelist:
|
||||
- "AVX512BW"
|
||||
- "AVX512CD"
|
||||
- "AVX512DQ"
|
||||
- "AVX512F"
|
||||
- "AVX512VL"
|
||||
kernel:
|
||||
configOpts:
|
||||
- "NO_HZ"
|
||||
- "X86"
|
||||
- "DMI"
|
||||
usb:
|
||||
deviceClassWhitelist:
|
||||
- "02"
|
||||
- "03"
|
||||
- "0e"
|
||||
- "ef"
|
||||
- "fe"
|
||||
- "ff"
|
||||
deviceLabelFields:
|
||||
- "vendor"
|
||||
- "device"
|
||||
- "class"
|
||||
pci:
|
||||
deviceClassWhitelist:
|
||||
- "0200"
|
||||
- "01"
|
||||
- "08"
|
||||
- "0300"
|
||||
- "0302"
|
||||
deviceLabelFields:
|
||||
- "vendor"
|
||||
- "device"
|
||||
- "class"
|
||||
custom:
|
||||
- # Intel integrated GPU
|
||||
name: "intel-gpu"
|
||||
labels:
|
||||
intel.feature.node.kubernetes.io/gpu: 'true'
|
||||
matchOn:
|
||||
- pciId:
|
||||
class: ["0300"]
|
||||
vendor: ["8086"]
|
||||
- # Google Coral USB Accelerator
|
||||
name: google.coral
|
||||
labels:
|
||||
google.feature.node.kubernetes.io/coral: "true"
|
||||
matchFeatures:
|
||||
- feature: usb.device
|
||||
matchExpressions:
|
||||
vendor: { op: In, value: ["1a6e", "18d1"] }
|
||||
- # Aeotec Z-Stick Gen5+
|
||||
name: aeotec.zwave
|
||||
labels:
|
||||
aeotec.feature.node.kubernetes.io/zwave: "true"
|
||||
matchFeatures:
|
||||
- feature: usb.device
|
||||
matchExpressions:
|
||||
class: { op: In, value: ["02"] }
|
||||
vendor: { op: In, value: ["0658"] }
|
||||
device: { op: In, value: ["0200"] }
|
||||
### <NFD-WORKER-CONF-END-DO-NOT-REMOVE>
|
||||
metricsPort: 8081
|
||||
podSecurityContext: {}
|
||||
# fsGroup: 2000
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop: ["ALL"]
|
||||
readOnlyRootFilesystem: true
|
||||
runAsNonRoot: true
|
||||
# runAsUser: 1000
|
||||
serviceAccount:
|
||||
create: true
|
||||
name:
|
||||
rbac:
|
||||
create: true
|
||||
mountUsrSrc: false
|
||||
resources:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
topologyUpdater:
|
||||
config: ### <NFD-TOPOLOGY-UPDATER-CONF-START-DO-NOT-REMOVE>
|
||||
## key = node name, value = list of resources to be excluded.
|
||||
## use * to exclude from all nodes.
|
||||
## an example for how the exclude list should looks like
|
||||
#excludeList:
|
||||
# node1: [cpu]
|
||||
# node2: [memory, example/deviceA]
|
||||
# *: [hugepages-2Mi]
|
||||
### <NFD-TOPOLOGY-UPDATER-CONF-END-DO-NOT-REMOVE>
|
||||
enable: true
|
||||
createCRDs: true
|
||||
serviceAccount:
|
||||
create: true
|
||||
name:
|
||||
rbac:
|
||||
create: true
|
||||
metricsPort: 8081
|
||||
updateInterval: 60s
|
||||
watchNamespace: "*"
|
||||
kubeletStateDir: /var/lib/kubelet
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
capabilities:
|
||||
drop: ["ALL"]
|
||||
readOnlyRootFilesystem: true
|
||||
runAsUser: 0
|
||||
resources:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
gc:
|
||||
enable: true
|
||||
replicaCount: 1
|
||||
serviceAccount:
|
||||
create: true
|
||||
name:
|
||||
rbac:
|
||||
create: true
|
||||
interval: 1h
|
||||
resources:
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
metricsPort: 8081
|
||||
tls:
|
||||
enable: false
|
||||
certManager: false
|
||||
prometheus:
|
||||
enable: false
|
11
clusters/cl01tl/services/reloader/Chart.yaml
Normal file
11
clusters/cl01tl/services/reloader/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: v2
|
||||
name: reloader
|
||||
version: 1.0.0
|
||||
sources:
|
||||
- https://github.com/stakater/Reloader
|
||||
- https://github.com/stakater/Reloader/blob/master/deployments/kubernetes/chart/reloader/Chart.yaml
|
||||
dependencies:
|
||||
- name: reloader
|
||||
version: 1.0.97
|
||||
repository: https://stakater.github.io/stakater-charts
|
||||
appVersion: 1.0.80
|
5
clusters/cl01tl/services/reloader/values.yaml
Normal file
5
clusters/cl01tl/services/reloader/values.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
reloader:
|
||||
reloader:
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
namespace: reloader
|
11
clusters/cl01tl/services/speedtest-exporter/Chart.yaml
Normal file
11
clusters/cl01tl/services/speedtest-exporter/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: v2
|
||||
name: speedtest-exporter
|
||||
version: 1.0.0
|
||||
sources:
|
||||
- https://github.com/MiguelNdeCarvalho/speedtest-exporter
|
||||
- https://gitlab.com/alexander-chernov/helm/speedtest-exporter
|
||||
dependencies:
|
||||
- name: speedtest-exporter
|
||||
version: 0.1.1
|
||||
repository: https://charts.alekc.dev
|
||||
appVersion: v3.5.4
|
16
clusters/cl01tl/services/speedtest-exporter/values.yaml
Normal file
16
clusters/cl01tl/services/speedtest-exporter/values.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
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: "60m"
|
||||
scrapeTimeout: "2m"
|
11
clusters/cl01tl/services/tailscale-operator/Chart.yaml
Normal file
11
clusters/cl01tl/services/tailscale-operator/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: v2
|
||||
name: tailscale-operator
|
||||
version: 1.0.0
|
||||
sources:
|
||||
- https://github.com/tailscale/tailscale/tree/main/cmd/k8s-operator/deploy
|
||||
- https://github.com/tailscale/tailscale/tree/main/cmd/k8s-operator/deploy/chart
|
||||
dependencies:
|
||||
- name: tailscale-operator
|
||||
version: 1.66.3
|
||||
repository: https://pkgs.tailscale.com/helmcharts
|
||||
appVersion: v1.64.2
|
@@ -0,0 +1,30 @@
|
||||
apiVersion: external-secrets.io/v1beta1
|
||||
kind: ExternalSecret
|
||||
metadata:
|
||||
name: operator-oauth
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
app.kubernetes.io/name: operator-oauth
|
||||
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: client_id
|
||||
remoteRef:
|
||||
conversionStrategy: Default
|
||||
decodingStrategy: None
|
||||
key: /tailscale/operator/oauth
|
||||
metadataPolicy: None
|
||||
property: clientId
|
||||
- secretKey: client_secret
|
||||
remoteRef:
|
||||
conversionStrategy: Default
|
||||
decodingStrategy: None
|
||||
key: /tailscale/operator/oauth
|
||||
metadataPolicy: None
|
||||
property: clientSecret
|
22
clusters/cl01tl/services/tailscale-operator/values.yaml
Normal file
22
clusters/cl01tl/services/tailscale-operator/values.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
tailscale-operator:
|
||||
oauth: {}
|
||||
installCRDs: true
|
||||
operatorConfig:
|
||||
defaultTags:
|
||||
- "tag:k8s-operator"
|
||||
image:
|
||||
repo: tailscale/k8s-operator
|
||||
tag: v1.64.2
|
||||
pullPolicy: Always
|
||||
logging: info
|
||||
hostname: tailscale-operator-cl01tl
|
||||
nodeSelector:
|
||||
kubernetes.io/os: linux
|
||||
proxyConfig:
|
||||
image:
|
||||
repo: tailscale/tailscale
|
||||
tag: v1.64.2
|
||||
defaultTags: "tag:k8s"
|
||||
firewallMode: auto
|
||||
apiServerProxyConfig:
|
||||
mode: "false"
|
11
clusters/cl01tl/services/traefik/Chart.yaml
Normal file
11
clusters/cl01tl/services/traefik/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: v2
|
||||
name: traefik
|
||||
version: 1.0.0
|
||||
sources:
|
||||
- https://github.com/traefik/traefik
|
||||
- https://github.com/traefik/traefik-helm-chart
|
||||
dependencies:
|
||||
- name: traefik
|
||||
version: 28.0.0
|
||||
repository: https://traefik.github.io/charts
|
||||
appVersion: v3.0.0
|
19
clusters/cl01tl/services/traefik/templates/certificate.yaml
Normal file
19
clusters/cl01tl/services/traefik/templates/certificate.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
apiVersion: cert-manager.io/v1
|
||||
kind: Certificate
|
||||
metadata:
|
||||
name: traefik-certificate
|
||||
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:
|
||||
secretName: traefik-secret-tls
|
||||
dnsNames:
|
||||
- "alexlebens.net"
|
||||
- "*.alexlebens.net"
|
||||
issuerRef:
|
||||
name: letsencrypt-issuer
|
||||
kind: ClusterIssuer
|
82
clusters/cl01tl/services/traefik/values.yaml
Normal file
82
clusters/cl01tl/services/traefik/values.yaml
Normal file
@@ -0,0 +1,82 @@
|
||||
traefik:
|
||||
deployment:
|
||||
kind: DaemonSet
|
||||
ingressClass:
|
||||
enabled: true
|
||||
isDefaultClass: true
|
||||
ingressRoute:
|
||||
dashboard:
|
||||
enabled: true
|
||||
matchRule: (Host(`traefik-cl01tl.alexlebens.net`) && (PathPrefix(`/api/`) || PathPrefix(`/dashboard/`)))
|
||||
entryPoints: ["websecure"]
|
||||
providers:
|
||||
kubernetesCRD:
|
||||
allowCrossNamespace: true
|
||||
allowEmptyServices: true
|
||||
kubernetesIngress:
|
||||
allowEmptyServices: true
|
||||
publishedService:
|
||||
enabled: true
|
||||
metrics:
|
||||
service:
|
||||
enabled: true
|
||||
globalArguments: []
|
||||
ports:
|
||||
web:
|
||||
expose:
|
||||
default: true
|
||||
exposedPort: 80
|
||||
redirectTo:
|
||||
port: websecure
|
||||
priority: 10
|
||||
forwardedHeaders:
|
||||
trustedIPs:
|
||||
- 10.0.0.0/8
|
||||
- 172.16.0.0/16
|
||||
- 192.168.0.0/16
|
||||
- fc00::/7
|
||||
insecure: false
|
||||
proxyProtocol:
|
||||
trustedIPs:
|
||||
- 10.0.0.0/8
|
||||
- 172.16.0.0/16
|
||||
- 192.168.0.0/16
|
||||
- fc00::/7
|
||||
insecure: false
|
||||
websecure:
|
||||
port: 8443
|
||||
expose:
|
||||
default: true
|
||||
exposedPort: 443
|
||||
forwardedHeaders:
|
||||
trustedIPs:
|
||||
- 10.0.0.0/8
|
||||
- 172.16.0.0/16
|
||||
- 192.168.0.0/16
|
||||
- fc00::/7
|
||||
insecure: false
|
||||
proxyProtocol:
|
||||
trustedIPs:
|
||||
- 10.0.0.0/8
|
||||
- 172.16.0.0/16
|
||||
- 192.168.0.0/16
|
||||
- fc00::/7
|
||||
insecure: false
|
||||
tls:
|
||||
enabled: true
|
||||
metrics:
|
||||
expose:
|
||||
default: false
|
||||
tlsStore:
|
||||
default:
|
||||
defaultCertificate:
|
||||
secretName: traefik-secret-tls
|
||||
service:
|
||||
enabled: true
|
||||
type: LoadBalancer
|
||||
annotations:
|
||||
metallb.universe.tf/allow-shared-ip: "external"
|
||||
externalIPs:
|
||||
- 192.168.1.17
|
||||
- 192.168.1.16
|
||||
- 192.168.1.15
|
11
clusters/cl01tl/services/unpoller/Chart.yaml
Normal file
11
clusters/cl01tl/services/unpoller/Chart.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: v2
|
||||
name: unpoller
|
||||
version: 1.0.0
|
||||
sources:
|
||||
- https://github.com/unpoller/unpoller
|
||||
- https://github.com/homeylab/helm-charts/tree/main/charts/unpoller
|
||||
dependencies:
|
||||
- name: unpoller
|
||||
version: 2.1.0
|
||||
repository: https://homeylab.github.io/helm-charts/
|
||||
appVersion: "v2.10.0"
|
@@ -0,0 +1,30 @@
|
||||
apiVersion: external-secrets.io/v1beta1
|
||||
kind: ExternalSecret
|
||||
metadata:
|
||||
name: unpoller-unifi-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: 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
|
33
clusters/cl01tl/services/unpoller/values.yaml
Normal file
33
clusters/cl01tl/services/unpoller/values.yaml
Normal file
@@ -0,0 +1,33 @@
|
||||
unpoller:
|
||||
replicaCount: 1
|
||||
image:
|
||||
name: unpoller/unpoller
|
||||
tag: "v2.10.0"
|
||||
updateStrategy:
|
||||
type: Recreate
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 9130
|
||||
protocol: TCP
|
||||
name: metrics
|
||||
metrics:
|
||||
enabled: true
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
interval: 30s
|
||||
scrapeTimeout: 10s
|
||||
prometheusRule:
|
||||
enabled: true
|
||||
existingSecret: unpoller-unifi-secret
|
||||
settings:
|
||||
unifi:
|
||||
config:
|
||||
url: https://unifi.alexlebens.net/
|
||||
save_sites: true
|
||||
verify_ssl: false
|
||||
prometheus:
|
||||
namespace: unpoller
|
||||
http_listen: "0.0.0.0:9130"
|
||||
unpoller:
|
||||
debug: false
|
||||
quiet: false
|
Reference in New Issue
Block a user