Merge pull request #326575 from superherointj/k3s-refactor
k3s: use nixosTests.k3s as source reference for tests + minimal refactor
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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,3 +1,4 @@
|
||||
# Tests K3s with Etcd backend
|
||||
import ../make-test-python.nix (
|
||||
{
|
||||
pkgs,
|
||||
|
||||
@@ -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,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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user