# knowledge/catalog/atlas.yaml
# Generated by scripts/render/knowledge_render_atlas.py (do not edit by hand)
cluster: atlas
sources:
- name: ai-llm
  path: services/ai-llm
  targetNamespace: ai
- name: bstein-dev-home
  path: services/bstein-dev-home
  targetNamespace: bstein-dev-home
- name: bstein-dev-home-migrations
  path: services/bstein-dev-home/migration-jobs
  targetNamespace: bstein-dev-home
- name: cert-manager
  path: infrastructure/cert-manager
  targetNamespace: cert-manager
- name: cert-manager-cleanup
  path: infrastructure/cert-manager/cleanup
  targetNamespace: cert-manager
- name: comms
  path: services/comms
  targetNamespace: comms
- name: core
  path: infrastructure/core
  targetNamespace: null
- name: crypto
  path: services/crypto
  targetNamespace: crypto
- name: descheduler
  path: infrastructure/descheduler
  targetNamespace: kube-system
- name: finance
  path: services/finance
  targetNamespace: finance
- name: flux-system
  path: clusters/atlas/flux-system
  targetNamespace: null
- name: game-stream
  path: services/game-stream
  targetNamespace: game-stream
- name: gitea
  path: services/gitea
  targetNamespace: gitea
- name: gitops-ui
  path: services/gitops-ui
  targetNamespace: flux-system
- name: harbor
  path: services/harbor
  targetNamespace: harbor
- name: health
  path: services/health
  targetNamespace: health
- name: helm
  path: infrastructure/sources/helm
  targetNamespace: flux-system
- name: hermes
  path: services/hermes
  targetNamespace: hermes
- name: jellyfin
  path: services/jellyfin
  targetNamespace: jellyfin
- name: jenkins
  path: services/jenkins
  targetNamespace: jenkins
- name: keycloak
  path: services/keycloak
  targetNamespace: sso
- name: logging
  path: services/logging
  targetNamespace: null
- name: longhorn
  path: infrastructure/longhorn/core
  targetNamespace: longhorn-system
- name: longhorn-adopt
  path: infrastructure/longhorn/adopt
  targetNamespace: longhorn-system
- name: longhorn-ui
  path: infrastructure/longhorn/ui-ingress
  targetNamespace: longhorn-system
- name: mailu
  path: services/mailu
  targetNamespace: mailu-mailserver
- name: maintenance
  path: services/maintenance
  targetNamespace: null
- name: metallb
  path: infrastructure/metallb
  targetNamespace: metallb-system
- name: monerod
  path: services/crypto/monerod
  targetNamespace: crypto
- name: monitoring
  path: services/monitoring
  targetNamespace: null
- name: nextcloud
  path: services/nextcloud
  targetNamespace: nextcloud
- name: nextcloud-mail-sync
  path: services/nextcloud-mail-sync
  targetNamespace: nextcloud
- name: oauth2-proxy
  path: services/oauth2-proxy
  targetNamespace: sso
- name: openclaw
  path: services/openclaw
  targetNamespace: openclaw
- name: openldap
  path: services/openldap
  targetNamespace: sso
- name: outline
  path: services/outline
  targetNamespace: outline
- name: pegasus
  path: services/pegasus
  targetNamespace: jellyfin
- name: planka
  path: services/planka
  targetNamespace: planka
- name: postgres
  path: infrastructure/postgres
  targetNamespace: postgres
- name: quality
  path: services/quality
  targetNamespace: quality
- name: resource-guardrails
  path: infrastructure/resource-guardrails
  targetNamespace: null
- name: sui-metrics
  path: services/sui-metrics/overlays/atlas
  targetNamespace: sui-metrics
- name: traefik
  path: infrastructure/traefik
  targetNamespace: traefik
- name: typhon
  path: services/typhon
  targetNamespace: climate
- name: vault
  path: services/vault
  targetNamespace: vault
- name: vault-csi
  path: infrastructure/vault-csi
  targetNamespace: kube-system
- name: vault-injector
  path: infrastructure/vault-injector
  targetNamespace: vault
- name: vaultwarden
  path: services/vaultwarden
  targetNamespace: vaultwarden
- name: veles
  path: services/veles
  targetNamespace: veles
- name: wallet-monero-temp
  path: services/crypto/wallet-monero-temp
  targetNamespace: crypto
- name: xmr-miner
  path: services/crypto/xmr-miner
  targetNamespace: crypto
workloads:
- kind: Deployment
  namespace: ai
  name: ollama
  labels:
    app: ollama
  serviceAccountName: null
  nodeSelector: {}
  images:
  - ollama/ollama@sha256:2c9595c555fd70a28363489ac03bd5bf9e7c5bdf2890373c3a830ffd7252ce6d
- kind: Deployment
  namespace: bstein-dev-home
  name: bstein-dev-home-backend
  labels:
    app: bstein-dev-home-backend
  serviceAccountName: bstein-dev-home
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - registry.bstein.dev/bstein/bstein-dev-home-backend:0.1.1-414
- kind: Deployment
  namespace: bstein-dev-home
  name: bstein-dev-home-frontend
  labels:
    app: bstein-dev-home-frontend
  serviceAccountName: null
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - registry.bstein.dev/bstein/bstein-dev-home-frontend:0.1.1-414
- kind: Deployment
  namespace: bstein-dev-home
  name: bstein-dev-home-vault-sync
  labels:
    app: bstein-dev-home-vault-sync
  serviceAccountName: bstein-dev-home-vault-sync
  nodeSelector: {}
  images:
  - alpine:3.20
- kind: Deployment
  namespace: bstein-dev-home
  name: chat-ai-gateway
  labels:
    app: chat-ai-gateway
  serviceAccountName: bstein-dev-home
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - python:3.11-slim
- kind: Deployment
  namespace: climate
  name: typhon
  labels:
    app: typhon
  serviceAccountName: typhon
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - registry.bstein.dev/bstein/typhon:main
- kind: Deployment
  namespace: climate
  name: typhon-vault-sync
  labels:
    app: typhon-vault-sync
  serviceAccountName: typhon
  nodeSelector: {}
  images:
  - alpine:3.20
- kind: Deployment
  namespace: comms
  name: atlasbot
  labels:
    app: atlasbot
  serviceAccountName: atlasbot
  nodeSelector:
    hardware: rpi5
    node-role.kubernetes.io/worker: 'true'
  images:
  - python:3.11-slim
- kind: Deployment
  namespace: comms
  name: comms-vault-sync
  labels:
    app: comms-vault-sync
  serviceAccountName: comms-vault
  nodeSelector: {}
  images:
  - alpine:3.20
- kind: Deployment
  namespace: comms
  name: coturn
  labels:
    app: coturn
  serviceAccountName: comms-vault
  nodeSelector:
    hardware: rpi5
    node-role.kubernetes.io/worker: 'true'
  images:
  - ghcr.io/coturn/coturn:4.6.2
- kind: Deployment
  namespace: comms
  name: element-call
  labels:
    app: element-call
  serviceAccountName: null
  nodeSelector:
    hardware: rpi5
    node-role.kubernetes.io/worker: 'true'
  images:
  - ghcr.io/element-hq/element-call@sha256:e6897c7818331714eae19d83ef8ea94a8b41115f0d8d3f62c2fed2d02c65c9bc
- kind: Deployment
  namespace: comms
  name: livekit
  labels:
    app: livekit
  serviceAccountName: comms-vault
  nodeSelector:
    hardware: rpi5
    node-role.kubernetes.io/worker: 'true'
  images:
  - livekit/livekit-server:v1.9.0
- kind: Deployment
  namespace: comms
  name: livekit-token-service
  labels:
    app: livekit-token-service
  serviceAccountName: comms-vault
  nodeSelector:
    hardware: rpi5
    node-role.kubernetes.io/worker: 'true'
  images:
  - registry.bstein.dev/tools/lk-jwt-service-vault:0.3.0
- kind: Deployment
  namespace: comms
  name: matrix-authentication-service
  labels:
    app: matrix-authentication-service
  serviceAccountName: comms-vault
  nodeSelector:
    hardware: rpi5
    node-role.kubernetes.io/worker: 'true'
  images:
  - ghcr.io/element-hq/matrix-authentication-service:1.8.0
- kind: Deployment
  namespace: comms
  name: matrix-guest-register
  labels:
    app.kubernetes.io/name: matrix-guest-register
  serviceAccountName: comms-vault
  nodeSelector: {}
  images:
  - python:3.11-slim
