#!/bin/bash
{{ docker_bin_dir }}/docker run \
  --net=host \
  --pid=host \
  --privileged \
  --name=kubelet \
  --restart=on-failure:5 \
  --memory={{ kube_memory_reserved|regex_replace('Mi', 'M') }} \
  --cpu-shares={{ kube_cpu_reserved|regex_replace('m', '')  }} \
  -v /dev:/dev:rw \
  -v /etc/cni:/etc/cni:ro \
  -v /opt/cni:/opt/cni:ro \
  -v /etc/ssl:/etc/ssl:ro \
  -v /etc/resolv.conf:/etc/resolv.conf \
  {% for dir in ssl_ca_dirs -%}
  -v {{ dir }}:{{ dir }}:ro \
  {% endfor -%}
  {% if kubelet_load_modules -%}
  -v /lib/modules:/lib/modules:ro \
  {% endif -%}
  -v /sys:/sys:ro \
  -v {{ docker_daemon_graph }}:{{ docker_daemon_graph }}:rw \
  -v /var/log:/var/log:rw \
  -v /var/lib/kubelet:/var/lib/kubelet:shared \
  -v /var/lib/calico:/var/lib/calico:shared \
  -v /var/lib/cni:/var/lib/cni:shared \
  -v /var/run:/var/run:rw \
  {# we can run into issues with double mounting /var/lib/kubelet #}
  {# surely there's a better way to do this #}
  {% if '/var/lib/kubelet' not in kubelet_flexvolumes_plugins_dir %}
  -v {{ kubelet_flexvolumes_plugins_dir }}:{{ kubelet_flexvolumes_plugins_dir }}:rw \
  {% endif -%}
  {% if local_volume_provisioner_enabled -%}
  {% for class in local_volume_provisioner_storage_classes -%}
  -v {{ class.host_dir }}:{{ class.host_dir }}:rw \
  -v {{ class.mount_dir }}:{{ class.mount_dir }}:rw \
  {% endfor -%}
  {% endif %}
  -v {{kube_config_dir}}:{{kube_config_dir}}:ro \
  -v /etc/os-release:/etc/os-release:ro \
  {{ hyperkube_image_repo }}:{{ hyperkube_image_tag}} \
  ./hyperkube kubelet \
  "$@"
