apiVersion: v1 kind: PersistentVolumeClaim metadata: name: adguardsync-pvc namespace: dns annotations: nfs.io/storage-path: "adguardsync-config" spec: storageClassName: "nfs-client" accessModes: - ReadWriteOnce resources: requests: storage: 10Mi --- apiVersion: apps/v1 kind: Deployment metadata: name: adguardsync namespace: dns spec: strategy: type: Recreate replicas: 1 selector: matchLabels: app: adguardsync template: metadata: labels: app: adguardsync spec: containers: - name: adguardsync image: ghcr.io/bakito/adguardhome-sync:latest imagePullPolicy: Always ports: - containerPort: 8080 protocol: TCP name: web-port env: - name: CRON value: "*/2 * * * *" - name: RUN_ON_START value: "true" - name: LOG_LEVEL value: "info" - name: ORIGIN_URL value: "http://adguard.haven" - name: ORIGIN_USERNAME valueFrom: secretKeyRef: name: adguardhome-password key: username - name: ORIGIN_PASSWORD valueFrom: secretKeyRef: name: adguardhome-password key: password - name: REPLICA1_URL value: "http://adguard2.haven" - name: REPLICA1_USERNAME valueFrom: secretKeyRef: name: adguardhome-password key: username - name: REPLICA1_PASSWORD valueFrom: secretKeyRef: name: adguardhome-password key: password resources: requests: cpu: 100m memory: 128Mi limits: cpu: 100m memory: 128Mi volumeMounts: - name: adguardsync-storage mountPath: /config volumes: - name: adguardsync-storage persistentVolumeClaim: claimName: adguardsync-pvc --- apiVersion: v1 kind: Service metadata: name: adguardsync-svc namespace: dns spec: type: ClusterIP selector: app: adguardsync ports: - name: web port: 8080 targetPort: 8080 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: adguardsync-ingress namespace: dns spec: ingressClassName: nginx rules: - host: adguardsync.haven http: paths: - path: / pathType: Prefix backend: service: name: adguardsync-svc port: number: 8080