- kind: Deployment
  namespace: comms
  name: matrix-wellknown
  labels:
    app: matrix-wellknown
  serviceAccountName: null
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - nginx:1.27-alpine
- kind: DaemonSet
  namespace: crypto
  name: monero-xmrig
  labels:
    app: monero-xmrig
    atlas.bstein.dev/workload-profile: scavenger
  serviceAccountName: null
  nodeSelector:
    atlas.bstein.dev/crypto-mining-enabled: 'true'
    node-role.kubernetes.io/worker: 'true'
  images:
  - ghcr.io/tari-project/xmrig@sha256:d590a41613fea974f155280920095ea10c3710f55ecf16fc38fd3a1c18718129
- kind: Deployment
  namespace: crypto
  name: crypto-vault-sync
  labels:
    app: crypto-vault-sync
  serviceAccountName: crypto-vault-sync
  nodeSelector: {}
  images:
  - alpine:3.20
- kind: Deployment
  namespace: crypto
  name: monero-p2pool
  labels:
    app: monero-p2pool
    atlas.bstein.dev/workload-profile: heavy
  serviceAccountName: crypto-vault-sync
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - debian:bookworm-slim
- kind: Deployment
  namespace: crypto
  name: monerod
  labels:
    app: monerod
    atlas.bstein.dev/workload-profile: heavy
  serviceAccountName: null
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - python:3.11-alpine
  - registry.bstein.dev/crypto/monerod:0.18.4.1
- kind: Deployment
  namespace: crypto
  name: wallet-monero-temp
  labels:
    app: wallet-monero-temp
  serviceAccountName: crypto-vault-sync
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - registry.bstein.dev/crypto/monero-wallet-rpc:0.18.4.1
- kind: Deployment
  namespace: finance
  name: actual-budget
  labels:
    app: actual-budget
  serviceAccountName: finance-vault
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - actualbudget/actual-server:26.1.0-alpine@sha256:34aae5813fdfee12af2a50c4d0667df68029f1d61b90f45f282473273eb70d0d
- kind: Deployment
  namespace: finance
  name: firefly
  labels:
    app: firefly
  serviceAccountName: finance-vault
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - fireflyiii/core:version-6.4.15
- kind: Deployment
  namespace: flux-system
  name: helm-controller
  labels:
    app: helm-controller
    app.kubernetes.io/component: helm-controller
    app.kubernetes.io/instance: flux-system
    app.kubernetes.io/part-of: flux
    app.kubernetes.io/version: v2.7.5
  serviceAccountName: helm-controller
  nodeSelector:
    kubernetes.io/os: linux
  images:
  - ghcr.io/fluxcd/helm-controller:v1.4.5
- kind: Deployment
  namespace: flux-system
  name: image-automation-controller
  labels:
    app: image-automation-controller
    app.kubernetes.io/component: image-automation-controller
    app.kubernetes.io/instance: flux-system
    app.kubernetes.io/part-of: flux
    app.kubernetes.io/version: v2.7.5
  serviceAccountName: image-automation-controller
  nodeSelector:
    kubernetes.io/os: linux
  images:
  - ghcr.io/fluxcd/image-automation-controller:v1.0.4
- kind: Deployment
  namespace: flux-system
  name: image-reflector-controller
  labels:
    app: image-reflector-controller
    app.kubernetes.io/component: image-reflector-controller
    app.kubernetes.io/instance: flux-system
    app.kubernetes.io/part-of: flux
    app.kubernetes.io/version: v2.7.5
  serviceAccountName: image-reflector-controller
  nodeSelector:
    kubernetes.io/os: linux
  images:
  - ghcr.io/fluxcd/image-reflector-controller:v1.0.4
- kind: Deployment
  namespace: flux-system
  name: kustomize-controller
  labels:
    app: kustomize-controller
    app.kubernetes.io/component: kustomize-controller
    app.kubernetes.io/instance: flux-system
    app.kubernetes.io/part-of: flux
    app.kubernetes.io/version: v2.7.5
  serviceAccountName: kustomize-controller
  nodeSelector:
    kubernetes.io/os: linux
  images:
  - ghcr.io/fluxcd/kustomize-controller:v1.7.3
- kind: Deployment
  namespace: flux-system
  name: notification-controller
  labels:
    app: notification-controller
    app.kubernetes.io/component: notification-controller
    app.kubernetes.io/instance: flux-system
    app.kubernetes.io/part-of: flux
    app.kubernetes.io/version: v2.7.5
  serviceAccountName: notification-controller
  nodeSelector:
    kubernetes.io/os: linux
  images:
  - ghcr.io/fluxcd/notification-controller:v1.7.5
- kind: Deployment
  namespace: flux-system
  name: source-controller
  labels:
    app: source-controller
    app.kubernetes.io/component: source-controller
    app.kubernetes.io/instance: flux-system
    app.kubernetes.io/part-of: flux
    app.kubernetes.io/version: v2.7.5
  serviceAccountName: source-controller
  nodeSelector:
    kubernetes.io/os: linux
  images:
  - ghcr.io/fluxcd/source-controller:v1.7.4
- kind: DaemonSet
  namespace: game-stream
  name: wolf-gatekeeper
  labels:
    app: wolf-gatekeeper
  serviceAccountName: null
  nodeSelector:
    kubernetes.io/hostname: titan-24
  images:
  - ghcr.io/games-on-whales/wolf:stable
- kind: Deployment
  namespace: game-stream
  name: oauth2-proxy-wolf
  labels:
    app: oauth2-proxy-wolf
  serviceAccountName: game-stream-vault
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - quay.io/oauth2-proxy/oauth2-proxy:v7.6.0
- kind: StatefulSet
  namespace: game-stream
  name: wolf
  labels:
    app: wolf
    atlas.bstein.dev/game-mode: wolf
  serviceAccountName: null
  nodeSelector:
    kubernetes.io/hostname: titan-24
  images:
  - ghcr.io/games-on-whales/wolf:stable
  - ghcr.io/games-on-whales/wolfmanager/wolfmanager:latest
- kind: Deployment
  namespace: gitea
  name: gitea
  labels:
    app: gitea
    atlas.bstein.dev/workload-profile: heavy
  serviceAccountName: gitea-vault
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - gitea/gitea:1.23
- kind: Deployment
  namespace: harbor
  name: harbor-vault-sync
  labels:
    app: harbor-vault-sync
  serviceAccountName: harbor-vault-sync
  nodeSelector: {}
  images:
  - alpine:3.20
- kind: Deployment
  namespace: health
  name: wger
  labels:
    app: wger
  serviceAccountName: health-vault-sync
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - nginx:1.27.5-alpine@sha256:65645c7bb6a0661892a8b03b89d0743208a18dd2f3f17a54ef4b76fb8e2f2a10
  - wger/server@sha256:710588b78af4e0aa0b4d8a8061e4563e16eae80eeaccfe7f9e0d9cbdd7f0cbc5
- kind: Deployment
  namespace: hermes
  name: hermes
  labels:
    app: hermes
  serviceAccountName: hermes-triage
  nodeSelector: {}
  images:
  - nousresearch/hermes-agent@sha256:9c841866021c54c4596849f6135717e8a4d52ba510b7f52c50aef1de1a283973
- kind: Deployment
  namespace: hermes
  name: hermes-ollama
  labels:
    app: hermes-ollama
  serviceAccountName: null
  nodeSelector: {}
  images:
  - ollama/ollama@sha256:2c9595c555fd70a28363489ac03bd5bf9e7c5bdf2890373c3a830ffd7252ce6d
- kind: Deployment
  namespace: jellyfin
  name: jellyfin
  labels:
    app: jellyfin
    atlas.bstein.dev/workload-profile: heavy
  serviceAccountName: pegasus-vault-sync
  nodeSelector: {}
  images:
  - docker.io/jellyfin/jellyfin:10.11.5
- kind: Deployment
  namespace: jellyfin
  name: pegasus
  labels:
    app: pegasus
  serviceAccountName: pegasus-vault-sync
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - alpine:3.20
  - registry.bstein.dev/streaming/pegasus-vault:1.2.32
- kind: Deployment
  namespace: jellyfin
  name: pegasus-vault-sync
  labels:
    app: pegasus-vault-sync
  serviceAccountName: pegasus-vault-sync
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - alpine:3.20
- kind: Deployment
  namespace: jenkins
  name: jenkins
  labels:
    app: jenkins
  serviceAccountName: jenkins
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - jenkins/jenkins:2.528.3-jdk21
- kind: Deployment
  namespace: jenkins
  name: jenkins-vault-sync
  labels:
    app: jenkins-vault-sync
  serviceAccountName: jenkins-vault-sync
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - alpine:3.20
- kind: DaemonSet
  namespace: kube-system
  name: ntp-sync
  labels:
    app: ntp-sync
  serviceAccountName: null
  nodeSelector: {}
  images:
  - public.ecr.aws/docker/library/busybox:1.36.1
- kind: DaemonSet
  namespace: kube-system
  name: nvidia-device-plugin-jetson
  labels:
    app.kubernetes.io/instance: jetson
    app.kubernetes.io/name: nvidia-device-plugin
  serviceAccountName: null
  nodeSelector:
    jetson: 'true'
    kubernetes.io/arch: arm64
  images:
  - nvcr.io/nvidia/k8s-device-plugin:v0.16.2
- kind: DaemonSet
  namespace: kube-system
  name: nvidia-device-plugin-minipc
  labels:
    app.kubernetes.io/instance: titan22
    app.kubernetes.io/name: nvidia-device-plugin
  serviceAccountName: null
  nodeSelector:
    kubernetes.io/arch: amd64
    kubernetes.io/hostname: titan-22
  images:
  - nvcr.io/nvidia/k8s-device-plugin:v0.16.2
- kind: DaemonSet
  namespace: kube-system
  name: nvidia-device-plugin-tethys
  labels:
    app.kubernetes.io/instance: titan24
    app.kubernetes.io/name: nvidia-device-plugin
  serviceAccountName: null
  nodeSelector:
    kubernetes.io/arch: amd64
    kubernetes.io/hostname: titan-24
  images:
  - nvcr.io/nvidia/k8s-device-plugin:v0.16.2
- kind: DaemonSet
  namespace: kube-system
  name: vault-csi-provider
  labels:
    app.kubernetes.io/name: vault-csi-provider
  serviceAccountName: vault-csi-provider
  nodeSelector:
    kubernetes.io/os: linux
  images:
  - hashicorp/vault-csi-provider:1.7.0
- kind: Deployment
  namespace: kube-system
  name: coredns
  labels:
    k8s-app: kube-dns
  serviceAccountName: coredns
  nodeSelector:
    kubernetes.io/os: linux
  images:
  - registry.k8s.io/coredns/coredns:v1.12.1
- kind: DaemonSet
  namespace: logging
  name: node-image-gc-rpi4
  labels:
    app: node-image-gc-rpi4
  serviceAccountName: node-image-gc-rpi4
  nodeSelector:
    hardware: rpi4
  images:
  - bitnami/kubectl@sha256:554ab88b1858e8424c55de37ad417b16f2a0e65d1607aa0f3fe3ce9b9f10b131
- kind: DaemonSet
  namespace: logging
  name: node-image-prune-rpi5
  labels:
    app: node-image-prune-rpi5
  serviceAccountName: node-image-prune-rpi5
  nodeSelector:
    hardware: rpi5
  images:
  - bitnami/kubectl@sha256:554ab88b1858e8424c55de37ad417b16f2a0e65d1607aa0f3fe3ce9b9f10b131
- kind: DaemonSet
  namespace: logging
  name: node-log-rotation
  labels:
    app: node-log-rotation
  serviceAccountName: node-log-rotation
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - bitnami/kubectl@sha256:554ab88b1858e8424c55de37ad417b16f2a0e65d1607aa0f3fe3ce9b9f10b131
- kind: Deployment
  namespace: logging
  name: logging-vault-sync
  labels:
    app: logging-vault-sync
  serviceAccountName: logging-vault-sync
  nodeSelector: {}
  images:
  - alpine:3.20
- kind: Deployment
  namespace: logging
  name: oauth2-proxy-logs
  labels:
    app: oauth2-proxy-logs
  serviceAccountName: logging-vault-sync
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - registry.bstein.dev/tools/oauth2-proxy-vault:v7.6.0
- kind: Deployment
  namespace: longhorn-system
  name: longhorn-vault-sync
  labels:
    app: longhorn-vault-sync
  serviceAccountName: longhorn-vault-sync
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - alpine:3.20
- kind: Deployment
  namespace: longhorn-system
  name: oauth2-proxy-longhorn
  labels:
    app: oauth2-proxy-longhorn
  serviceAccountName: longhorn-vault
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - quay.io/oauth2-proxy/oauth2-proxy:v7.6.0
- kind: DaemonSet
  namespace: mailu-mailserver
  name: vip-controller
  labels:
    app: vip-controller
  serviceAccountName: vip-controller
  nodeSelector:
    mailu.bstein.dev/vip: 'true'
  images:
  - registry.bstein.dev/bstein/kubectl:1.35.0
- kind: Deployment
  namespace: mailu-mailserver
  name: mailu-vault-sync
  labels:
    app: mailu-vault-sync
  serviceAccountName: mailu-vault-sync
  nodeSelector: {}
  images:
  - alpine:3.20
- kind: DaemonSet
  namespace: maintenance
  name: disable-k3s-traefik
  labels:
    app: disable-k3s-traefik
  serviceAccountName: disable-k3s-traefik
  nodeSelector:
    node-role.kubernetes.io/control-plane: 'true'
  images:
  - bitnami/kubectl@sha256:554ab88b1858e8424c55de37ad417b16f2a0e65d1607aa0f3fe3ce9b9f10b131
- kind: DaemonSet
  namespace: maintenance
  name: k3s-agent-restart
  labels:
    app: k3s-agent-restart
  serviceAccountName: node-nofile
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - bitnami/kubectl@sha256:554ab88b1858e8424c55de37ad417b16f2a0e65d1607aa0f3fe3ce9b9f10b131
- kind: DaemonSet
  namespace: maintenance
  name: metis-sentinel-amd64
  labels:
    app: metis-sentinel-amd64
  serviceAccountName: metis
  nodeSelector:
    kubernetes.io/arch: amd64
    kubernetes.io/os: linux
  images:
  - registry.bstein.dev/bstein/metis-sentinel:0.1.0-243-amd64
- kind: DaemonSet
  namespace: maintenance
  name: metis-sentinel-arm64
  labels:
    app: metis-sentinel-arm64
  serviceAccountName: metis
  nodeSelector:
    kubernetes.io/arch: arm64
    kubernetes.io/os: linux
  images:
  - registry.bstein.dev/bstein/metis-sentinel:0.1.0-243-arm64
- kind: DaemonSet
  namespace: maintenance
  name: node-image-sweeper
  labels:
    app: node-image-sweeper
  serviceAccountName: node-image-sweeper
  nodeSelector:
    kubernetes.io/os: linux
  images:
  - python:3.12.9-alpine3.20
- kind: DaemonSet
  namespace: maintenance
  name: node-nofile
  labels:
    app: node-nofile
  serviceAccountName: node-nofile
  nodeSelector: {}
  images:
  - bitnami/kubectl@sha256:554ab88b1858e8424c55de37ad417b16f2a0e65d1607aa0f3fe3ce9b9f10b131
- kind: DaemonSet
  namespace: maintenance
  name: rpi-resource-reservation
  labels:
    app: rpi-resource-reservation
  serviceAccountName: node-nofile
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - bitnami/kubectl@sha256:554ab88b1858e8424c55de37ad417b16f2a0e65d1607aa0f3fe3ce9b9f10b131
- kind: DaemonSet
  namespace: maintenance
  name: titan-22-link-keeper
  labels:
    app: titan-22-link-keeper
  serviceAccountName: null
  nodeSelector:
    kubernetes.io/hostname: titan-22
  images:
  - bitnami/kubectl@sha256:554ab88b1858e8424c55de37ad417b16f2a0e65d1607aa0f3fe3ce9b9f10b131
- kind: DaemonSet
  namespace: maintenance
  name: titan-24-docker
  labels:
    app: titan-24-docker
  serviceAccountName: titan-24-docker
  nodeSelector:
    kubernetes.io/hostname: titan-24
  images:
  - debian:13-slim
- kind: Deployment
  namespace: maintenance
  name: ariadne
  labels:
    app: ariadne
  serviceAccountName: ariadne
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - registry.bstein.dev/bstein/ariadne:0.1.0-356
- kind: Deployment
  namespace: maintenance
  name: maintenance-vault-sync
  labels:
    app: maintenance-vault-sync
  serviceAccountName: maintenance-vault-sync
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - alpine:3.20
- kind: Deployment
  namespace: maintenance
  name: metis
  labels:
    app: metis
  serviceAccountName: metis
  nodeSelector: {}
  images:
  - registry.bstein.dev/bstein/metis:0.1.0-243-arm64
- kind: Deployment
  namespace: maintenance
  name: oauth2-proxy-metis
  labels:
    app: oauth2-proxy-metis
  serviceAccountName: maintenance-vault-sync
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - quay.io/oauth2-proxy/oauth2-proxy:v7.6.0
- kind: Deployment
  namespace: maintenance
  name: oauth2-proxy-soteria
  labels:
    app: oauth2-proxy-soteria
  serviceAccountName: maintenance-vault-sync
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - quay.io/oauth2-proxy/oauth2-proxy:v7.6.0
- kind: Deployment
  namespace: maintenance
  name: soteria
  labels:
    app: soteria
  serviceAccountName: soteria
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - registry.bstein.dev/bstein/soteria:0.1.0-120
- kind: DaemonSet
  namespace: monitoring
  name: dcgm-exporter
  labels:
    app: dcgm-exporter
  serviceAccountName: default
  nodeSelector: {}
  images:
  - registry.bstein.dev/monitoring/dcgm-exporter:4.4.2-4.7.0-ubuntu22.04
- kind: DaemonSet
  namespace: monitoring
  name: jetson-tegrastats-exporter
  labels:
    app: jetson-tegrastats-exporter
  serviceAccountName: default
  nodeSelector:
    jetson: 'true'
  images:
  - python:3.10-slim
- kind: DaemonSet
  namespace: monitoring
  name: nvidia-process-exporter
  labels:
    app: nvidia-process-exporter
  serviceAccountName: nvidia-process-exporter
  nodeSelector: {}
  images:
  - python:3.12-slim
- kind: Deployment
  namespace: monitoring
  name: monitoring-vault-sync
  labels:
    app: monitoring-vault-sync
  serviceAccountName: monitoring-vault-sync
  nodeSelector: {}
  images:
  - alpine:3.20
- kind: Deployment
  namespace: monitoring
  name: platform-quality-gateway
  labels:
    app: platform-quality-gateway
  serviceAccountName: null
  nodeSelector: {}
  images:
  - prom/pushgateway:v1.11.2
- kind: Deployment
  namespace: monitoring
  name: postmark-exporter
  labels:
    app: postmark-exporter
  serviceAccountName: monitoring-vault-sync
  nodeSelector: {}
  images:
  - python:3.12-alpine
- kind: Deployment
  namespace: monitoring
  name: vmalert-atlas-availability
  labels:
    app: vmalert-atlas-availability
  serviceAccountName: vmalert-atlas-availability
  nodeSelector: {}
  images:
  - victoriametrics/vmalert:v1.113.0
- kind: Deployment
  namespace: nextcloud
  name: collabora
  labels:
    app: collabora
  serviceAccountName: null
  nodeSelector:
    kubernetes.io/arch: amd64
  images:
  - collabora/code@sha256:3c58d0e9bae75e4647467d0c7d91cb66f261d3e814709aed590b5c334a04db26
- kind: Deployment
  namespace: nextcloud
  name: nextcloud
  labels:
    app: nextcloud
  serviceAccountName: nextcloud-vault
  nodeSelector:
    hardware: rpi5
    node-role.kubernetes.io/worker: 'true'
  images:
  - nextcloud:29-apache
- kind: Deployment
  namespace: outline
  name: outline
  labels:
    app: outline
  serviceAccountName: outline-vault
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - outlinewiki/outline:1.2.0
- kind: Deployment
  namespace: outline
  name: outline-redis
  labels:
    app: outline-redis
  serviceAccountName: null
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - redis:7.4.1-alpine
- kind: Deployment
  namespace: planka
  name: planka
  labels:
    app: planka
  serviceAccountName: planka-vault
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - ghcr.io/plankanban/planka:2.0.0-rc.4
- kind: StatefulSet
  namespace: postgres
  name: postgres
  labels:
    app: postgres
  serviceAccountName: postgres-vault
  nodeSelector:
    hardware: rpi5
    node-role.kubernetes.io/worker: 'true'
  images:
  - postgres:15
  - quay.io/prometheuscommunity/postgres-exporter:v0.15.0
- kind: Deployment
  namespace: quality
  name: oauth2-proxy-sonarqube
  labels:
    app: oauth2-proxy-sonarqube
  serviceAccountName: quality-vault-sync
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - quay.io/oauth2-proxy/oauth2-proxy:v7.6.0
- kind: Deployment
  namespace: quality
  name: sonarqube
  labels:
    app: sonarqube
  serviceAccountName: sonarqube
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - sonarqube:lts-community
- kind: Deployment
  namespace: quality
  name: sonarqube-exporter
  labels:
    app: sonarqube-exporter
  serviceAccountName: quality-vault-sync
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - registry.bstein.dev/bstein/python:3.12-slim
- kind: Deployment
  namespace: sso
  name: keycloak
  labels:
    app: keycloak
  serviceAccountName: sso-vault
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - quay.io/keycloak/keycloak:26.0.7
- kind: Deployment
  namespace: sso
  name: oauth2-proxy
  labels:
    app: oauth2-proxy
  serviceAccountName: sso-vault
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - registry.bstein.dev/tools/oauth2-proxy-vault:v7.6.0
- kind: Deployment
  namespace: sso
  name: sso-vault-sync
  labels:
    app: sso-vault-sync
  serviceAccountName: sso-vault-sync
  nodeSelector: {}
  images:
  - alpine:3.20
- kind: StatefulSet
  namespace: sso
  name: openldap
  labels:
    app: openldap
  serviceAccountName: sso-vault
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - docker.io/osixia/openldap:1.5.0
- kind: Deployment
  namespace: sui-metrics
  name: sui-metrics
  labels:
    app: sui-metrics
  serviceAccountName: sui-metrics
  nodeSelector:
    hardware: rpi5
    node-role.kubernetes.io/worker: 'true'
  images:
  - victoriametrics/vmagent:v1.103.0
- kind: Deployment
  namespace: traefik
  name: traefik
  labels:
    app: traefik
    app.kubernetes.io/instance: traefik-kube-system
    app.kubernetes.io/name: traefik
  serviceAccountName: atlas-traefik-ingress-controller
  nodeSelector:
    node-role.kubernetes.io/worker: 'true'
  images:
  - traefik:v3.3.3
- kind: StatefulSet
  namespace: vault
  name: vault
  labels:
    app: vault
  serviceAccountName: vault
  nodeSelector:
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - hashicorp/vault:1.21.4
- kind: Deployment
  namespace: vaultwarden
  name: vaultwarden
  labels:
    app: vaultwarden
  serviceAccountName: vaultwarden-vault
  nodeSelector:
    hardware: rpi5
    kubernetes.io/arch: arm64
    node-role.kubernetes.io/worker: 'true'
  images:
  - vaultwarden/server:1.35.2
- kind: Deployment
  namespace: veles
  name: veles-backend
  labels:
    app: veles-backend
  serviceAccountName: veles-backend
  nodeSelector:
    kubernetes.io/arch: amd64
    veles.bstein.dev/node-pool: oceanus
  images:
  - registry.bstein.dev/veles/veles-backend:0.7.56
- kind: Deployment
  namespace: veles
  name: veles-frontend
  labels:
    app: veles-frontend
  serviceAccountName: veles-frontend
  nodeSelector: {}
  images:
  - registry.bstein.dev/veles/veles-frontend:0.7.56
- kind: Deployment
  namespace: veles
  name: veles-vault-sync
  labels:
    app: veles-vault-sync
  serviceAccountName: veles-vault-sync
  nodeSelector: {}
  images:
  - alpine:3.20
- kind: StatefulSet
  namespace: veles
  name: veles-postgres
  labels:
    app: veles-postgres
  serviceAccountName: veles-postgres
  nodeSelector:
    veles.bstein.dev/node-pool: oceanus
  images:
  - postgres:15
services:
- namespace: ai
  name: ollama
  type: ClusterIP
  selector:
    app: ollama
  ports:
  - name: http
    port: 11434
    targetPort: 11434
    protocol: TCP
- namespace: bstein-dev-home
  name: bstein-dev-home-backend
  type: ClusterIP
  selector:
    app: bstein-dev-home-backend
  ports:
  - name: http
    port: 80
    targetPort: 8080
    protocol: TCP
- namespace: bstein-dev-home
  name: bstein-dev-home-frontend
  type: ClusterIP
  selector:
    app: bstein-dev-home-frontend
  ports:
  - name: http
    port: 80
    targetPort: 8080
    protocol: TCP
- namespace: bstein-dev-home
  name: chat-ai-gateway
  type: ClusterIP
  selector:
    app: chat-ai-gateway
  ports:
  - name: http
    port: 80
    targetPort: 8080
    protocol: TCP
- namespace: climate
  name: typhon
  type: ClusterIP
  selector:
    app: typhon
  ports:
  - name: metrics
    port: 9108
    targetPort: metrics
    protocol: TCP
  - name: control
    port: 9110
    targetPort: control
    protocol: TCP
- namespace: comms
  name: atlasbot
  type: ClusterIP
  selector:
    app: atlasbot
  ports:
  - name: http
    port: 8090
    targetPort: 8090
    protocol: TCP
