From 4b5299bb7a3f19814e74acaf4e967a4fb0204f3e Mon Sep 17 00:00:00 2001
From: Pasquale Toscano <pasqualetoscano90@gmail.com>
Date: Mon, 16 Mar 2020 11:48:36 +0100
Subject: [PATCH] =?UTF-8?q?Add=20variables=20to=20configure=20Containerd?=
 =?UTF-8?q?=20default=20runtime,=20untrusted=20runt=E2=80=A6=20(#5497)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Add variables to configure Containerd default runtime, untrusted runtime and additional runtimes

* Add containerd settings to sample inventory

* Empty commit
---
 .../group_vars/k8s-cluster/k8s-cluster.yml    | 26 +++++++++++++++++++
 .../containerd/defaults/main.yml              | 19 ++++++++++++++
 .../containerd/templates/config.toml.j2       | 19 +++++++++++---
 3 files changed, 61 insertions(+), 3 deletions(-)

diff --git a/inventory/sample/group_vars/k8s-cluster/k8s-cluster.yml b/inventory/sample/group_vars/k8s-cluster/k8s-cluster.yml
index c43cd83c8..7c64707c5 100644
--- a/inventory/sample/group_vars/k8s-cluster/k8s-cluster.yml
+++ b/inventory/sample/group_vars/k8s-cluster/k8s-cluster.yml
@@ -171,6 +171,32 @@ dns_domain: "{{ cluster_name }}"
 ## docker for docker, crio for cri-o and containerd for containerd.
 container_manager: docker
 
+## Settings for containerd runtimes (only used when container_manager is set to containerd)
+#
+# Settings for default containerd runtime
+# containerd_default_runtime:
+#   type: io.containerd.runtime.v1.linux
+#   engine: ''
+#   root: ''
+#
+# Settings for additional runtimes for containerd configuration
+# containerd_runtimes:
+#   - name: ""
+#     type: ""
+#     engine: ""
+#     root: ""
+# Example for Kata Containers as additional runtime:
+# containerd_runtimes:
+#   - name: kata
+#     type: io.containerd.kata.v2
+#     engine: ""
+#     root: ""
+#
+# Settings for untrusted containerd runtime
+# containerd_untrusted_runtime_type: ''
+# containerd_untrusted_runtime_engine: ''
+# containerd_untrusted_runtime_root: ''
+
 ## Settings for containerized control plane (kubelet/secrets)
 kubelet_deployment_type: host
 helm_deployment_type: host
diff --git a/roles/container-engine/containerd/defaults/main.yml b/roles/container-engine/containerd/defaults/main.yml
index ac797ec37..adeda97f9 100644
--- a/roles/container-engine/containerd/defaults/main.yml
+++ b/roles/container-engine/containerd/defaults/main.yml
@@ -48,3 +48,22 @@ containerd_debian_repo_base_url: 'https://download.docker.com/linux/debian'
 containerd_debian_repo_gpgkey: 'https://download.docker.com/linux/debian/gpg'
 containerd_debian_repo_repokey: '9DC858229FC7DD38854AE2D88D81803C0EBFCD88'
 containerd_debian_repo_component: 'stable'
+
+containerd_default_runtime:
+  type: io.containerd.runtime.v1.linux
+  engine: ''
+  root: ''
+
+# Additional runtimes for containerd configuration
+#
+# Example for Kata Containers:
+# containerd_runtimes:
+#   - name: kata
+#     type: io.containerd.kata.v2
+#     engine: ""
+#     root: ""
+containerd_runtimes: []
+
+containerd_untrusted_runtime_type: ''
+containerd_untrusted_runtime_engine: ''
+containerd_untrusted_runtime_root: ''
diff --git a/roles/container-engine/containerd/templates/config.toml.j2 b/roles/container-engine/containerd/templates/config.toml.j2
index 78aad1287..db1527e71 100644
--- a/roles/container-engine/containerd/templates/config.toml.j2
+++ b/roles/container-engine/containerd/templates/config.toml.j2
@@ -31,10 +31,23 @@ disabled_plugins = ["restart"]
   {{ param }} = {{ value }}
 {% endfor %}
 {% endif %}
+
+[plugins.cri.containerd.default_runtime]
+  runtime_type = "{{ containerd_default_runtime.type }}"
+  runtime_engine = "{{ containerd_default_runtime.engine }}"
+  runtime_root = "{{ containerd_default_runtime.root }}"
+
+{% for runtime in containerd_runtimes %}
+[plugins.cri.containerd.runtimes.{{ runtime.name }}]
+  runtime_type = "{{ runtime.type }}"
+  runtime_engine = "{{ runtime.engine }}"
+  runtime_root = "{{ runtime.root }}"
+{% endfor %}
+
 [plugins.cri.containerd.untrusted_workload_runtime]
-  runtime_type = ""
-  runtime_engine = ""
-  runtime_root = ""
+  runtime_type = "{{ containerd_untrusted_runtime_type }}"
+  runtime_engine = "{{ containerd_untrusted_runtime_engine }}"
+  runtime_root = "{{ containerd_untrusted_runtime_root }}"
 
 {% if 'registries' in containerd_config %}
 [plugins.cri.registry]
-- 
GitLab