diff options
author | Matej Cotman <cotman.matej@gmail.com> | 2017-05-03 01:20:32 +0200 |
---|---|---|
committer | Robin Gloster <mail@glob.in> | 2017-09-24 11:44:25 +0200 |
commit | 7f9d1a7aafc76f506f25c9608a68980161d43d66 (patch) | |
tree | 5b65ce0426a7959e607c9a547cca02d73621c880 /nixos/tests/kubernetes/dns.nix | |
parent | ed322f42357e1822560fd1fd80f56a9fbf89a672 (diff) | |
download | nixpkgs-7f9d1a7aafc76f506f25c9608a68980161d43d66.tar nixpkgs-7f9d1a7aafc76f506f25c9608a68980161d43d66.tar.gz nixpkgs-7f9d1a7aafc76f506f25c9608a68980161d43d66.tar.bz2 nixpkgs-7f9d1a7aafc76f506f25c9608a68980161d43d66.tar.lz nixpkgs-7f9d1a7aafc76f506f25c9608a68980161d43d66.tar.xz nixpkgs-7f9d1a7aafc76f506f25c9608a68980161d43d66.tar.zst nixpkgs-7f9d1a7aafc76f506f25c9608a68980161d43d66.zip |
kubernetes: add tests
Diffstat (limited to 'nixos/tests/kubernetes/dns.nix')
-rw-r--r-- | nixos/tests/kubernetes/dns.nix | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/nixos/tests/kubernetes/dns.nix b/nixos/tests/kubernetes/dns.nix new file mode 100644 index 00000000000..4659c520dee --- /dev/null +++ b/nixos/tests/kubernetes/dns.nix @@ -0,0 +1,103 @@ +{ system ? builtins.currentSystem }: + +with import ../../lib/testing.nix { inherit system; }; +with import ../../lib/qemu-flags.nix; +with pkgs.lib; + +let + servers.master = "192.168.1.1"; + servers.one = "192.168.1.10"; + + certs = import ./certs.nix { inherit servers; }; + + 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 pkgs.bind.dnsutils pkgs.coreutils pkgs.inetutils pkgs.nmap ]; + config.Entrypoint = "/bin/redis-server"; + }; + + test = '' + $master->waitUntilSucceeds("kubectl get node master.nixos.xyz | grep Ready"); + $master->waitUntilSucceeds("kubectl get node one.nixos.xyz | grep Ready"); + + $one->execute("docker load < ${redisImage}"); + + $master->waitUntilSucceeds("kubectl create -f ${redisPod} || kubectl apply -f ${redisPod}"); + $master->waitUntilSucceeds("kubectl create -f ${redisService} || kubectl apply -f ${redisService}"); + + $master->waitUntilSucceeds("kubectl get pod redis | grep Running"); + + $master->succeed("dig \@192.168.1.1 redis.default.svc.cluster.local"); + $one->succeed("dig \@192.168.1.10 redis.default.svc.cluster.local"); + + + $master->succeed("kubectl exec -ti redis -- cat /etc/resolv.conf | grep 'nameserver 192.168.1.10'"); + + $master->succeed("kubectl exec -ti redis -- dig \@192.168.1.10 redis.default.svc.cluster.local"); + ''; + +in makeTest { + name = "kubernetes-dns"; + + nodes = { + master = + { config, pkgs, lib, nodes, ... }: + mkMerge [ + { + virtualisation.memorySize = 768; + virtualisation.diskSize = 4096; + networking.interfaces.eth1.ip4 = mkForce [{address = servers.master; prefixLength = 24;}]; + networking.primaryIPAddress = mkForce servers.master; + } + (import ./kubernetes-common.nix { inherit pkgs config certs servers; }) + (import ./kubernetes-master.nix { inherit pkgs config certs; }) + ]; + + one = + { config, pkgs, lib, nodes, ... }: + mkMerge [ + { + virtualisation.memorySize = 768; + virtualisation.diskSize = 4096; + networking.interfaces.eth1.ip4 = mkForce [{address = servers.one; prefixLength = 24;}]; + networking.primaryIPAddress = mkForce servers.one; + services.kubernetes.roles = ["node"]; + } + (import ./kubernetes-common.nix { inherit pkgs config certs servers; }) + ]; + }; + + testScript = '' + startAll; + + ${test} + ''; +} |