- namespace: comms
  name: coturn
  type: LoadBalancer
  selector:
    app: coturn
  ports:
  - name: turn-udp
    port: 3478
    targetPort: 3478
    protocol: UDP
  - name: turn-tcp
    port: 3478
    targetPort: 3478
    protocol: TCP
  - name: turn-tls
    port: 5349
    targetPort: 5349
    protocol: TCP
  - name: relay-50000
    port: 50000
    targetPort: 50000
    protocol: UDP
  - name: relay-50001
    port: 50001
    targetPort: 50001
    protocol: UDP
  - name: relay-50002
    port: 50002
    targetPort: 50002
    protocol: UDP
  - name: relay-50003
    port: 50003
    targetPort: 50003
    protocol: UDP
  - name: relay-50004
    port: 50004
    targetPort: 50004
    protocol: UDP
  - name: relay-50005
    port: 50005
    targetPort: 50005
    protocol: UDP
  - name: relay-50006
    port: 50006
    targetPort: 50006
    protocol: UDP
  - name: relay-50007
    port: 50007
    targetPort: 50007
    protocol: UDP
  - name: relay-50008
    port: 50008
    targetPort: 50008
    protocol: UDP
  - name: relay-50009
    port: 50009
    targetPort: 50009
    protocol: UDP
  - name: relay-50010
    port: 50010
    targetPort: 50010
    protocol: UDP
  - name: relay-50011
    port: 50011
    targetPort: 50011
    protocol: UDP
  - name: relay-50012
    port: 50012
    targetPort: 50012
    protocol: UDP
  - name: relay-50013
    port: 50013
    targetPort: 50013
    protocol: UDP
  - name: relay-50014
    port: 50014
    targetPort: 50014
    protocol: UDP
  - name: relay-50015
    port: 50015
    targetPort: 50015
    protocol: UDP
  - name: relay-50016
    port: 50016
    targetPort: 50016
    protocol: UDP
  - name: relay-50017
    port: 50017
    targetPort: 50017
    protocol: UDP
  - name: relay-50018
    port: 50018
    targetPort: 50018
    protocol: UDP
  - name: relay-50019
    port: 50019
    targetPort: 50019
    protocol: UDP
  - name: relay-50020
    port: 50020
    targetPort: 50020
    protocol: UDP
  - name: relay-50021
    port: 50021
    targetPort: 50021
    protocol: UDP
  - name: relay-50022
    port: 50022
    targetPort: 50022
    protocol: UDP
  - name: relay-50023
    port: 50023
    targetPort: 50023
    protocol: UDP
  - name: relay-50024
    port: 50024
    targetPort: 50024
    protocol: UDP
  - name: relay-50025
    port: 50025
    targetPort: 50025
    protocol: UDP
  - name: relay-50026
    port: 50026
    targetPort: 50026
    protocol: UDP
  - name: relay-50027
    port: 50027
    targetPort: 50027
    protocol: UDP
  - name: relay-50028
    port: 50028
    targetPort: 50028
    protocol: UDP
  - name: relay-50029
    port: 50029
    targetPort: 50029
    protocol: UDP
  - name: relay-50030
    port: 50030
    targetPort: 50030
    protocol: UDP
  - name: relay-50031
    port: 50031
    targetPort: 50031
    protocol: UDP
  - name: relay-50032
    port: 50032
    targetPort: 50032
    protocol: UDP
  - name: relay-50033
    port: 50033
    targetPort: 50033
    protocol: UDP
  - name: relay-50034
    port: 50034
    targetPort: 50034
    protocol: UDP
  - name: relay-50035
    port: 50035
    targetPort: 50035
    protocol: UDP
  - name: relay-50036
    port: 50036
    targetPort: 50036
    protocol: UDP
  - name: relay-50037
    port: 50037
    targetPort: 50037
    protocol: UDP
  - name: relay-50038
    port: 50038
    targetPort: 50038
    protocol: UDP
  - name: relay-50039
    port: 50039
    targetPort: 50039
    protocol: UDP
  - name: relay-50040
    port: 50040
    targetPort: 50040
    protocol: UDP
  - name: relay-50041
    port: 50041
    targetPort: 50041
    protocol: UDP
  - name: relay-50042
    port: 50042
    targetPort: 50042
    protocol: UDP
  - name: relay-50043
    port: 50043
    targetPort: 50043
    protocol: UDP
  - name: relay-50044
    port: 50044
    targetPort: 50044
    protocol: UDP
  - name: relay-50045
    port: 50045
    targetPort: 50045
    protocol: UDP
  - name: relay-50046
    port: 50046
    targetPort: 50046
    protocol: UDP
  - name: relay-50047
    port: 50047
    targetPort: 50047
    protocol: UDP
  - name: relay-50048
    port: 50048
    targetPort: 50048
    protocol: UDP
  - name: relay-50049
    port: 50049
    targetPort: 50049
    protocol: UDP
  - name: relay-50050
    port: 50050
    targetPort: 50050
    protocol: UDP
- namespace: comms
  name: element-call
  type: ClusterIP
  selector:
    app: element-call
  ports:
  - name: http
    port: 80
    targetPort: 8080
    protocol: TCP
- namespace: comms
  name: livekit
  type: LoadBalancer
  selector:
    app: livekit
  ports:
  - name: http
    port: 7880
    targetPort: 7880
    protocol: TCP
  - name: rtc-tcp
    port: 7881
    targetPort: 7881
    protocol: TCP
  - name: rtc-udp-7882
    port: 7882
    targetPort: 7882
    protocol: UDP
  - name: rtc-udp-7883
    port: 7883
    targetPort: 7883
    protocol: UDP
- namespace: comms
  name: livekit-token-service
  type: ClusterIP
  selector:
    app: livekit-token-service
  ports:
  - name: http
    port: 8080
    targetPort: 8080
    protocol: TCP
- namespace: comms
  name: matrix-authentication-service
  type: ClusterIP
  selector:
    app: matrix-authentication-service
  ports:
  - name: http
    port: 8080
    targetPort: http
    protocol: TCP
  - name: internal
    port: 8081
    targetPort: internal
    protocol: TCP
- namespace: comms
  name: matrix-guest-register
  type: ClusterIP
  selector:
    app.kubernetes.io/name: matrix-guest-register
  ports:
  - name: http
    port: 8080
    targetPort: http
    protocol: TCP
- namespace: comms
  name: matrix-wellknown
  type: ClusterIP
  selector:
    app: matrix-wellknown
  ports:
  - name: http
    port: 80
    targetPort: 80
    protocol: TCP
- namespace: crypto
  name: monerod
  type: ClusterIP
  selector:
    app: monerod
  ports:
  - name: rpc
    port: 18081
    targetPort: 18081
    protocol: TCP
  - name: status
    port: 18084
    targetPort: 18084
    protocol: TCP
  - name: p2p
    port: 18080
    targetPort: 18080
    protocol: TCP
  - name: zmq
    port: 18083
    targetPort: 18083
    protocol: TCP
- namespace: crypto
  name: p2pool
  type: ClusterIP
  selector:
    app: p2pool
  ports:
  - name: stratum
    port: 3333
    targetPort: 3333
    protocol: TCP
- namespace: crypto
  name: wallet-monero-temp
  type: ClusterIP
  selector:
    app: wallet-monero-temp
  ports:
  - name: rpc
    port: 18083
    targetPort: 18083
    protocol: TCP
- namespace: finance
  name: actual-budget
  type: ClusterIP
  selector:
    app: actual-budget
  ports:
  - name: http
    port: 80
    targetPort: 5006
    protocol: TCP
- namespace: finance
  name: firefly
  type: ClusterIP
  selector:
    app: firefly
  ports:
  - name: http
    port: 80
    targetPort: 8080
    protocol: TCP
- namespace: flux-system
  name: notification-controller
  type: ClusterIP
  selector:
    app: notification-controller
  ports:
  - name: http
    port: 80
    targetPort: http
    protocol: TCP
- namespace: flux-system
  name: source-controller
  type: ClusterIP
  selector:
    app: source-controller
  ports:
  - name: http
    port: 80
    targetPort: http
    protocol: TCP
- namespace: flux-system
  name: webhook-receiver
  type: ClusterIP
  selector:
    app: notification-controller
  ports:
  - name: http
    port: 80
    targetPort: http-webhook
    protocol: TCP
- namespace: game-stream
  name: oauth2-proxy-wolf
  type: ClusterIP
  selector:
    app: oauth2-proxy-wolf
  ports:
  - name: http
    port: 80
    targetPort: 4180
    protocol: TCP
- namespace: game-stream
  name: wolf
  type: ClusterIP
  selector:
    app: wolf
  ports:
  - name: placeholder
    port: 47989
    targetPort: 47989
    protocol: TCP
