{%- from "kubernetes/map.jinja" import master with context %}
{%- from "kubernetes/map.jinja" import common with context %}
{%- from "kubernetes/map.jinja" import version %}
---
apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
  namespace: kube-system
spec:
  dnsPolicy: ClusterFirst
  hostNetwork: true
  restartPolicy: Always
  terminationGracePeriodSeconds: 30
  containers:
  - name: kube-apiserver
    image: {{ common.hyperkube.image }}
    command:
    - /hyperkube
    - apiserver
      --insecure-bind-address={{ master.apiserver.insecure_address }}
      --etcd-servers={% for member in master.etcd.members %}http://{{ member.host }}:4001{% if not loop.last %},{% endif %}{% endfor %}
      --admission-control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota
      --service-cluster-ip-range={{ master.service_addresses }}
      {%- if master.auth.get('ssl', {}).enabled|default(True) %}
      --client-ca-file={{ master.auth.get('ssl', {}).ca_file|default("/etc/kubernetes/ssl/ca-"+master.ca+".crt") }}
      {%- endif %}
      {%- if master.auth.get('proxy', {}).enabled|default(False) %}
      --requestheader-username-headers={{ master.auth.proxy.header.user }}
      --requestheader-group-headers={{ master.auth.proxy.header.group }}
      --requestheader-extra-headers-prefix={{ master.auth.proxy.header.extra }}
      --requestheader-client-ca-file={{ master.auth.proxy.ca_file|default("/etc/kubernetes/ssl/ca-"+master.ca+".crt") }}
      {%- endif %}
      --anonymous-auth={{ master.auth.get('anonymous', {}).enabled|default(False) }}
      {%- if master.auth.get('basic', {}).enabled|default(True) %}
      --basic-auth-file={{ master.auth.basic.file|default("/srv/kubernetes/basic_auth.csv") }}
      {%- endif %}
      --tls-cert-file=/etc/kubernetes/ssl/kubernetes-server.crt
      --tls-private-key-file=/etc/kubernetes/ssl/kubernetes-server.key
      --secure-port={{ master.apiserver.secure_port }}
      --bind-address={{ master.apiserver.address }}
      {%- if master.auth.get('token', {}).enabled|default(True) %}
      --token-auth-file={{ master.auth.token.file|default("/srv/kubernetes/known_tokens.csv") }}
      {%- endif %}
      --v={{ master.get('verbosity', 2) }}
      --allow-privileged=True
      {%- if common.addons.get('virtlet', {}).get('enabled') %}
      {%- if salt['pkg.version_cmp'](version,'1.8') >= 0 %}
        --feature-gates=MountPropagation=true
      {%- endif %}
      {%- if salt['pkg.version_cmp'](version,'1.9') >= 0 %}
      --endpoint-reconciler-type={{ master.apiserver.get('endpoint-reconciler', 'lease') }}
      {%- else %}
      --apiserver-count={{ master.apiserver.get('count', 1) }}
      {%- endif %}
      {%- endif %}
      {%- if master.auth.get('mode') %}
      --authorization-mode={{ master.auth.mode }}
      {%- endif %}
{%- if master.apiserver.node_port_range is defined %}
      --service-node-port-range {{ master.apiserver.node_port_range }}
{%- endif %}
{%- for key, value in master.get('apiserver', {}).get('daemon_opts', {}).items() %}
      --{{ key }}={{ value }}
{% endfor %}
      1>>/var/log/kube-apiserver.log 2>&1
    imagePullPolicy: IfNotPresent
    livenessProbe:
      httpGet:
        host: 127.0.0.1
        path: /healthz
        port: {{ master.apiserver.insecure_port }}
        scheme: HTTP
      initialDelaySeconds: 15
      timeoutSeconds: 15
    ports:
    - containerPort: {{ master.apiserver.secure_port }}
      hostPort: {{ master.apiserver.secure_port }}
      name: https
      protocol: TCP
    - containerPort: {{ master.apiserver.insecure_port }}
      hostPort: {{ master.apiserver.insecure_port }}
      name: local
      protocol: TCP
    resources:
      requests:
        cpu: 250m
    volumeMounts:
    - mountPath: /srv/kubernetes
      name: srvkube
      readOnly: true
    - mountPath: /var/log/kube-apiserver.log
      name: logfile
    - mountPath: /etc/kubernetes/
      name: etckube
      readOnly: true
    - mountPath: /usr/share/ca-certificates
      name: usrsharecacerts
      readOnly: true
    - mountPath: /srv/sshproxy
      name: srvsshproxy
  volumes:
  - hostPath:
      path: /srv/kubernetes
    name: srvkube
  - hostPath:
      path: /var/log/kube-apiserver.log
    name: logfile
  - hostPath:
      path: /etc/kubernetes/
    name: etckube
  - hostPath:
      path: /usr/share/ca-certificates
    name: usrsharecacerts
  - hostPath:
      path: /srv/sshproxy
    name: srvsshproxy
