From 33fabc908e7e7999272cf12cc02158f8ac2ffc4e Mon Sep 17 00:00:00 2001 From: Stan Wong Date: Wed, 11 Aug 2021 23:15:31 -0400 Subject: [PATCH] Switch vagrant test cluster runtime to use containerd directly Signed-off-by: Stan Wong --- .../playbook/roles/common/handlers/main.yml | 4 +- .../playbook/roles/common/tasks/busybox.yml | 12 +--- .../roles/common/tasks/containerd.yml | 63 +++++++++++++++++++ .../playbook/roles/common/tasks/docker.yml | 61 ------------------ .../playbook/roles/common/tasks/main.yml | 2 +- .../roles/common/templates/containerd.conf.j2 | 41 ++++++++++++ .../templates/containerd_modules.conf.j2 | 2 + .../roles/common/templates/docker.json.j2 | 8 --- 8 files changed, 111 insertions(+), 82 deletions(-) create mode 100644 test/e2e/infra/vagrant/playbook/roles/common/tasks/containerd.yml delete mode 100644 test/e2e/infra/vagrant/playbook/roles/common/tasks/docker.yml create mode 100644 test/e2e/infra/vagrant/playbook/roles/common/templates/containerd.conf.j2 create mode 100644 test/e2e/infra/vagrant/playbook/roles/common/templates/containerd_modules.conf.j2 delete mode 100644 test/e2e/infra/vagrant/playbook/roles/common/templates/docker.json.j2 diff --git a/test/e2e/infra/vagrant/playbook/roles/common/handlers/main.yml b/test/e2e/infra/vagrant/playbook/roles/common/handlers/main.yml index dfa13fa101b..969f728092a 100644 --- a/test/e2e/infra/vagrant/playbook/roles/common/handlers/main.yml +++ b/test/e2e/infra/vagrant/playbook/roles/common/handlers/main.yml @@ -1,6 +1,6 @@ -- name: docker status +- name: containerd status service: - name: docker + name: containerd state: started - name: kubelet status diff --git a/test/e2e/infra/vagrant/playbook/roles/common/tasks/busybox.yml b/test/e2e/infra/vagrant/playbook/roles/common/tasks/busybox.yml index 2bd3124a54c..712e858d850 100644 --- a/test/e2e/infra/vagrant/playbook/roles/common/tasks/busybox.yml +++ b/test/e2e/infra/vagrant/playbook/roles/common/tasks/busybox.yml @@ -1,11 +1,3 @@ - name: Pull busybox:latest docker image (Ansible < '2.8.0') - docker_image: - name: busybox:latest - pull: yes - when: ansible_version.full is version_compare('2.8.0', '<') - -- name: Pull busybox:latest docker image (Ansible >= '2.8.0') - docker_image: - name: busybox:latest - source: pull - when: ansible_version.full is version_compare('2.8.0', '>=') + ansible.builtin.command: ctr image pull docker.io/library/busybox:latest + \ No newline at end of file diff --git a/test/e2e/infra/vagrant/playbook/roles/common/tasks/containerd.yml b/test/e2e/infra/vagrant/playbook/roles/common/tasks/containerd.yml new file mode 100644 index 00000000000..146120faba9 --- /dev/null +++ b/test/e2e/infra/vagrant/playbook/roles/common/tasks/containerd.yml @@ -0,0 +1,63 @@ +- name: Get ubuntu release + shell: lsb_release -cs + register: release + changed_when: False + +- name: Add an apt signing key for Docker + apt_key: + url: https://download.docker.com/linux/ubuntu/gpg + state: present + +- name: Add apt repository for stable version + apt_repository: + repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ release.stdout }} stable + state: present + +- name: Loading required kernel modules on boot + template: + src: templates/containerd_modules.conf.j2 + dest: /etc/modules-load.d/containerd.conf + +- name: Load overlay kernel module + modprobe: + name: overlay + state: present + +- name: Load br_netfilter kernel module + modprobe: + name: br_netfilter + state: present + +- name: Configure sysctl + sysctl: + name: "{{ item.name }}" + value: "{{ item.value }}" + state: present + sysctl_file: /etc/sysctl.d/99-kubernetes-cri.conf + reload: yes + with_items: + - { name: net.bridge.bridge-nf-call-iptables, value: 1 } + - { name: net.ipv4.ip_forward, value: 1 } + - { name: net.bridge.bridge-nf-call-ip6tables, value: 1 } + +- name: Install containerd + apt: + name: containerd.io + state: present + update_cache: yes + force_apt_get: yes + notify: + - containerd status + +- name: Create containerd daemon configuration from template + template: + src: templates/containerd.conf.j2 + dest: /etc/containerd/config.toml + register: containerd_config + +- name: Restart containerd + service: + name: containerd + daemon_reload: yes + state: restarted + when: containerd_config.changed diff --git a/test/e2e/infra/vagrant/playbook/roles/common/tasks/docker.yml b/test/e2e/infra/vagrant/playbook/roles/common/tasks/docker.yml deleted file mode 100644 index 5784acb9063..00000000000 --- a/test/e2e/infra/vagrant/playbook/roles/common/tasks/docker.yml +++ /dev/null @@ -1,61 +0,0 @@ -- name: Get ubuntu release - shell: lsb_release -cs - register: release - changed_when: False - -- name: Add an apt signing key for Docker - apt_key: - url: https://download.docker.com/linux/ubuntu/gpg - state: present - -- name: Add apt repository for stable version - apt_repository: - repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ release.stdout }} stable - state: present - -- name: Install docker and its dependencies - apt: - name: "{{ packages }}" - state: present - update_cache: yes - force_apt_get: yes - vars: - packages: - - docker-ce - - docker-ce-cli - - containerd.io - notify: - - docker status - -- name: Add test user to docker group (Ansible >= 2.5.0) - user: - name: "{{ test_user }}" - groups: docker - append: yes - create_home: yes - when: ansible_version.full is version_compare('2.5.0', '>=') - -- name: Add test user to docker group (Ansible < 2.5.0) - user: - name: "{{ test_user }}" - groups: docker - append: yes - createhome: yes - when: ansible_version.full is version_compare('2.5.0', '<') - -# Install docker-py so that docker images can be pulled -- pip: - name: docker-py - -- name: Create Docker daemon configuration from template - template: - src: templates/docker.json.j2 - dest: /etc/docker/daemon.json - register: docker_config - -- name: Restart Docker - service: - name: docker - daemon_reload: yes - state: restarted - when: docker_config.changed diff --git a/test/e2e/infra/vagrant/playbook/roles/common/tasks/main.yml b/test/e2e/infra/vagrant/playbook/roles/common/tasks/main.yml index 2358e34d6ba..782279418fd 100644 --- a/test/e2e/infra/vagrant/playbook/roles/common/tasks/main.yml +++ b/test/e2e/infra/vagrant/playbook/roles/common/tasks/main.yml @@ -4,7 +4,7 @@ - import_tasks: base.yml -- import_tasks: docker.yml +- import_tasks: containerd.yml - import_tasks: busybox.yml diff --git a/test/e2e/infra/vagrant/playbook/roles/common/templates/containerd.conf.j2 b/test/e2e/infra/vagrant/playbook/roles/common/templates/containerd.conf.j2 new file mode 100644 index 00000000000..740a8058f06 --- /dev/null +++ b/test/e2e/infra/vagrant/playbook/roles/common/templates/containerd.conf.j2 @@ -0,0 +1,41 @@ +root = "/var/lib/containerd" +state = "/run/containerd" +oom_score = 0 +imports = ["/etc/containerd/runtime_*.toml", "./debug.toml"] + +[grpc] + address = "/run/containerd/containerd.sock" + uid = 0 + gid = 0 + +[debug] + address = "/run/containerd/debug.sock" + uid = 0 + gid = 0 + level = "info" + +[metrics] + address = "" + grpc_histogram = false + +[cgroup] + path = "" + +[plugins] + [plugins.cgroups] + no_prometheus = false + [plugins.diff] + default = ["walking"] + [plugins.linux] + shim = "containerd-shim" + runtime = "runc" + runtime_root = "" + no_shim = false + shim_debug = false + [plugins.scheduler] + pause_threshold = 0.02 + deletion_threshold = 0 + mutation_threshold = 100 + schedule_delay = 0 + startup_delay = "100ms" + \ No newline at end of file diff --git a/test/e2e/infra/vagrant/playbook/roles/common/templates/containerd_modules.conf.j2 b/test/e2e/infra/vagrant/playbook/roles/common/templates/containerd_modules.conf.j2 new file mode 100644 index 00000000000..43dd5433bcb --- /dev/null +++ b/test/e2e/infra/vagrant/playbook/roles/common/templates/containerd_modules.conf.j2 @@ -0,0 +1,2 @@ +overlay +br_netfilter diff --git a/test/e2e/infra/vagrant/playbook/roles/common/templates/docker.json.j2 b/test/e2e/infra/vagrant/playbook/roles/common/templates/docker.json.j2 deleted file mode 100644 index 5d18abccd26..00000000000 --- a/test/e2e/infra/vagrant/playbook/roles/common/templates/docker.json.j2 +++ /dev/null @@ -1,8 +0,0 @@ -{ - "exec-opts": ["native.cgroupdriver=systemd"], - "log-driver": "json-file", - "log-opts": { - "max-size": "100m" - }, - "storage-driver": "overlay2" -}