---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: contiv-api-proxy
  namespace: kube-system
spec:
  updateStrategy:
    type: RollingUpdate
  selector:
    matchLabels:
      name: contiv-api-proxy
  template:
    metadata:
      namespace: kube-system
      labels:
        name: contiv-api-proxy
      annotations:
        scheduler.alpha.kubernetes.io/critical-pod: ""
    spec:
      serviceAccountName: contiv-api-proxy
      hostNetwork: true
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
{% for node in groups.oo_masters_to_config %}
                  - "{{ node }}"
{% endfor %}
      tolerations:
        - key: node-role.kubernetes.io/master
          effect: NoSchedule
      containers:
        - name: contiv-api-proxy
          image: "{{ contiv_api_proxy_image_repo }}:{{ contiv_version }}"
          args:
            - "--listen-address=0.0.0.0:{{ contiv_api_proxy_port }}"
            - --tls-key-file=/var/contiv/api_proxy_key.pem
            - --tls-certificate=/var/contiv/api_proxy_cert.pem
            - "--data-store-address={{ etcd_host }}"
            - --data-store-driver=etcd
            - "--netmaster-address=127.0.0.1:{{ contiv_netmaster_port }}"
          ports:
            - containerPort: "{{ contiv_api_proxy_port }}"
              hostPort: "{{ contiv_api_proxy_port }}"
          volumeMounts:
            - name: secret-volume
              mountPath: /var/contiv
              readOnly: true
      volumes:
        - name: secret-volume
          secret:
            secretName: contiv-api-proxy-secret