- namespace: game-stream
  name: wolf-api
  type: ClusterIP
  selector:
    app: wolf
  ports:
  - name: http
    port: 8088
    targetPort: 8088
    protocol: TCP
- namespace: game-stream
  name: wolf-gatekeeper
  type: ClusterIP
  selector:
    app: wolf-gatekeeper
  ports:
  - name: http
    port: 8087
    targetPort: 8087
    protocol: TCP
- namespace: game-stream
  name: wolf-moonlight
  type: LoadBalancer
  selector:
    app: wolf
  ports:
  - name: tcp-https
    port: 47984
    targetPort: 47984
    protocol: TCP
  - name: tcp-http
    port: 47989
    targetPort: 47989
    protocol: TCP
  - name: tcp-rtsp
    port: 48010
    targetPort: 48010
    protocol: TCP
  - name: udp-control
    port: 47999
    targetPort: 47999
    protocol: UDP
  - name: udp-video
    port: 48100
    targetPort: 48100
    protocol: UDP
  - name: udp-audio
    port: 48200
    targetPort: 48200
    protocol: UDP
- namespace: game-stream
  name: wolfmanager
  type: ClusterIP
  selector:
    app: wolf
  ports:
  - name: http
    port: 8080
    targetPort: 3000
    protocol: TCP
- namespace: gitea
  name: gitea
  type: ClusterIP
  selector:
    app: gitea
  ports:
  - name: http
    port: 3000
    targetPort: 3000
    protocol: TCP
- namespace: gitea
  name: gitea-ssh
  type: LoadBalancer
  selector:
    app: gitea
  ports:
  - name: ssh
    port: 2242
    targetPort: 2242
    protocol: TCP
- namespace: health
  name: wger
  type: ClusterIP
  selector:
    app: wger
  ports:
  - name: http
    port: 80
    targetPort: http
    protocol: TCP
- namespace: hermes
  name: hermes
  type: ClusterIP
  selector:
    app: hermes
  ports:
  - name: api
    port: 8642
    targetPort: api
    protocol: TCP
  - name: dashboard
    port: 9119
    targetPort: dashboard
    protocol: TCP
- namespace: hermes
  name: hermes-ollama
  type: ClusterIP
  selector:
    app: hermes-ollama
  ports:
  - name: http
    port: 11434
    targetPort: http
    protocol: TCP
- namespace: jellyfin
  name: jellyfin
  type: ClusterIP
  selector:
    app: jellyfin
  ports:
  - name: http
    port: 80
    targetPort: 8096
    protocol: TCP
- namespace: jellyfin
  name: pegasus
  type: ClusterIP
  selector:
    app: pegasus
  ports:
  - name: http
    port: 80
    targetPort: http
    protocol: TCP
- namespace: jenkins
  name: jenkins
  type: ClusterIP
  selector:
    app: jenkins
  ports:
  - name: http
    port: 8080
    targetPort: 8080
    protocol: TCP
  - name: agent-listener
    port: 50000
    targetPort: 50000
    protocol: TCP
- namespace: logging
  name: oauth2-proxy-logs
  type: ClusterIP
  selector:
    app: oauth2-proxy-logs
  ports:
  - name: http
    port: 80
    targetPort: 4180
    protocol: TCP
- namespace: longhorn-system
  name: oauth2-proxy-longhorn
  type: ClusterIP
  selector:
    app: oauth2-proxy-longhorn
  ports:
  - name: http
    port: 80
    targetPort: 4180
    protocol: TCP
- namespace: mailu-mailserver
  name: mailu-front-lb
  type: LoadBalancer
  selector:
    app.kubernetes.io/component: front
    app.kubernetes.io/instance: mailu
    app.kubernetes.io/name: mailu
  ports:
  - name: smtp
    port: 25
    targetPort: 25
    protocol: TCP
  - name: smtps
    port: 465
    targetPort: 465
    protocol: TCP
  - name: submission
    port: 587
    targetPort: 587
    protocol: TCP
  - name: imaps
    port: 993
    targetPort: 993
    protocol: TCP
  - name: pop3s
    port: 995
    targetPort: 995
    protocol: TCP
  - name: sieve
    port: 4190
    targetPort: 4190
    protocol: TCP
- namespace: maintenance
  name: ariadne
  type: ClusterIP
  selector:
    app: ariadne
  ports:
  - name: http
    port: 80
    targetPort: http
    protocol: TCP
- namespace: maintenance
  name: metis
  type: ClusterIP
  selector:
    app: metis
  ports:
  - name: http
    port: 80
    targetPort: http
    protocol: TCP
- namespace: maintenance
  name: oauth2-proxy-metis
  type: ClusterIP
  selector:
    app: oauth2-proxy-metis
  ports:
  - name: http
    port: 80
    targetPort: 4180
    protocol: TCP
- namespace: maintenance
  name: oauth2-proxy-soteria
  type: ClusterIP
  selector:
    app: oauth2-proxy-soteria
  ports:
  - name: http
    port: 80
    targetPort: 4180
    protocol: TCP
- namespace: maintenance
  name: soteria
  type: ClusterIP
  selector:
    app: soteria
  ports:
  - name: http
    port: 80
    targetPort: http
    protocol: TCP
- namespace: monitoring
  name: dcgm-exporter
  type: ClusterIP
  selector:
    app: dcgm-exporter
  ports:
  - name: metrics
    port: 9400
    targetPort: metrics
    protocol: TCP
- namespace: monitoring
  name: jetson-tegrastats-exporter
  type: ClusterIP
  selector:
    app: jetson-tegrastats-exporter
  ports:
  - name: metrics
    port: 9100
    targetPort: metrics
    protocol: TCP
- namespace: monitoring
  name: nvidia-process-exporter
  type: ClusterIP
  selector:
    app: nvidia-process-exporter
  ports:
  - name: metrics
    port: 9401
    targetPort: metrics
    protocol: TCP
- namespace: monitoring
  name: platform-quality-gateway
  type: ClusterIP
  selector:
    app: platform-quality-gateway
  ports:
  - name: http
    port: 9091
    targetPort: http
    protocol: TCP
- namespace: monitoring
  name: postmark-exporter
  type: ClusterIP
  selector:
    app: postmark-exporter
  ports:
  - name: http
    port: 8000
    targetPort: http
    protocol: TCP
- namespace: monitoring
  name: vmalert-atlas-availability
  type: ClusterIP
  selector:
    app: vmalert-atlas-availability
  ports:
  - name: http
    port: 8880
    targetPort: http
    protocol: TCP
- namespace: nextcloud
  name: collabora
  type: ClusterIP
  selector:
    app: collabora
  ports:
  - name: http
    port: 9980
    targetPort: http
    protocol: TCP
- namespace: nextcloud
  name: nextcloud
  type: ClusterIP
  selector:
    app: nextcloud
  ports:
  - name: http
    port: 80
    targetPort: http
    protocol: TCP
- namespace: outline
  name: outline
  type: ClusterIP
  selector:
    app: outline
  ports:
  - name: http
    port: 80
    targetPort: http
    protocol: TCP
- namespace: outline
  name: outline-redis
  type: ClusterIP
  selector:
    app: outline-redis
  ports:
  - name: redis
    port: 6379
    targetPort: redis
    protocol: TCP
- namespace: planka
  name: planka
  type: ClusterIP
  selector:
    app: planka
  ports:
  - name: http
    port: 80
    targetPort: http
    protocol: TCP
- namespace: postgres
  name: postgres-service
  type: ClusterIP
  selector:
    app: postgres
  ports:
  - name: postgres
    port: 5432
    targetPort: 5432
    protocol: TCP
  - name: metrics
    port: 9187
    targetPort: 9187
    protocol: TCP
- namespace: quality
  name: oauth2-proxy-sonarqube
  type: ClusterIP
  selector:
    app: oauth2-proxy-sonarqube
  ports:
  - name: http
    port: 80
    targetPort: 4180
    protocol: TCP
- namespace: quality
  name: sonarqube
  type: ClusterIP
  selector:
    app: sonarqube
  ports:
  - name: http
    port: 9000
    targetPort: 9000
    protocol: TCP
- namespace: quality
  name: sonarqube-exporter
  type: ClusterIP
  selector:
    app: sonarqube-exporter
  ports:
  - name: metrics
    port: 9798
    targetPort: metrics
    protocol: TCP
- namespace: sso
  name: keycloak
  type: ClusterIP
  selector:
    app: keycloak
  ports:
  - name: http
    port: 80
    targetPort: http
    protocol: TCP
- namespace: sso
  name: oauth2-proxy
  type: ClusterIP
  selector:
    app: oauth2-proxy
  ports:
  - name: http
    port: 80
    targetPort: 4180
    protocol: TCP
