apiVersion: apps/v1
kind: Deployment
metadata:
  name: dynatrace-oneagent-webhook
  namespace: dynatrace
  labels:
    dynatrace.com/operator: oneagent
spec:
  replicas: 1
  revisionHistoryLimit: 1
  selector:
    matchLabels:
      internal.oneagent.dynatrace.com/component: webhook
      internal.oneagent.dynatrace.com/app: webhook
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        dynatrace.com/operator: oneagent
        internal.oneagent.dynatrace.com/component: webhook
        internal.oneagent.dynatrace.com/app: webhook
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: beta.kubernetes.io/arch
                    operator: In
                    values:
                      - amd64
                      - arm64
                  - key: beta.kubernetes.io/os
                    operator: In
                    values:
                      - linux
              - matchExpressions:
                  - key: kubernetes.io/arch
                    operator: In
                    values:
                      - amd64
                      - arm64
                  - key: kubernetes.io/os
                    operator: In
                    values:
                      - linux
      containers:
        - name: webhook
          args:
            - webhook-server
          image: docker.io/dynatrace/dynatrace-oneagent-operator:snapshot
          imagePullPolicy: Always
          env:
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
          readinessProbe:
            httpGet:
              path: /healthz
              port: server-port
              scheme: HTTPS
            initialDelaySeconds: 60
            periodSeconds: 10
          livenessProbe:
            httpGet:
              path: /healthz
              port: server-port
              scheme: HTTPS
            initialDelaySeconds: 60
            periodSeconds: 10
          ports:
            - name: metrics
              containerPort: 8383
            - name: server-port
              containerPort: 8443
          resources:
            requests:
              cpu: 10m
              memory: 64Mi
            limits:
              cpu: 100m
              memory: 256Mi
          volumeMounts:
            - name: certs-volume
              mountPath: /mnt/webhook-certs
        - name: bootstrapper
          args:
            - webhook-bootstrapper
          image: docker.io/dynatrace/dynatrace-oneagent-operator:snapshot
          imagePullPolicy: Always
          env:
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
          ports:
            - name: metrics
              containerPort: 8484
            - name: server-port
              containerPort: 9080
          readinessProbe:
            httpGet:
              path: /healthz
              port: server-port
              scheme: HTTP
            initialDelaySeconds: 60
            periodSeconds: 10
          livenessProbe:
            httpGet:
              path: /healthz
              port: server-port
              scheme: HTTP
            initialDelaySeconds: 60
            periodSeconds: 10
          resources:
            requests:
              cpu: 10m
              memory: 64Mi
            limits:
              cpu: 100m
              memory: 256Mi
          volumeMounts:
            - name: certs-volume
              mountPath: /mnt/webhook-certs
      serviceAccountName: dynatrace-oneagent-webhook
      volumes:
        - name: certs-volume
          emptyDir: {}
