mirror of
https://github.com/TECHNOFAB11/kubenix.git
synced 2025-12-12 08:00:06 +01:00
add nixos-k8s runtime & rmove k3s runtime
This commit is contained in:
parent
70d249aaff
commit
8a20c93b21
5 changed files with 28 additions and 56 deletions
|
|
@ -6,7 +6,6 @@ with lib;
|
||||||
imports = [ kubenix.modules.test ./module.nix ];
|
imports = [ kubenix.modules.test ./module.nix ];
|
||||||
|
|
||||||
test = {
|
test = {
|
||||||
distro = "k3s";
|
|
||||||
name = "nginx-deployment";
|
name = "nginx-deployment";
|
||||||
description = "Test testing nginx deployment";
|
description = "Test testing nginx deployment";
|
||||||
testScript = ''
|
testScript = ''
|
||||||
|
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
{ stdenv, fetchurl, k3s }:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "k3s-airgap-images";
|
|
||||||
version = k3s.version;
|
|
||||||
|
|
||||||
src =
|
|
||||||
let
|
|
||||||
throwError = throw "Unsupported system ${stdenv.hostPlatform.system}";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
x86_64-linux = fetchurl {
|
|
||||||
url = "https://github.com/rancher/k3s/releases/download/v${version}/k3s-airgap-images-amd64.tar";
|
|
||||||
sha256 = "sha256-6kQmlpNV+4cU1Kn5lyZhutXYK5qYdey0jubzYRRF3vA=";
|
|
||||||
};
|
|
||||||
aarch64-linux = fetchurl {
|
|
||||||
url = "https://github.com/rancher/k3s/releases/download/v${version}/k3s-airgap-images-arm64.tar";
|
|
||||||
sha256 = "sha256-OlqqdAmBN+azT0kfjZ/Bd0CFbbW5hTg9/8T9U05N0zE=";
|
|
||||||
};
|
|
||||||
armv7l-linux = fetchurl {
|
|
||||||
url = "https://github.com/rancher/k3s/releases/download/v${version}/k3s-airgap-images-arm.tar";
|
|
||||||
sha256 = "sha256-j/ARBtHDnfRk/7BpOvavoHe7L5dmsCZe5+wuZ5t4V/k=";
|
|
||||||
};
|
|
||||||
}.${stdenv.hostPlatform.system} or throwError;
|
|
||||||
|
|
||||||
preferLocalBuild = true;
|
|
||||||
dontUnpack = true;
|
|
||||||
installPhase = "cp $src $out";
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
|
||||||
description = "Lightweight Kubernetes. 5 less than k8s. Airgap images.";
|
|
||||||
homepage = https://k3s.io/;
|
|
||||||
license = licenses.asl20;
|
|
||||||
maintainers = [ maintainers.offline ];
|
|
||||||
platforms = [ "x86_64-linux" "aarch64-linux" "armv7l-linux" ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -23,6 +23,7 @@ in
|
||||||
./docker.nix
|
./docker.nix
|
||||||
./driver/kubetest.nix
|
./driver/kubetest.nix
|
||||||
./runtime/local.nix
|
./runtime/local.nix
|
||||||
|
./runtime/nixos-k8s.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
options.testing = {
|
options.testing = {
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ with import ../../lib/docker.nix { inherit lib pkgs; };
|
||||||
let
|
let
|
||||||
testing = config.testing;
|
testing = config.testing;
|
||||||
|
|
||||||
allImages = flatten (map (t: t.evaled.config.docker.export or [ ]) testing.tests);
|
allImages = unique ( flatten (map (t: t.evaled.config.docker.export or [ ]) testing.tests));
|
||||||
|
|
||||||
cfg = config.testing.docker;
|
cfg = config.testing.docker;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,28 +4,34 @@
|
||||||
, config
|
, config
|
||||||
, pkgs
|
, pkgs
|
||||||
, lib
|
, lib
|
||||||
, system ? "x86_64-linux"
|
|
||||||
, ...
|
, ...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
testing = config.testing;
|
testing = config.testing;
|
||||||
kubeconfig = "/etc/${config.services.kubernetes.pki.etcClusterAdminKubeconfig}";
|
# kubeconfig = "/etc/${config.services.kubernetes.pki.etcClusterAdminKubeconfig}";
|
||||||
|
kubeconfig = "/etc/kubernetes/cluster-admin.kubeconfig";
|
||||||
|
kubecerts = "/var/lib/kubernetes/secrets";
|
||||||
|
|
||||||
# how we differ from the standard configuration of mkKubernetesBaseTest
|
# how we differ from the standard configuration of mkKubernetesBaseTest
|
||||||
extraConfiguration = { config, pkgs, lib, nodes, ... }: {
|
extraConfiguration = { config, pkgs, lib, nodes, ... }: {
|
||||||
virtualisation.memorySize = mkDefault 2048;
|
|
||||||
|
virtualisation = {
|
||||||
|
memorySize = 2048;
|
||||||
|
};
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
nameservers = [ "10.0.0.254" ];
|
nameservers = [ "10.0.0.254" ];
|
||||||
firewall = {
|
firewall = {
|
||||||
trustedInterfaces = [ "docker0" "cni0" ];
|
trustedInterfaces = [ "docker0" "cni0" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.kubernetes = {
|
services.kubernetes = {
|
||||||
seedDockerImages = mkIf (elem "docker" config._m.features) config.docker.export;
|
|
||||||
flannel.enable = false;
|
flannel.enable = false;
|
||||||
kubelet = {
|
kubelet = {
|
||||||
|
seedDockerImages = testing.docker.images;
|
||||||
networkPlugin = "cni";
|
networkPlugin = "cni";
|
||||||
cni.config = [{
|
cni.config = [{
|
||||||
name = "mynet";
|
name = "mynet";
|
||||||
|
|
@ -44,10 +50,14 @@ let
|
||||||
};
|
};
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
systemd.extraConfig = "DefaultLimitNOFILE=1048576";
|
};
|
||||||
systemd.services.copy-certs = {
|
|
||||||
|
systemd = {
|
||||||
|
extraConfig = "DefaultLimitNOFILE=1048576";
|
||||||
|
# Host tools should have a chance to access guest's kube api
|
||||||
|
services.copy-certs = {
|
||||||
description = "Share k8s certificates with host";
|
description = "Share k8s certificates with host";
|
||||||
script = "cp -rf /var/lib/kubernetes/secrets /tmp/xchg/";
|
script = "cp -rf ${kubecerts} /tmp/xchg/; cp -f ${kubeconfig} /tmp/xchg/;";
|
||||||
after = [ "kubernetes.target" ];
|
after = [ "kubernetes.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
|
@ -56,6 +66,7 @@ let
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
script = ''
|
script = ''
|
||||||
|
|
@ -63,25 +74,23 @@ let
|
||||||
'';
|
'';
|
||||||
|
|
||||||
test =
|
test =
|
||||||
with import "${nixosPath}/tests/kubernetes/base.nix" { inherit pkgs system; };
|
with import "${nixosPath}/tests/kubernetes/base.nix" { inherit pkgs; inherit (pkgs) system; };
|
||||||
mkKubernetesSingleNodeTest {
|
mkKubernetesSingleNodeTest {
|
||||||
inherit extraConfiguration;
|
inherit extraConfiguration;
|
||||||
inherit (config) name;
|
inherit (config.testing) name;
|
||||||
test = script;
|
test = script;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options.testing.runtime.nixos-k8s = {
|
||||||
runtime.nixos-k8s = {
|
|
||||||
driver = mkOption {
|
driver = mkOption {
|
||||||
description = "Test driver";
|
description = "Test driver";
|
||||||
type = types.package;
|
type = types.package;
|
||||||
internal = true;
|
internal = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
runtime.nixos-k8s.driver = test.driver;
|
config.testing.runtime.nixos-k8s.driver = test.driver;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue