def update_pod_with_webhook_container(pod, cmk_img, configmap_name, secret_name): container = k8s.get_container_template() args = ("/cmk/cmk.py webhook --conf-file /etc/webhook/server.yaml") container["args"] = [args] container["image"] = cmk_img container["name"] = "cmk-webhook" container["volumeMounts"].append({ 'mountPath': '/etc/webhook', 'name': 'configmap' }) container["volumeMounts"].append({ 'mountPath': '/etc/ssl', 'name': 'certs', 'readOnly': True }) pod["spec"]["volumes"].append({ 'name': 'configmap', 'configMap': { 'name': configmap_name } }) pod["spec"]["volumes"].append({ 'name': 'certs', 'secret': { 'secretName': secret_name } }) pod["spec"]["tolerations"] = [{"operator": "Exists"}] pod["spec"]["containers"].append(container) pod["spec"].pop("nodeName")
def update_pod_with_init_container(pod, cmd, cmk_img, cmk_img_pol, args): container_template = k8s.get_container_template() container_template["image"] = cmk_img container_template["imagePullPolicy"] = cmk_img_pol container_template["args"][0] = args # Each container name should be distinct within a Pod. container_template["name"] = cmd pod_init_containers_list = [] version = util.parse_version(k8s.get_kubelet_version(None)) if version >= util.parse_version("v1.7.0"): pod["spec"]["initContainers"] = [container_template] else: init_containers_key = "pod.beta.kubernetes.io/init-containers" if init_containers_key in pod["metadata"]["annotations"]: init_containers = \ pod["metadata"]["annotations"][init_containers_key] pod_init_containers_list = json.loads(init_containers) pod_init_containers_list.append(container_template) pod["metadata"]["annotations"][init_containers_key] = \ json.dumps(pod_init_containers_list)
def update_pod_with_init_container(pod, cmd, cmk_img, cmk_img_pol, args): container_template = k8s.get_container_template() container_template["image"] = cmk_img container_template["imagePullPolicy"] = cmk_img_pol container_template["args"][0] = args # Each container name should be distinct within a Pod. container_template["name"] = cmd # Note(balajismaniam): Downward API for spec.nodeName doesn't seem to # work with init-containers. Removing it as a work-around. Needs further # investigation. container_template["env"].pop() pod_init_containers_list = [] version = util.parse_version(k8s.get_kubelet_version(None)) if version >= util.parse_version("v1.7.0"): pod["spec"]["initContainers"] = [container_template] else: init_containers_key = "pod.beta.kubernetes.io/init-containers" if init_containers_key in pod["metadata"]["annotations"]: init_containers = \ pod["metadata"]["annotations"][init_containers_key] pod_init_containers_list = json.loads(init_containers) pod_init_containers_list.append(container_template) pod["metadata"]["annotations"][init_containers_key] = \ json.dumps(pod_init_containers_list)
def update_pod_with_container(pod, cmd, cmk_img, cmk_img_pol, args): container_template = k8s.get_container_template() container_template["image"] = cmk_img container_template["imagePullPolicy"] = cmk_img_pol container_template["args"][0] = args # Each container name should be distinct within a Pod. container_template["name"] = cmd pod["spec"]["containers"].append(container_template)