---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: weave-net
  namespace: {{ system_namespace }}
  labels:
    version: {{ weave_version }}
spec:
  template:
    metadata:
      labels:
        name: weave-net
      annotations:
        scheduler.alpha.kubernetes.io/tolerations: |
          [
            {
              "key": "dedicated",
              "operator": "Equal",
              "value": "master",
              "effect": "NoSchedule"
            }
          ]
    spec:
      hostNetwork: true
      hostPID: true
      containers:
        - name: weave
          image: {{ weave_kube_image_repo }}:{{ weave_kube_image_tag }}
          imagePullPolicy: Always
          command:
            - /home/weave/launch.sh
          env:
            - name: IPALLOC_RANGE
              value: {{ kube_pods_subnet }}
{% if weave_checkpoint_disable is defined %}
            - name: CHECKPOINT_DISABLE
              value: {{ weave_checkpoint_disable }}
{% endif %}
{% if weave_expect_npc is defined %}
            - name: EXPECT_NPC
              value: {{ weave_expect_npc }}
{% endif %}
{% if weave_kube_peers is defined %}
            - name: KUBE_PEERS
              value: {{ weave_kube_peers }}
{% endif %}
{% if weave_ipalloc_init is defined %}
            - name: IPALLOC_INIT
              value: {{ weave_ipalloc_init }}
{% endif %}
{% if weave_expose_ip is defined %}
            - name: WEAVE_EXPOSE_IP
              value: {{ weave_expose_ip }}
{% endif %}
          livenessProbe:
            initialDelaySeconds: 60
            httpGet:
              host: 127.0.0.1
              path: /status
              port: 6784
          securityContext:
            privileged: true
          volumeMounts:
            - name: weavedb
              mountPath: /weavedb
            - name: cni-bin
              mountPath: /opt
            - name: cni-bin2
              mountPath: /host_home
            - name: cni-conf
              mountPath: /etc
          resources:
            requests:
              cpu: {{ weave_cpu_requests }}
              memory: {{ weave_memory_requests }}
            limits:
              cpu: {{ weave_cpu_limit }}
              memory: {{ weave_memory_limit }}
        - name: weave-npc
          image: {{ weave_npc_image_repo }}:{{ weave_npc_image_tag }}
          imagePullPolicy: Always
          resources:
            requests:
              cpu: {{ weave_cpu_requests }}
              memory: {{ weave_memory_requests }}
            limits:
              cpu: {{ weave_cpu_limit }}
              memory: {{ weave_memory_limit }}
          securityContext:
            privileged: true
      restartPolicy: Always
      volumes:
        - name: weavedb
          emptyDir: {}
        - name: cni-bin
          hostPath:
            path: /opt
        - name: cni-bin2
          hostPath:
            path: /home
        - name: cni-conf
          hostPath:
            path: /etc
