Add cgroup2 CI (Fedora on Vagrant on GHA)

Add `.github/workflows/cgroup2.yaml` for running Fedora on Vagrant on
GitHub Actions to test cgroup2 environment.

Only very basic smoke tests are executed, as Vagrant is too slow to run
the entire sonobuoy.

Relevant:
- kubernetes-sigs/kind PR 2017
- https://github.com/rootless-containers/usernetes/blob/v20210201.0/.github/workflows/main.yaml

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
This commit is contained in:
Akihiro Suda 2021-02-02 16:14:47 +09:00 committed by Brad Davidson
parent 17d91c5148
commit 3cfa76fcbf
3 changed files with 97 additions and 0 deletions

60
.github/workflows/cgroup2.yaml vendored Normal file
View File

@ -0,0 +1,60 @@
name: cgroup2
on: [push, pull_request]
jobs:
build:
name: "Build"
runs-on: ubuntu-20.04
timeout-minutes: 40
steps:
- name: "Checkout"
uses: actions/checkout@v2
with:
fetch-depth: 1
- name: "Make"
run: DOCKER_BUILDKIT=1 SKIP_VALIDATE=1 make
- name: "Upload k3s binary"
uses: actions/upload-artifact@v2
with:
name: k3s
path: dist/artifacts/k3s
test:
name: "Test"
needs: build
# nested virtualization is only available on macOS hosts
runs-on: macos-10.15
timeout-minutes: 40
steps:
- name: "Checkout"
uses: actions/checkout@v2
with:
fetch-depth: 1
- name: "Download k3s binary"
uses: actions/download-artifact@v2
with:
name: k3s
path: ./tests/cgroup2
- name: "Boot Fedora VM"
run: |
cp k3s.service ./tests/cgroup2
cd ./tests/cgroup2
vagrant up
vagrant ssh-config >> ~/.ssh/config
# Sonobuoy requires CoreDNS to be ready
- name: "Waiting fore CoreDNS to be ready"
run: |
counter=0
# `kubectl wait` fails when the pods with the specified label are not created yet
until ssh default -- sudo k3s kubectl wait --for=condition=ready pods --namespace=kube-system -l k8s-app=kube-dns; do
sleep 10
((counter++))
if [[ $counter -eq 10 ]]; then
echo "CoreDNS not running?"
ssh default -- sudo k3s kubectl get pods -A
ssh default -- sudo k3s kubectl get nodes -o wide
exit 1
fi
done
# Vagrant is slow, so we set --mode=quick here
- name: "Run Sonobuoy (--mode=quick)"
run: |
ssh default -- sudo KUBECONFIG=/etc/rancher/k3s/k3s.yaml /usr/local/bin/sonobuoy run --mode=quick --wait

3
tests/cgroup2/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
k3s
k3s.service
.vagrant/

34
tests/cgroup2/Vagrantfile vendored Normal file
View File

@ -0,0 +1,34 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrant box for testing k3s with cgroup v2.
# Invoked via k3s/.github/workflows/cgroup2.yaml .
#
# The following files need to be present in this directory:
# - k3s
# - k3s.service
Vagrant.configure("2") do |config|
config.vm.box = "fedora/33-cloud-base"
memory = 2048
cpus = 2
config.vm.provider :virtualbox do |v|
v.memory = memory
v.cpus = cpus
end
config.vm.provider :libvirt do |v|
v.memory = memory
v.cpus = cpus
end
config.vm.provision "install-k3s", type: "shell", run: "once" do |sh|
sh.inline = <<~SHELL
set -eux -o pipefail
install -m 755 /vagrant/k3s /usr/local/bin
cp -f /vagrant/k3s.service /etc/systemd/system/k3s.service
touch /etc/systemd/system/k3s.service.env
systemctl daemon-reload
systemctl enable --now k3s.service || { systemctl status --full --no-pager k3s.service ; exit 1; }
curl -fsSL https://github.com/vmware-tanzu/sonobuoy/releases/download/v0.20.0/sonobuoy_0.20.0_linux_amd64.tar.gz | tar xzvC /usr/local/bin sonobuoy
SHELL
end
end