apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: netchecker-agent-hostnet
  name: netchecker-agent-hostnet
  namespace: {{ netcheck_namespace }}
spec:
  selector:
    matchLabels:
      app: netchecker-agent-hostnet
  template:
    metadata:
      name: netchecker-agent-hostnet
      labels:
        app: netchecker-agent-hostnet
    spec:
      hostNetwork: true
      dnsPolicy: ClusterFirstWithHostNet
      nodeSelector:
        kubernetes.io/os: linux
      priorityClassName: {% if netcheck_namespace == 'kube-system' %}system-node-critical{% else %}k8s-cluster-critical{% endif %}{{ '' }}
      tolerations:
        - effect: NoSchedule
          operator: Exists
      containers:
        - name: netchecker-agent
          image: "{{ netcheck_agent_image_repo }}:{{ netcheck_agent_image_tag }}"
          imagePullPolicy: {{ k8s_image_pull_policy }}
          env:
            - name: MY_POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: MY_NODE_NAME
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName
          args:
            - "-v={{ netchecker_agent_log_level }}"
            - "-alsologtostderr=true"
            - "-serverendpoint=netchecker-service:8081"
            - "-reportinterval={{ agent_report_interval }}"
          resources:
            limits:
              cpu: {{ netchecker_agent_cpu_limit }}
              memory: {{ netchecker_agent_memory_limit }}
            requests:
              cpu: {{ netchecker_agent_cpu_requests }}
              memory: {{ netchecker_agent_memory_requests }}
          securityContext:
            runAsUser: {{ netchecker_agent_user | default('0') }}
            runAsGroup: {{ netchecker_agent_group | default('0') }}
      serviceAccountName: netchecker-agent
  updateStrategy:
    rollingUpdate:
      maxUnavailable: 100%
    type: RollingUpdate
