mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-09-24 18:27:10 +00:00
Merge pull request #8006 from fidencio/topic/ci-test-with-crio-part-0
ci: k8s: Also run tests with CRI-O
This commit is contained in:
86
.github/workflows/run-k8s-tests-with-crio-on-garm.yaml
vendored
Normal file
86
.github/workflows/run-k8s-tests-with-crio-on-garm.yaml
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
name: CI | Run kubernetes tests, using CRI-O, on GARM
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
registry:
|
||||
required: true
|
||||
type: string
|
||||
repo:
|
||||
required: true
|
||||
type: string
|
||||
tag:
|
||||
required: true
|
||||
type: string
|
||||
pr-number:
|
||||
required: true
|
||||
type: string
|
||||
commit-hash:
|
||||
required: false
|
||||
type: string
|
||||
target-branch:
|
||||
required: false
|
||||
type: string
|
||||
default: ""
|
||||
|
||||
jobs:
|
||||
run-k8s-tests:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
vmm:
|
||||
- qemu
|
||||
k8s:
|
||||
- k0s
|
||||
instance:
|
||||
- garm-ubuntu-2004
|
||||
- garm-ubuntu-2004-smaller
|
||||
include:
|
||||
- instance: garm-ubuntu-2004
|
||||
instance-type: normal
|
||||
- instance: garm-ubuntu-2004-smaller
|
||||
instance-type: small
|
||||
- k8s: k0s
|
||||
k8s-extra-params: '--cri-socket remote:unix:///var/run/crio/crio.sock --kubelet-extra-args --cgroup-driver="systemd"'
|
||||
runs-on: ${{ matrix.instance }}
|
||||
env:
|
||||
DOCKER_REGISTRY: ${{ inputs.registry }}
|
||||
DOCKER_REPO: ${{ inputs.repo }}
|
||||
DOCKER_TAG: ${{ inputs.tag }}
|
||||
PR_NUMBER: ${{ inputs.pr-number }}
|
||||
KATA_HYPERVISOR: ${{ matrix.vmm }}
|
||||
KUBERNETES: ${{ matrix.k8s }}
|
||||
KUBERNETES_EXTRA_PARAMS: ${{ matrix.k8s-extra-params }}
|
||||
USING_NFD: "false"
|
||||
K8S_TEST_HOST_TYPE: ${{ matrix.instance-type }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ inputs.commit-hash }}
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Rebase atop of the latest target branch
|
||||
run: |
|
||||
./tests/git-helper.sh "rebase-atop-of-the-latest-target-branch"
|
||||
env:
|
||||
TARGET_BRANCH: ${{ inputs.target-branch }}
|
||||
|
||||
- name: Configure CRI-O
|
||||
run: bash tests/integration/kubernetes/gha-run.sh setup-crio
|
||||
|
||||
- name: Deploy ${{ matrix.k8s }}
|
||||
run: bash tests/integration/kubernetes/gha-run.sh deploy-k8s
|
||||
|
||||
- name: Deploy Kata
|
||||
timeout-minutes: 10
|
||||
run: bash tests/integration/kubernetes/gha-run.sh deploy-kata-garm
|
||||
|
||||
- name: Install `bats`
|
||||
run: bash tests/integration/kubernetes/gha-run.sh install-bats
|
||||
|
||||
- name: Run tests
|
||||
timeout-minutes: 30
|
||||
run: bash tests/integration/kubernetes/gha-run.sh run-tests
|
||||
|
||||
- name: Delete kata-deploy
|
||||
if: always()
|
||||
run: bash tests/integration/kubernetes/gha-run.sh cleanup-garm
|
@@ -115,7 +115,7 @@ function get_nodes_and_pods_info() {
|
||||
function deploy_k0s() {
|
||||
curl -sSLf https://get.k0s.sh | sudo sh
|
||||
|
||||
sudo k0s install controller --single
|
||||
sudo k0s install controller --single ${KUBERNETES_EXTRA_PARAMS:-}
|
||||
|
||||
sudo k0s start
|
||||
|
||||
@@ -168,7 +168,7 @@ function deploy_k3s() {
|
||||
function deploy_rke2() {
|
||||
curl -sfL https://get.rke2.io | sudo sh -
|
||||
|
||||
systemctl enable --now rke2-server.service
|
||||
sudo systemctl enable --now rke2-server.service
|
||||
|
||||
# This is an arbitrary value that came up from local tests
|
||||
sleep 120s
|
||||
@@ -181,6 +181,53 @@ function deploy_rke2() {
|
||||
sudo chown ${USER}:${USER} ~/.kube/config
|
||||
}
|
||||
|
||||
function _get_k0s_kubernetes_version_for_crio() {
|
||||
# k0s version will look like:
|
||||
# v1.27.5+k0s.0
|
||||
#
|
||||
# The CRI-O repo for such version of Kubernetes expects something like:
|
||||
# 1.27
|
||||
k0s_version=$(curl -sSLf "https://docs.k0sproject.io/stable.txt")
|
||||
|
||||
# Remove everything after the second '.'
|
||||
crio_version=${k0s_version%\.*+*}
|
||||
# Remove the 'v'
|
||||
crio_version=${crio_version#v}
|
||||
|
||||
echo ${crio_version}
|
||||
}
|
||||
|
||||
function _get_os_for_crio() {
|
||||
source /etc/os-release
|
||||
|
||||
if [ "${NAME}" != "Ubuntu" ]; then
|
||||
echo "Only Ubuntu is supported for now"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
echo "x${NAME}_${VERSION_ID}"
|
||||
}
|
||||
|
||||
function setup_crio() {
|
||||
# Get the CRI-O version to be installed depending on the version of the
|
||||
# "k8s distro" that we are using
|
||||
case ${KUBERNETES} in
|
||||
k0s) crio_version=$(_get_k0s_kubernetes_version_for_crio) ;;
|
||||
*) >&2 echo "${KUBERNETES} flavour is not supported with CRI-O"; exit 2 ;;
|
||||
|
||||
esac
|
||||
|
||||
os=$(_get_os_for_crio)
|
||||
|
||||
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/${os}/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
|
||||
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/${crio_version}/${os}/ /"|sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:${crio_version}.list
|
||||
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:${crio_version}/${os}/Release.key | sudo apt-key add -
|
||||
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/${os}/Release.key | sudo apt-key add -
|
||||
sudo apt update
|
||||
sudo apt install cri-o cri-o-runc
|
||||
sudo systemctl enable --now crio
|
||||
}
|
||||
|
||||
function deploy_k8s() {
|
||||
echo "::group::Deploying ${KUBERNETES}"
|
||||
|
||||
|
@@ -215,6 +215,7 @@ function main() {
|
||||
login-azure) login_azure ;;
|
||||
create-cluster) create_cluster ;;
|
||||
configure-snapshotter) configure_snapshotter ;;
|
||||
setup-crio) setup_crio ;;
|
||||
deploy-k8s) deploy_k8s ;;
|
||||
install-bats) install_bats ;;
|
||||
install-kubectl) install_kubectl ;;
|
||||
|
Reference in New Issue
Block a user