deployment: kind: Deployment replicas: 2 updateStrategy: type: RollingUpdate rollingUpdate: maxUnavailable: 0 maxSurge: 1 podDisruptionBudget: enabled: true minAvailable: 1 resources: requests: cpu: 500m memory: 1Gi affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app.kubernetes.io/name: traefik app.kubernetes.io/instance: traefik-default topologyKey: kubernetes.io/hostname service: enabled: true annotations: mikrotik.brunner.ninja/router: newgw mikrotik.brunner.ninja/forwardings: >- [{"name":"http","servicePort":"web","dstAddressList":"WANs"},{"name":"https","servicePort":"websecure","dstAddressList":"WANs"}] spec: type: LoadBalancer externalTrafficPolicy: Local additionalServices: funkfeuer: spec: type: ClusterIP externalIPs: - 10.12.4.170 - 192.168.0.2 accessLog: enabled: true format: json bufferingSize: 100 fields: defaultMode: keep names: ClientUsername: drop headers: defaultMode: drop names: User-Agent: keep Referer: keep queryParameters: defaultMode: drop metrics: prometheus: disableAPICheck: true addEntryPointsLabels: true addRoutersLabels: true addServicesLabels: true buckets: "0.005,0.01,0.025,0.05,0.1,0.25,0.5,1,2.5,5,10" service: enabled: true labels: app.kubernetes.io/part-of: traefik-observability serviceMonitor: enabled: true interval: 30s scrapeTimeout: 10s additionalLabels: release: prometheus ports: web: expose: default: true funkfeuer: true http: redirections: entryPoint: to: websecure scheme: https permanent: true websecure: expose: default: true funkfeuer: true http: tls: enabled: true transport: respondingTimeouts: readTimeout: 3600 writeTimeout: 3600 ingressRoute: dashboard: enabled: true matchRule: Host(`traefik.brunner.ninja`) entryPoints: - websecure additionalArguments: - --providers.redis.endpoints=valkey-primary.default.svc.cluster.local:6379 - --providers.redis.password=$(REDIS_PASSWORD) env: - name: REDIS_PASSWORD valueFrom: secretKeyRef: name: valkey key: valkey-password persistence: enabled: false tlsStore: default: defaultCertificate: secretName: brunner-ninja-tls providers: file: enabled: true content: http: routers: growatt: rule: "Host(`growatt.brunner.ninja`)" service: growatt entryPoints: [websecure] opendtu: rule: "Host(`opendtu.brunner.ninja`)" service: opendtu entryPoints: [websecure] staubsauger: rule: "Host(`staubsauger.brunner.ninja`)" service: staubsauger entryPoints: [websecure] middlewares: [default-authentik@kubernetescrd] victron: rule: "Host(`victron.brunner.ninja`)" service: victron entryPoints: [websecure] middlewares: [default-authentik@kubernetescrd] victron-websockify: rule: "Host(`victron.brunner.ninja`) && Path(`/websockify`)" priority: 100 service: victron-websockify-capture entryPoints: [websecure] middlewares: [default-authentik@kubernetescrd, victron-native-origin] middlewares: victron-native-origin: headers: customRequestHeaders: Origin: "" services: growatt: loadBalancer: servers: - url: http://192.168.0.252:8080 opendtu: loadBalancer: servers: - url: http://OpenDTU-AB9DF8.localdomain staubsauger: loadBalancer: servers: - url: http://rockrobo.localdomain victron: loadBalancer: servers: - url: http://nanopi.localdomain victron-websockify-capture: loadBalancer: servers: - url: http://192.168.0.93:8080 kubernetesGateway: enabled: true gateway: namespacePolicy: All