Merge pull request #326575 from superherointj/k3s-refactor

k3s: use nixosTests.k3s as source reference for tests + minimal refactor
This commit is contained in:
Jörg Thalheim
2024-07-13 09:27:41 +02:00
committed by GitHub
6 changed files with 30 additions and 23 deletions
+3 -2
View File
@@ -1,3 +1,4 @@
# Tests whether container images are imported and auto deploying manifests work
import ../make-test-python.nix (
{
pkgs,
@@ -108,8 +109,8 @@ import ../make-test-python.nix (
machine.succeed("ls /var/lib/rancher/k3s/server/manifests/hello.yaml")
# check if container images got imported
machine.succeed("crictl img | grep 'test\.local/pause'")
machine.succeed("crictl img | grep 'test\.local/hello'")
machine.wait_until_succeeds("crictl img | grep 'test\.local/pause'")
machine.wait_until_succeeds("crictl img | grep 'test\.local/hello'")
# check if resources of manifests got created
machine.wait_until_succeeds("kubectl get ns foo")
-4
View File
@@ -7,9 +7,7 @@ let
allK3s = lib.filterAttrs (n: _: lib.strings.hasPrefix "k3s_" n) pkgs;
in
{
# Test whether container images are imported and auto deploying manifests work
auto-deploy = lib.mapAttrs (_: k3s: import ./auto-deploy.nix { inherit system pkgs k3s; }) allK3s;
# Testing K3s with Etcd backend
etcd = lib.mapAttrs (
_: k3s:
import ./etcd.nix {
@@ -17,8 +15,6 @@ in
inherit (pkgs) etcd;
}
) allK3s;
# Run a single node k3s cluster and verify a pod can run
single-node = lib.mapAttrs (_: k3s: import ./single-node.nix { inherit system pkgs k3s; }) allK3s;
# Run a multi-node k3s cluster and verify pod networking works across nodes
multi-node = lib.mapAttrs (_: k3s: import ./multi-node.nix { inherit system pkgs k3s; }) allK3s;
}
+1
View File
@@ -1,3 +1,4 @@
# Tests K3s with Etcd backend
import ../make-test-python.nix (
{
pkgs,
+1
View File
@@ -1,3 +1,4 @@
# A test that runs a multi-node k3s cluster and verify pod networking works across nodes
import ../make-test-python.nix (
{
pkgs,
+1
View File
@@ -1,3 +1,4 @@
# A test that runs a single node k3s cluster and verify a pod can run
import ../make-test-python.nix (
{
pkgs,
@@ -88,12 +88,12 @@ lib:
# make sure they're in the path if desired.
let
baseMeta = with lib; {
baseMeta = {
description = "Lightweight Kubernetes distribution";
license = licenses.asl20;
license = lib.licenses.asl20;
homepage = "https://k3s.io";
maintainers = lib.teams.k3s.members;
platforms = platforms.linux;
platforms = lib.platforms.linux;
# resolves collisions with other installations of kubectl, crictl, ctr
# prefer non-k3s versions
@@ -367,6 +367,7 @@ buildGoModule rec {
# https://github.com/NixOS/nixpkgs/pull/158089#discussion_r799965694
# So, why do we use buildGoModule at all? For the `vendorHash` / `go mod download` stuff primarily.
buildPhase = ''
runHook preBuild
patchShebangs ./scripts/package-cli ./scripts/download ./scripts/build-upload
# copy needed 'go generate' inputs into place
@@ -387,12 +388,14 @@ buildGoModule rec {
./scripts/package-cli
mkdir -p $out/bin
runHook postBuild
'';
# Otherwise it depends on 'getGoDirs', which is normally set in buildPhase
doCheck = false;
installPhase = ''
runHook preInstall
# wildcard to match the arm64 build too
install -m 0755 dist/artifacts/k3s* -D $out/bin/k3s
wrapProgram $out/bin/k3s \
@@ -404,27 +407,31 @@ buildGoModule rec {
install -m 0755 ${k3sKillallSh} -D $out/bin/k3s-killall.sh
wrapProgram $out/bin/k3s-killall.sh \
--prefix PATH : ${lib.makeBinPath (k3sRuntimeDeps ++ k3sKillallDeps)}
runHook postInstall
'';
doInstallCheck = true;
installCheckPhase = ''
runHook preInstallCheck
$out/bin/k3s --version | grep -F "v${k3sVersion}" >/dev/null
runHook postInstallCheck
'';
passthru.updateScript = updateScript;
passthru.mkTests =
version:
let
k3s_version = "k3s_" + lib.replaceStrings [ "." ] [ "_" ] (lib.versions.majorMinor version);
in
{
auto-deploy = nixosTests.k3s.auto-deploy.${k3s_version};
etcd = nixosTests.k3s.etcd.${k3s_version};
single-node = nixosTests.k3s.single-node.${k3s_version};
multi-node = nixosTests.k3s.multi-node.${k3s_version};
};
passthru.tests = passthru.mkTests k3sVersion;
passthru = {
k3sCNIPlugins = k3sCNIPlugins;
k3sContainerd = k3sContainerd;
k3sRepo = k3sRepo;
k3sRoot = k3sRoot;
k3sServer = k3sServer;
mkTests =
version:
let
k3s_version = "k3s_" + lib.replaceStrings [ "." ] [ "_" ] (lib.versions.majorMinor version);
in
lib.mapAttrs (name: value: nixosTests.k3s.${name}.${k3s_version}) nixosTests.k3s;
tests = passthru.mkTests k3sVersion;
updateScript = updateScript;
};
meta = baseMeta;
}