apiVersion: v1
kind: Secret
metadata:
  name: mautrix-whatsapp-registration
  namespace: chat
  annotations:
    kube-1password: x6lzkpyov4dem5jtk2kimyrnvy
    kube-1password/vault: Kubernetes
    kube-1password/secret-text-key: registration.yaml
  labels:
    app.kubernetes.io/name: "mautrix-whatsapp"
    component: registration
type: Opaque

---

apiVersion: v1
kind: Secret
metadata:
  name: mautrix-whatsapp-config
  namespace: chat
  annotations:
    kube-1password: ji3e2el66bu56bml3kq3ghyojq
    kube-1password/vault: Kubernetes
    kube-1password/secret-text-key: config.yaml
  labels:
    app.kubernetes.io/name: "mautrix-whatsapp"
    component: config
type: Opaque

---

apiVersion: v1
kind: Service
metadata:
  name: mautrix-whatsapp
  namespace: chat
  labels:
    app.kubernetes.io/name: mautrix-whatsapp
  # annotations:
  #   prometheus.io/scrape: "true"
  #   prometheus.io/path: "/metrics"
  #   prometheus.io/port: "9000"
spec:
  type: ClusterIP
  ports:
  - port: 29318
    targetPort: http
    protocol: TCP
    name: http
  selector:
    app.kubernetes.io/name: mautrix-whatsapp

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mautrix-whatsapp
  labels:
    app.kubernetes.io/name: mautrix-whatsapp
spec:
  revisionHistoryLimit: 3
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app.kubernetes.io/name: mautrix-whatsapp
  template:
    metadata:
      labels:
        app.kubernetes.io/name: mautrix-whatsapp
    spec:
      serviceAccountName: default
      automountServiceAccountToken: true
      dnsPolicy: ClusterFirst
      enableServiceLinks: true
      initContainers:
      - name: config-copy
        image: bash:latest
        imagePullPolicy: IfNotPresent
        args:
          - -c
          - |
            cp /secrets/* /data/
        volumeMounts:
          - name: mautrix-whatsapp-config
            mountPath: /secrets/config.yaml
            subPath: config.yaml
          - name: mautrix-whatsapp-registration
            mountPath: /secrets/registration.yaml
            subPath: registration.yaml
          - name: data
            mountPath: /data
      containers:
        - name: mautrix-whatsapp
          image: "dock.mau.dev/mautrix/whatsapp:v0.11.0"
          imagePullPolicy: IfNotPresent
          env:
            - name: "TZ"
              value: "UTC"
          ports:
            - name: http
              containerPort: 29318
              protocol: TCP
            # - name: metrics
            #   containerPort: 9000
            #   protocol: TCP
          volumeMounts:
          - name: data
            mountPath: /data
          livenessProbe:
            tcpSocket:
              port: 29318
            initialDelaySeconds: 0
            failureThreshold: 3
            timeoutSeconds: 1
            periodSeconds: 10
          readinessProbe:
            tcpSocket:
              port: 29318
            initialDelaySeconds: 0
            failureThreshold: 3
            timeoutSeconds: 1
            periodSeconds: 10
          startupProbe:
            tcpSocket:
              port: 29318
            initialDelaySeconds: 0
            failureThreshold: 30
            timeoutSeconds: 1
            periodSeconds: 5
      volumes:
        - name: data
          emptyDir: {}
        - name: mautrix-whatsapp-config
          secret:
            secretName: mautrix-whatsapp-config
        - name: mautrix-whatsapp-registration
          secret:
            secretName: mautrix-whatsapp-registration
---