Author SHA1 Message Date
ivanch 12b14ca9d4 adding new csi-driver-nfs 2026-09-01 20:10:29 -03:00
ivanch ad5b5c6bb1 removing old nfs-provisioner 2026-09-01 20:09:51 -03:00
ivanch 64aa2da745 swapping nginx ingress to traefik 2026-08-31 20:23:17 -03:00
ivanch b18c3175aa removing ingressClassName: nginx definition 2026-08-31 20:14:37 -03:00
ivanch 164d31efa7 alloy: fix helm values nesting — configMap/clustering/mounts/resources belong under alloy.*; chart was silently ignoring them (logs never collected) 2026-08-30 20:06:23 -03:00
ivanch 5c129570da configuring api user for argocd 2026-08-30 20:02:13 -03:00
ivanch d9016105ed improving setup 2026-08-30 19:32:37 -03:00
ivanch 04ab8f9407 adding new helms 2026-08-30 19:32:25 -03:00
ivanch 237f6d5bad changing secrets to private repo 2026-08-30 18:57:28 -03:00
ivanch 3e7605d65e Merge branch 'main' of git.ivanch.me:ivanch/haven-ops 2026-08-30 17:18:03 -03:00
ivanch b582699d21 removing qbittorrent 2026-08-30 17:17:47 -03:00
ivanch 140198f513 Merge pull request 'Update mcr.microsoft.com/playwright Docker tag to v1.62.1' (#5) from renovate/mcr.microsoft.com-playwright-1.x into main
Reviewed-on: #5
2026-08-30 19:17:17 +00:00
ivanch 66dae6b74b Merge pull request 'Update lscr.io/linuxserver/qbittorrent Docker tag to v5.2.3' (#4) from renovate/lscr.io-linuxserver-qbittorrent-5.x into main
Reviewed-on: #4
2026-08-30 19:17:05 +00:00
Renovate Bot cf61cb0816 Update lscr.io/linuxserver/qbittorrent Docker tag to v5.2.3 2026-08-30 15:02:19 +00:00
38 changed files with 450 additions and 637 deletions
+32 -6
View File
@@ -1,12 +1,22 @@
# Initial setup # Setup Instructions
```sh
# Create namespace ## Pre-installation
1. Create namespaces with
```bash
kubectl apply -f bootstrap/namespaces.yaml kubectl apply -f bootstrap/namespaces.yaml
```
# Install ArgoCD 2. Apply Vaultwarden deployment app
```bash
kubectl apply -f apps/default/vaultwarden.yaml
```
3. Configure required secrets in `secrets/` directory, each mapping to an entity in Vaultwarden.
## ArgoCD Installation
```sh
kubectl apply -k bootstrap/argocd-install kubectl apply -k bootstrap/argocd-install
# Apply root app
kubectl apply -f bootstrap/root-app.yaml kubectl apply -f bootstrap/root-app.yaml
``` ```
@@ -17,3 +27,19 @@ kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.pas
``` ```
2. Access ArgoCD and login with `admin` / password from above. 2. Access ArgoCD and login with `admin` / password from above.
## External Secrets Operator preparation
Create this Secret manually. `BW_HOST` must have no trailing slash.
```bash
kubectl -n infra create secret generic bitwarden-cli \
--from-literal=BW_HOST='[VAULTWARDEN_URL]' \
--from-literal=BW_USERNAME='[VAULTWARDEN_EMAIL]' \
--from-literal=BW_PASSWORD='[VAULTWARDEN_PASSWORD]'
```
## Apply order
1. `kubectl apply -f secrets/`
2. `kubectl apply -f apps/metalldb-system/`
3. `kubectl apply -f apps/infra/`
+3 -2
View File
@@ -19,11 +19,12 @@ spec:
targetRevision: 1.12.1 targetRevision: 1.12.1
helm: helm:
valuesObject: valuesObject:
controller:
type: daemonset
alloy:
clustering: { enabled: false } clustering: { enabled: false }
mounts: mounts:
varlog: true varlog: true
controller:
type: daemonset
resources: resources:
requests: requests:
cpu: 100m cpu: 100m
-1
View File
@@ -115,7 +115,6 @@ metadata:
labels: labels:
app: affine app: affine
spec: spec:
ingressClassName: nginx
rules: rules:
- host: affine.haven - host: affine.haven
http: http:
-2
View File
@@ -135,7 +135,6 @@ metadata:
nginx.ingress.kubernetes.io/proxy-read-timeout: "600" nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600" nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
spec: spec:
ingressClassName: nginx
rules: rules:
- host: cloud.haven - host: cloud.haven
http: http:
@@ -158,7 +157,6 @@ metadata:
nginx.ingress.kubernetes.io/proxy-read-timeout: "600" nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600" nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
spec: spec:
ingressClassName: nginx
rules: rules:
- host: cloud.ivanch.me - host: cloud.ivanch.me
http: http:
-1
View File
@@ -122,7 +122,6 @@ metadata:
nginx.ingress.kubernetes.io/proxy-read-timeout: "600" nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600" nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
spec: spec:
ingressClassName: nginx
rules: rules:
- host: slink.haven - host: slink.haven
http: http:
-1
View File
@@ -145,7 +145,6 @@ metadata:
name: archivebox-ingress name: archivebox-ingress
namespace: default namespace: default
spec: spec:
ingressClassName: nginx
rules: rules:
- host: "archive.haven" - host: "archive.haven"
http: http:
-1
View File
@@ -140,7 +140,6 @@ metadata:
labels: labels:
app.kubernetes.io/name: changedetection app.kubernetes.io/name: changedetection
spec: spec:
ingressClassName: nginx
rules: rules:
- host: change.haven - host: change.haven
http: http:
-1
View File
@@ -192,7 +192,6 @@ metadata:
labels: labels:
app.kubernetes.io/name: homepage app.kubernetes.io/name: homepage
spec: spec:
ingressClassName: nginx
rules: rules:
- host: "homepage.haven" - host: "homepage.haven"
http: http:
-1
View File
@@ -53,7 +53,6 @@ metadata:
name: it-tools-ingress name: it-tools-ingress
namespace: default namespace: default
spec: spec:
ingressClassName: nginx
rules: rules:
- host: "tools.haven" - host: "tools.haven"
http: http:
-1
View File
@@ -77,7 +77,6 @@ metadata:
name: notepad name: notepad
namespace: default namespace: default
spec: spec:
ingressClassName: nginx
rules: rules:
- host: notepad.haven - host: notepad.haven
http: http:
-1
View File
@@ -94,7 +94,6 @@ metadata:
annotations: annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "50m" nginx.ingress.kubernetes.io/proxy-body-size: "50m"
spec: spec:
ingressClassName: nginx
rules: rules:
- host: openwebui.haven - host: openwebui.haven
http: http:
-1
View File
@@ -137,7 +137,6 @@ metadata:
name: paperless name: paperless
namespace: default namespace: default
spec: spec:
ingressClassName: nginx
rules: rules:
- host: paperless.haven - host: paperless.haven
http: http:
+8 -9
View File
@@ -32,7 +32,7 @@ spec:
- playwright@1.58.0 - playwright@1.58.0
- run-server - run-server
- --port - --port
- '3000' - "3000"
- --host - --host
- 0.0.0.0 - 0.0.0.0
env: env:
@@ -46,7 +46,7 @@ spec:
protocol: TCP protocol: TCP
resources: resources:
limits: limits:
cpu: '4' cpu: "4"
memory: 4Gi memory: 4Gi
requests: requests:
cpu: 500m cpu: 500m
@@ -68,17 +68,17 @@ spec:
status: status:
availableReplicas: 1 availableReplicas: 1
conditions: conditions:
- lastTransitionTime: '2026-05-29T15:54:24Z' - lastTransitionTime: "2026-05-29T15:54:24Z"
lastUpdateTime: '2026-07-22T10:14:35Z' lastUpdateTime: "2026-07-22T10:14:35Z"
message: ReplicaSet "playwright-86c74d7c78" has successfully progressed. message: ReplicaSet "playwright-86c74d7c78" has successfully progressed.
reason: NewReplicaSetAvailable reason: NewReplicaSetAvailable
status: 'True' status: "True"
type: Progressing type: Progressing
- lastTransitionTime: '2026-08-28T06:04:14Z' - lastTransitionTime: "2026-08-28T06:04:14Z"
lastUpdateTime: '2026-08-28T06:04:14Z' lastUpdateTime: "2026-08-28T06:04:14Z"
message: Deployment has minimum availability. message: Deployment has minimum availability.
reason: MinimumReplicasAvailable reason: MinimumReplicasAvailable
status: 'True' status: "True"
type: Available type: Available
observedGeneration: 95 observedGeneration: 95
readyReplicas: 1 readyReplicas: 1
@@ -113,7 +113,6 @@ metadata:
name: playwright name: playwright
namespace: default namespace: default
spec: spec:
ingressClassName: nginx
rules: rules:
- host: playwright.haven - host: playwright.haven
http: http:
-132
View File
@@ -1,132 +0,0 @@
---
# 1) Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: qbittorrent
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: qbittorrent
template:
metadata:
labels:
app: qbittorrent
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
preference:
matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- iris
containers:
- name: qbittorrent
image: lscr.io/linuxserver/qbittorrent:5.0.4
imagePullPolicy: Always
resources:
requests:
cpu: 200m
memory: 256Mi
limits:
cpu: 1000m
memory: 512Mi
ports:
- containerPort: 4300
name: webui-port
- containerPort: 6881
name: qbit-tcp
protocol: TCP
- containerPort: 6881
name: qbit-udp
protocol: UDP
env:
- name: PUID
value: "1000"
- name: PGID
value: "1000"
- name: TZ
value: "Etc/UTC"
- name: WEBUI_PORT
value: "4300"
- name: TORRENTING_PORT
value: "6881"
volumeMounts:
- name: qbittorrent-config
mountPath: /config
- name: nas-storage
mountPath: /nas
volumes:
- name: qbittorrent-config
persistentVolumeClaim:
claimName: qbittorrent-config
- name: nas-storage
nfs:
server: 192.168.15.99
path: /export/Storage
---
# PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: qbittorrent-config
namespace: default
annotations:
nfs.io/storage-path: "qbittorrent-config"
spec:
storageClassName: "nfs-client"
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
# 2) Service
apiVersion: v1
kind: Service
metadata:
name: qbittorrent
namespace: default
spec:
type: NodePort
selector:
app: qbittorrent
ports:
- port: 4300
targetPort: webui-port
name: webui
- port: 6881
targetPort: qbit-tcp
name: torrent-tcp
protocol: TCP
- port: 6881
targetPort: qbit-udp
name: torrent-udp
protocol: UDP
---
# 4) Ingress (Traefik)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: qbittorrent
namespace: default
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
ingressClassName: nginx
rules:
- host: qbittorrent.haven
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: qbittorrent
port:
number: 4300
-1
View File
@@ -80,7 +80,6 @@ metadata:
name: searxng name: searxng
namespace: default namespace: default
spec: spec:
ingressClassName: nginx
rules: rules:
- host: search.haven - host: search.haven
http: http:
-1
View File
@@ -99,7 +99,6 @@ metadata:
labels: labels:
app: stirlingpdf app: stirlingpdf
spec: spec:
ingressClassName: nginx
rules: rules:
- host: stirling.haven - host: stirling.haven
http: http:
-1
View File
@@ -93,7 +93,6 @@ metadata:
name: uptimekuma name: uptimekuma
namespace: default namespace: default
spec: spec:
ingressClassName: nginx
rules: rules:
- host: uptimekuma.haven - host: uptimekuma.haven
http: http:
-2
View File
@@ -110,7 +110,6 @@ metadata:
cert-manager.io/cluster-issuer: internal-ca cert-manager.io/cluster-issuer: internal-ca
nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
spec: spec:
ingressClassName: nginx
tls: tls:
- hosts: - hosts:
- vault.haven - vault.haven
@@ -134,7 +133,6 @@ metadata:
name: vaultwarden-public name: vaultwarden-public
namespace: default namespace: default
spec: spec:
ingressClassName: nginx
rules: rules:
- host: vault.ivanch.me - host: vault.ivanch.me
http: http:
-1
View File
@@ -104,7 +104,6 @@ metadata:
name: adguardsync-ingress name: adguardsync-ingress
namespace: dns namespace: dns
spec: spec:
ingressClassName: nginx
rules: rules:
- host: adguardsync.haven - host: adguardsync.haven
http: http:
-2
View File
@@ -140,7 +140,6 @@ metadata:
name: adguardhome-ingress name: adguardhome-ingress
namespace: dns namespace: dns
spec: spec:
ingressClassName: nginx
rules: rules:
- host: adguard.haven - host: adguard.haven
http: http:
@@ -159,7 +158,6 @@ metadata:
name: adguardhome-install-ingress name: adguardhome-install-ingress
namespace: dns namespace: dns
spec: spec:
ingressClassName: nginx
rules: rules:
- host: install.adguard.haven - host: install.adguard.haven
http: http:
-1
View File
@@ -83,7 +83,6 @@ metadata:
name: beszel name: beszel
namespace: infra namespace: infra
spec: spec:
ingressClassName: nginx
rules: rules:
- host: beszel.haven - host: beszel.haven
http: http:
-1
View File
@@ -99,7 +99,6 @@ metadata:
name: code-config name: code-config
namespace: infra namespace: infra
spec: spec:
ingressClassName: nginx
rules: rules:
- host: code-config.haven - host: code-config.haven
http: http:
+26
View File
@@ -0,0 +1,26 @@
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: csi-driver-nfs
namespace: infra
spec:
repo: https://kubernetes-csi.github.io/csi-driver-nfs
chart: csi-driver-nfs
version: 4.13.4
targetNamespace: infra
valuesContent: |-
controller:
replicas: 1
logLevel: 5
defaultOnDeletePolicy: retain
storageClasses:
- name: nfs-client
annotations:
storageclass.kubernetes.io/is-default-class: "true"
parameters:
server: nfs-config.haven
share: /export/config
subDir: ${pvc.metadata.namespace}/${pvc.metadata.name}
onDelete: retain
reclaimPolicy: Retain
volumeBindingMode: Immediate
+11
View File
@@ -0,0 +1,11 @@
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: external-secrets
namespace: kube-system
spec:
repo: https://charts.external-secrets.io
chart: external-secrets
version: 2.7.0
targetNamespace: external-secrets
createNamespace: true
-1
View File
@@ -115,7 +115,6 @@ metadata:
nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/cors-allow-origin: "*" nginx.ingress.kubernetes.io/cors-allow-origin: "*"
spec: spec:
ingressClassName: nginx
rules: rules:
- host: file-nginx.haven - host: file-nginx.haven
http: http:
-1
View File
@@ -72,7 +72,6 @@ metadata:
name: haven-notify name: haven-notify
namespace: infra namespace: infra
spec: spec:
ingressClassName: nginx
rules: rules:
- host: notify.haven - host: notify.haven
http: http:
-33
View File
@@ -1,33 +0,0 @@
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: ingress-nginx
namespace: kube-system
spec:
repo: https://kubernetes.github.io/ingress-nginx
chart: ingress-nginx
version: 4.x.x
targetNamespace: ingress-nginx
valuesContent: |-
controller:
replicaCount: 2
ingressClassResource:
name: nginx
enabled: true
default: true
controllerValue: "k8s.io/ingress-nginx"
ingressClass: nginx
service:
type: LoadBalancer
externalTrafficPolicy: Local
annotations:
metallb.io/ip-allocated-from-pool: default-pool
metallb.io/loadBalancerIPs: "192.168.20.204"
loadBalancerIP: 192.168.20.204
resources:
requests:
cpu: 100m
memory: 90Mi
limits:
cpu: 1000m
memory: 256Mi
+32
View File
@@ -0,0 +1,32 @@
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: traefik
namespace: kube-system
spec:
repo: https://traefik.github.io/charts
chart: traefik
version: 41.2.0
targetNamespace: traefik
createNamespace: true
valuesContent: |-
deployment:
replicas: 2
ingressClass:
enabled: true
isDefaultClass: true
name: traefik
service:
annotations:
metallb.io/ip-allocated-from-pool: default-pool
metallb.io/loadBalancerIPs: "192.168.20.204"
spec:
type: LoadBalancer
externalTrafficPolicy: Local
resources:
requests:
cpu: 100m
memory: 90Mi
limits:
cpu: 1000m
memory: 256Mi
-1
View File
@@ -113,7 +113,6 @@ metadata:
name: wg-easy-ingress name: wg-easy-ingress
namespace: infra namespace: infra
spec: spec:
ingressClassName: nginx
rules: rules:
- host: vpn.haven - host: vpn.haven
http: http:
+10
View File
@@ -0,0 +1,10 @@
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: metallb
namespace: kube-system
spec:
repo: https://metallb.github.io/metallb
chart: metallb
version: 0.15.2
targetNamespace: metallb-system
-2
View File
@@ -94,7 +94,6 @@ metadata:
namespace: monitoring namespace: monitoring
name: grafana name: grafana
spec: spec:
ingressClassName: nginx
rules: rules:
- host: grafana.haven - host: grafana.haven
http: http:
@@ -113,7 +112,6 @@ metadata:
namespace: monitoring namespace: monitoring
name: grafana-public name: grafana-public
spec: spec:
ingressClassName: nginx
rules: rules:
- host: grafanah.ivanch.me - host: grafanah.ivanch.me
http: http:
@@ -0,0 +1,23 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cm
namespace: argocd
labels:
app.kubernetes.io/name: argocd-cm
app.kubernetes.io/part-of: argocd
data:
accounts.api: apiKey
accounts.api.enabled: "true"
---
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-rbac-cm
namespace: argocd
labels:
app.kubernetes.io/name: argocd-rbac-cm
app.kubernetes.io/part-of: argocd
data:
policy.csv: |
g, api, role:readonly
-1
View File
@@ -4,7 +4,6 @@ metadata:
name: argocd-server name: argocd-server
namespace: argocd namespace: argocd
spec: spec:
ingressClassName: nginx
rules: rules:
- host: argocd.haven - host: argocd.haven
http: http:
@@ -9,3 +9,4 @@ resources:
patches: patches:
- path: server-insecure-patch.yaml - path: server-insecure-patch.yaml
- path: argocd-api-user.yaml
-7
View File
@@ -70,13 +70,6 @@ kind: Namespace
metadata: metadata:
name: metallb-system name: metallb-system
--- ---
apiVersion: v1
kind: Namespace
metadata:
name: nfs-provisioner
labels:
name: nfs-provisioner
---
# ============================================================================== # ==============================================================================
# Observability & Monitoring # Observability & Monitoring
# ============================================================================== # ==============================================================================
-48
View File
@@ -1,48 +0,0 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata: { name: radarr, namespace: media }
spec:
refreshInterval: 1h
target:
name: radarr-secret
deletionPolicy: Retain
template:
type: Opaque
data:
Radarr__Postgres__User: "{{ .Radarr__Postgres__User }}"
Radarr__Postgres__Password: "{{ .Radarr__Postgres__Password }}"
Radarr__Postgres__Host: "{{ .Radarr__Postgres__Host }}"
Radarr__Postgres__MainDb: "{{ .Radarr__Postgres__MainDb }}"
data:
- secretKey: Radarr__Postgres__User
remoteRef:
{
key: ab723b65-3ec8-469c-b01d-67a6e3049023,
property: username,
}
sourceRef:
{ storeRef: { name: bitwarden-login, kind: ClusterSecretStore } }
- secretKey: Radarr__Postgres__Password
remoteRef:
{
key: ab723b65-3ec8-469c-b01d-67a6e3049023,
property: password,
}
sourceRef:
{ storeRef: { name: bitwarden-login, kind: ClusterSecretStore } }
- secretKey: Radarr__Postgres__Host
remoteRef:
{
key: ab723b65-3ec8-469c-b01d-67a6e3049023,
property: Radarr__Postgres__Host,
}
sourceRef:
{ storeRef: { name: bitwarden-fields, kind: ClusterSecretStore } }
- secretKey: Radarr__Postgres__MainDb
remoteRef:
{
key: ab723b65-3ec8-469c-b01d-67a6e3049023,
property: Radarr__Postgres__MainDb,
}
sourceRef:
{ storeRef: { name: bitwarden-fields, kind: ClusterSecretStore } }
-27
View File
@@ -1,27 +0,0 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata: { name: recommender, namespace: media }
spec:
refreshInterval: 1h
target:
name: recommender-secrets
deletionPolicy: Retain
template:
type: Opaque
data:
OPENAI_API_KEY: "{{ .OPENAI_API_KEY }}"
DATABASE_URL: "{{ .DATABASE_URL }}"
data:
- secretKey: OPENAI_API_KEY
remoteRef:
{
key: 5079ef6f-3d1d-4522-b22c-6dd5f1c19acd,
property: OPENAI_API_KEY,
}
sourceRef:
{ storeRef: { name: bitwarden-fields, kind: ClusterSecretStore } }
- secretKey: DATABASE_URL
remoteRef:
{ key: 5079ef6f-3d1d-4522-b22c-6dd5f1c19acd, property: DATABASE_URL }
sourceRef:
{ storeRef: { name: bitwarden-fields, kind: ClusterSecretStore } }
-42
View File
@@ -1,42 +0,0 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata: { name: sonarr, namespace: media }
spec:
refreshInterval: 1h
target:
name: sonarr-secret
deletionPolicy: Retain
template:
type: Opaque
data:
Sonarr__Postgres__User: "{{ .Sonarr__Postgres__User }}"
Sonarr__Postgres__Password: "{{ .Sonarr__Postgres__Password }}"
Sonarr__Postgres__Host: "{{ .Sonarr__Postgres__Host }}"
Sonarr__Postgres__MainDb: "{{ .Sonarr__Postgres__MainDb }}"
data:
- secretKey: Sonarr__Postgres__User
remoteRef:
{ key: 2c5b6d27-971f-4876-b10d-db400dfde7b2, property: username }
sourceRef:
{ storeRef: { name: bitwarden-login, kind: ClusterSecretStore } }
- secretKey: Sonarr__Postgres__Password
remoteRef:
{ key: 2c5b6d27-971f-4876-b10d-db400dfde7b2, property: password }
sourceRef:
{ storeRef: { name: bitwarden-login, kind: ClusterSecretStore } }
- secretKey: Sonarr__Postgres__Host
remoteRef:
{
key: 2c5b6d27-971f-4876-b10d-db400dfde7b2,
property: Sonarr__Postgres__Host,
}
sourceRef:
{ storeRef: { name: bitwarden-fields, kind: ClusterSecretStore } }
- secretKey: Sonarr__Postgres__MainDb
remoteRef:
{
key: 2c5b6d27-971f-4876-b10d-db400dfde7b2,
property: Sonarr__Postgres__MainDb,
}
sourceRef:
{ storeRef: { name: bitwarden-fields, kind: ClusterSecretStore } }