- namespace: sso
  name: openldap
  type: ClusterIP
  selector:
    app: openldap
  ports:
  - name: ldap
    port: 389
    targetPort: ldap
    protocol: TCP
  - name: ldaps
    port: 636
    targetPort: ldaps
    protocol: TCP
- namespace: sui-metrics
  name: sui-metrics
  type: ClusterIP
  selector:
    app: sui-metrics
  ports:
  - name: http
    port: 8429
    targetPort: 8429
    protocol: TCP
- namespace: traefik
  name: traefik
  type: LoadBalancer
  selector:
    app: traefik
  ports:
  - name: web
    port: 80
    targetPort: web
    protocol: TCP
  - name: websecure
    port: 443
    targetPort: websecure
    protocol: TCP
- namespace: traefik
  name: traefik-metrics
  type: ClusterIP
  selector:
    app: traefik
  ports:
  - name: metrics
    port: 9100
    targetPort: metrics
    protocol: TCP
- namespace: vault
  name: vault
  type: ClusterIP
  selector:
    app: vault
  ports:
  - name: api
    port: 8200
    targetPort: 8200
    protocol: TCP
  - name: cluster
    port: 8201
    targetPort: 8201
    protocol: TCP
- namespace: vault
  name: vault-internal
  type: ClusterIP
  selector:
    app: vault
  ports:
  - name: api
    port: 8200
    targetPort: 8200
    protocol: TCP
  - name: cluster
    port: 8201
    targetPort: 8201
    protocol: TCP
- namespace: vaultwarden
  name: vaultwarden-service
  type: ClusterIP
  selector:
    app: vaultwarden
  ports:
  - name: http
    port: 80
    targetPort: http
    protocol: TCP
- namespace: veles
  name: veles-backend
  type: ClusterIP
  selector:
    app: veles-backend
  ports:
  - name: http
    port: 80
    targetPort: 8796
    protocol: TCP
- namespace: veles
  name: veles-frontend
  type: ClusterIP
  selector:
    app: veles-frontend
  ports:
  - name: http
    port: 80
    targetPort: 8080
    protocol: TCP
- namespace: veles
  name: veles-postgres
  type: ClusterIP
  selector:
    app: veles-postgres
  ports:
  - name: postgres
    port: 5432
    targetPort: 5432
    protocol: TCP
http_endpoints:
- host: agent.bstein.dev
  path: /
  backend:
    namespace: hermes
    service: hermes
    port: dashboard
    workloads:
    - kind: Deployment
      name: hermes
  via:
    kind: Ingress
    name: agent
    source: hermes
- host: auth.bstein.dev
  path: /
  backend:
    namespace: sso
    service: oauth2-proxy
    port: 80
    workloads:
    - kind: Deployment
      name: oauth2-proxy
  via:
    kind: Ingress
    name: oauth2-proxy
    source: oauth2-proxy
- host: backup.bstein.dev
  path: /
  backend:
    namespace: maintenance
    service: oauth2-proxy-soteria
    port: 80
    workloads:
    - kind: Deployment
      name: oauth2-proxy-soteria
  via:
    kind: Ingress
    name: soteria
    source: maintenance
- host: bstein.dev
  path: /
  backend:
    namespace: bstein-dev-home
    service: bstein-dev-home-frontend
    port: 80
    workloads:
    - kind: Deployment
      name: bstein-dev-home-frontend
  via:
    kind: Ingress
    name: bstein-dev-home
    source: bstein-dev-home
- host: bstein.dev
  path: /.well-known/matrix/client
  backend:
    namespace: comms
    service: matrix-wellknown
    port: 80
    workloads: &id001
    - kind: Deployment
      name: matrix-wellknown
  via:
    kind: Ingress
    name: matrix-wellknown-bstein-dev
    source: comms
- host: bstein.dev
  path: /.well-known/matrix/server
  backend:
    namespace: comms
    service: matrix-wellknown
    port: 80
    workloads: *id001
  via:
    kind: Ingress
    name: matrix-wellknown-bstein-dev
    source: comms
- host: bstein.dev
  path: /api
  backend:
    namespace: bstein-dev-home
    service: bstein-dev-home-backend
    port: 80
    workloads:
    - kind: Deployment
      name: bstein-dev-home-backend
  via:
    kind: Ingress
    name: bstein-dev-home
    source: bstein-dev-home
- host: budget.bstein.dev
  path: /
  backend:
    namespace: finance
    service: actual-budget
    port: 80
    workloads:
    - kind: Deployment
      name: actual-budget
  via:
    kind: Ingress
    name: actual-budget
    source: finance
- host: call.live.bstein.dev
  path: /
  backend:
    namespace: comms
    service: element-call
    port: 80
    workloads:
    - kind: Deployment
      name: element-call
  via:
    kind: Ingress
    name: element-call
    source: comms
- host: chat.ai.bstein.dev
  path: /
  backend:
    namespace: bstein-dev-home
    service: chat-ai-gateway
    port: 80
    workloads:
    - kind: Deployment
      name: chat-ai-gateway
  via:
    kind: Ingress
    name: bstein-dev-home
    source: bstein-dev-home
- host: ci.bstein.dev
  path: /
  backend:
    namespace: jenkins
    service: jenkins
    port: http
    workloads:
    - kind: Deployment
      name: jenkins
  via:
    kind: Ingress
    name: jenkins
    source: jenkins
- host: cloud.bstein.dev
  path: /
  backend:
    namespace: nextcloud
    service: nextcloud
    port: 80
    workloads:
    - kind: Deployment
      name: nextcloud
  via:
    kind: Ingress
    name: nextcloud
    source: nextcloud
- host: health.bstein.dev
  path: /
  backend:
    namespace: health
    service: wger
    port: 80
    workloads:
    - kind: Deployment
      name: wger
  via:
    kind: Ingress
    name: wger
    source: health
- host: kit.live.bstein.dev
  path: /livekit/jwt
  backend:
    namespace: comms
    service: livekit-token-service
    port: 8080
    workloads:
    - kind: Deployment
      name: livekit-token-service
  via:
    kind: Ingress
    name: livekit-jwt-ingress
    source: comms
- host: kit.live.bstein.dev
  path: /livekit/sfu
  backend:
    namespace: comms
    service: livekit
    port: 7880
    workloads:
    - kind: Deployment
      name: livekit
  via:
    kind: Ingress
    name: livekit-ingress
    source: comms
- host: live.bstein.dev
  path: /.well-known/matrix/client
  backend:
    namespace: comms
    service: matrix-wellknown
    port: 80
    workloads: *id001
  via:
    kind: Ingress
    name: matrix-wellknown
    source: comms
- host: live.bstein.dev
  path: /.well-known/matrix/server
  backend:
    namespace: comms
    service: matrix-wellknown
    port: 80
    workloads: *id001
  via:
    kind: Ingress
    name: matrix-wellknown
    source: comms
- host: live.bstein.dev
  path: /_matrix
  backend:
    namespace: comms
    service: othrys-synapse-matrix-synapse
    port: 8008
    workloads: []
  via:
    kind: Ingress
    name: matrix-routing
    source: comms
- host: live.bstein.dev
  path: /_matrix/client/r0/register
  backend:
    namespace: comms
    service: matrix-guest-register
    port: 8080
    workloads: &id003
    - kind: Deployment
      name: matrix-guest-register
  via:
    kind: Ingress
    name: matrix-routing
    source: comms
- host: live.bstein.dev
  path: /_matrix/client/v3/login
  backend:
    namespace: comms
    service: matrix-authentication-service
    port: 8080
    workloads: &id002
    - kind: Deployment
      name: matrix-authentication-service
  via:
    kind: Ingress
    name: matrix-routing
    source: comms
- host: live.bstein.dev
  path: /_matrix/client/v3/logout
  backend:
    namespace: comms
    service: matrix-authentication-service
    port: 8080
    workloads: *id002
  via:
    kind: Ingress
    name: matrix-routing
    source: comms
- host: live.bstein.dev
  path: /_matrix/client/v3/refresh
  backend:
    namespace: comms
    service: matrix-authentication-service
    port: 8080
    workloads: *id002
  via:
    kind: Ingress
    name: matrix-routing
    source: comms
- host: live.bstein.dev
  path: /_matrix/client/v3/register
  backend:
    namespace: comms
    service: matrix-guest-register
    port: 8080
    workloads: *id003
  via:
    kind: Ingress
    name: matrix-routing
    source: comms
- host: logs.bstein.dev
  path: /
  backend:
    namespace: logging
    service: oauth2-proxy-logs
    port: http
    workloads:
    - kind: Deployment
      name: oauth2-proxy-logs
  via:
    kind: Ingress
    name: logs
    source: logging
- host: longhorn.bstein.dev
  path: /
  backend:
    namespace: longhorn-system
    service: oauth2-proxy-longhorn
    port: 80
    workloads:
    - kind: Deployment
      name: oauth2-proxy-longhorn
  via:
    kind: Ingress
    name: longhorn-ingress
    source: longhorn-ui
- host: mail.bstein.dev
  path: /
  backend:
    namespace: mailu-mailserver
    service: mailu-front
    port: 443
    workloads: []
  via:
    kind: IngressRoute
    name: mailu
    source: mailu
- host: matrix.live.bstein.dev
  path: /
  backend:
    namespace: comms
    service: matrix-authentication-service
    port: 8080
    workloads: *id002
  via:
    kind: Ingress
    name: matrix-routing
    source: comms
- host: matrix.live.bstein.dev
  path: /.well-known/matrix/client
  backend:
    namespace: comms
    service: matrix-wellknown
    port: 80
    workloads: *id001
  via:
    kind: Ingress
    name: matrix-wellknown-matrix-live
    source: comms
- host: matrix.live.bstein.dev
  path: /.well-known/matrix/server
  backend:
    namespace: comms
    service: matrix-wellknown
    port: 80
    workloads: *id001
  via:
    kind: Ingress
    name: matrix-wellknown-matrix-live
    source: comms
- host: matrix.live.bstein.dev
  path: /_matrix
  backend:
    namespace: comms
    service: othrys-synapse-matrix-synapse
    port: 8008
    workloads: []
  via:
    kind: Ingress
    name: matrix-routing
    source: comms
- host: matrix.live.bstein.dev
  path: /_matrix/client/r0/register
  backend:
    namespace: comms
    service: matrix-guest-register
    port: 8080
    workloads: *id003
  via:
    kind: Ingress
    name: matrix-routing
    source: comms
- host: matrix.live.bstein.dev
  path: /_matrix/client/v3/login
  backend:
    namespace: comms
    service: matrix-authentication-service
    port: 8080
    workloads: *id002
  via:
    kind: Ingress
    name: matrix-routing
    source: comms
- host: matrix.live.bstein.dev
  path: /_matrix/client/v3/logout
  backend:
    namespace: comms
    service: matrix-authentication-service
    port: 8080
    workloads: *id002
  via:
    kind: Ingress
    name: matrix-routing
    source: comms
- host: matrix.live.bstein.dev
  path: /_matrix/client/v3/refresh
  backend:
    namespace: comms
    service: matrix-authentication-service
    port: 8080
    workloads: *id002
  via:
    kind: Ingress
    name: matrix-routing
    source: comms
- host: matrix.live.bstein.dev
  path: /_matrix/client/v3/register
  backend:
    namespace: comms
    service: matrix-guest-register
    port: 8080
    workloads: *id003
  via:
    kind: Ingress
    name: matrix-routing
    source: comms
- host: matrix.live.bstein.dev
  path: /_synapse
  backend:
    namespace: comms
    service: othrys-synapse-matrix-synapse
    port: 8008
    workloads: []
  via:
    kind: Ingress
    name: matrix-routing
    source: comms
- host: monero.bstein.dev
  path: /
  backend:
    namespace: crypto
    service: monerod
    port: 18081
    workloads:
    - kind: Deployment
      name: monerod
  via:
    kind: Ingress
    name: monerod
    source: monerod
- host: money.bstein.dev
  path: /
  backend:
    namespace: finance
    service: firefly
    port: 80
    workloads:
    - kind: Deployment
      name: firefly
  via:
    kind: Ingress
    name: firefly
    source: finance
- host: notes.bstein.dev
  path: /
  backend:
    namespace: outline
    service: outline
    port: 80
    workloads:
    - kind: Deployment
      name: outline
  via:
    kind: Ingress
    name: outline
    source: outline
- host: office.bstein.dev
  path: /
  backend:
    namespace: nextcloud
    service: collabora
    port: 9980
    workloads:
    - kind: Deployment
      name: collabora
  via:
    kind: Ingress
    name: collabora
    source: nextcloud
- host: pegasus.bstein.dev
  path: /
  backend:
    namespace: jellyfin
    service: pegasus
    port: 80
    workloads:
    - kind: Deployment
      name: pegasus
  via:
    kind: Ingress
    name: pegasus
    source: pegasus
- host: quality.bstein.dev
  path: /
  backend:
    namespace: quality
    service: oauth2-proxy-sonarqube
    port: 80
    workloads:
    - kind: Deployment
      name: oauth2-proxy-sonarqube
  via:
    kind: Ingress
    name: sonarqube
    source: quality
- host: recovery.bstein.dev
  path: /
  backend:
    namespace: maintenance
    service: oauth2-proxy-metis
    port: 80
    workloads:
    - kind: Deployment
      name: oauth2-proxy-metis
  via:
    kind: Ingress
    name: metis
    source: maintenance
- host: scm.bstein.dev
  path: /
  backend:
    namespace: gitea
    service: gitea
    port: 3000
    workloads:
    - kind: Deployment
      name: gitea
  via:
    kind: Ingress
    name: gitea-ingress
    source: gitea
- host: secret.bstein.dev
  path: /
  backend:
    namespace: vault
    service: vault
    port: 8200
    workloads:
    - kind: StatefulSet
      name: vault
  via:
    kind: Ingress
    name: vault
    source: vault
- host: sso.bstein.dev
  path: /
  backend:
    namespace: sso
    service: keycloak
    port: 80
    workloads:
    - kind: Deployment
      name: keycloak
  via:
    kind: Ingress
    name: keycloak
    source: keycloak
- host: stream.bstein.dev
  path: /
  backend:
    namespace: jellyfin
    service: jellyfin
    port: 80
    workloads:
    - kind: Deployment
      name: jellyfin
  via:
    kind: Ingress
    name: jellyfin
    source: jellyfin
- host: tasks.bstein.dev
  path: /
  backend:
    namespace: planka
    service: planka
    port: 80
    workloads:
    - kind: Deployment
      name: planka
  via:
    kind: Ingress
    name: planka
    source: planka
- host: vault.bstein.dev
  path: /
  backend:
    namespace: vaultwarden
    service: vaultwarden-service
    port: 80
    workloads:
    - kind: Deployment
      name: vaultwarden
  via:
    kind: Ingress
    name: vaultwarden-ingress
    source: vaultwarden
- host: veles.bstein.dev
  path: /
  backend:
    namespace: veles
    service: veles-frontend
    port: 80
    workloads:
    - kind: Deployment
      name: veles-frontend
  via:
    kind: Ingress
    name: veles
    source: veles
- host: veles.bstein.dev
  path: /api
  backend:
    namespace: veles
    service: veles-backend
    port: 80
    workloads: &id004
    - kind: Deployment
      name: veles-backend
  via:
    kind: Ingress
    name: veles
    source: veles
- host: veles.bstein.dev
  path: /events
  backend:
    namespace: veles
    service: veles-backend
    port: 80
    workloads: *id004
  via:
    kind: Ingress
    name: veles
    source: veles
- host: veles.bstein.dev
  path: /ws
  backend:
    namespace: veles
    service: veles-backend
    port: 80
    workloads: *id004
  via:
    kind: Ingress
    name: veles
    source: veles
- host: wolf.bstein.dev
  path: /
  backend:
    namespace: game-stream
    service: oauth2-proxy-wolf
    port: 80
    workloads:
    - kind: Deployment
      name: oauth2-proxy-wolf
  via:
    kind: Ingress
    name: wolf
    source: game-stream
helmrelease_host_hints:
  cert-manager:cert-manager/cert-manager:
  - atlas.bstein.dev
  comms:comms/othrys-element:
  - call.live.bstein.dev
  - live.bstein.dev
  - matrix.live.bstein.dev
  comms:comms/othrys-synapse:
  - kit.live.bstein.dev
  - live.bstein.dev
  - matrix.live.bstein.dev
  - turn.live.bstein.dev
  gitops-ui:flux-system/weave-gitops:
  - cd.bstein.dev
  harbor:harbor/harbor:
  - registry.bstein.dev
  logging:logging/data-prepper:
  - registry.bstein.dev
  longhorn:longhorn-system/longhorn:
  - registry.bstein.dev
  - veles.bstein.dev
  mailu:mailu-mailserver/mailu:
  - bstein.dev
  - mail.bstein.dev
  monitoring:monitoring/alertmanager:
  - alerts.bstein.dev
  monitoring:monitoring/grafana:
  - atlas.bstein.dev
  - bstein.dev
  - metrics.bstein.dev
  - sso.bstein.dev
  monitoring:monitoring/kube-state-metrics:
  - atlas.bstein.dev
  vault-injector:vault/vault-injector:
  - atlas.bstein.dev
