82 lines
2.3 KiB
Nix
82 lines
2.3 KiB
Nix
{ system ? builtins.currentSystem }:
|
|
|
|
with import ../../lib/testing.nix { inherit system; };
|
|
with import ../../lib/qemu-flags.nix;
|
|
with pkgs.lib;
|
|
|
|
let
|
|
redisPod = pkgs.writeText "redis-master-pod.json" (builtins.toJSON {
|
|
kind = "Pod";
|
|
apiVersion = "v1";
|
|
metadata.name = "redis";
|
|
metadata.labels.name = "redis";
|
|
spec.containers = [{
|
|
name = "redis";
|
|
image = "redis";
|
|
args = ["--bind" "0.0.0.0"];
|
|
imagePullPolicy = "Never";
|
|
ports = [{
|
|
name = "redis-server";
|
|
containerPort = 6379;
|
|
}];
|
|
}];
|
|
});
|
|
|
|
redisService = pkgs.writeText "redis-service.json" (builtins.toJSON {
|
|
kind = "Service";
|
|
apiVersion = "v1";
|
|
metadata.name = "redis";
|
|
spec = {
|
|
ports = [{port = 6379; targetPort = 6379;}];
|
|
selector = {name = "redis";};
|
|
};
|
|
});
|
|
|
|
redisImage = pkgs.dockerTools.buildImage {
|
|
name = "redis";
|
|
tag = "latest";
|
|
contents = pkgs.redis;
|
|
config.Entrypoint = "/bin/redis-server";
|
|
};
|
|
|
|
testSimplePod = ''
|
|
$kubernetes->execute("docker load < ${redisImage}");
|
|
$kubernetes->waitUntilSucceeds("kubectl create -f ${redisPod}");
|
|
$kubernetes->succeed("kubectl create -f ${redisService}");
|
|
$kubernetes->waitUntilSucceeds("kubectl get pod redis | grep Running");
|
|
$kubernetes->succeed("nc -z \$\(dig redis.default.svc.cluster.local +short\) 6379");
|
|
'';
|
|
in {
|
|
# This test runs kubernetes on a single node
|
|
singlenode = makeTest {
|
|
name = "kubernetes-singlenode";
|
|
|
|
nodes = {
|
|
kubernetes =
|
|
{ config, pkgs, lib, nodes, ... }:
|
|
{
|
|
virtualisation.memorySize = 768;
|
|
virtualisation.diskSize = 2048;
|
|
|
|
programs.bash.enableCompletion = true;
|
|
environment.systemPackages = with pkgs; [ netcat bind ];
|
|
|
|
services.kubernetes.roles = ["master" "node"];
|
|
services.kubernetes.dns.port = 4453;
|
|
virtualisation.docker.extraOptions = "--iptables=false --ip-masq=false -b cbr0";
|
|
|
|
networking.bridges.cbr0.interfaces = [];
|
|
networking.interfaces.cbr0 = {};
|
|
|
|
services.dnsmasq.enable = true;
|
|
services.dnsmasq.servers = ["/${config.services.kubernetes.dns.domain}/127.0.0.1#4453"];
|
|
};
|
|
};
|
|
|
|
testScript = ''
|
|
startAll;
|
|
|
|
${testSimplePod}
|
|
'';
|
|
};
|
|
}
|