kubenix/tests/helm/simple.nix

98 lines
3.3 KiB
Nix
Raw Normal View History

{ config, lib, pkgs, kubenix, helm, k8sVersion, ... }:
2019-02-28 15:10:06 +01:00
with lib;
2019-03-07 18:02:26 +01:00
with kubenix.lib;
2019-02-28 15:10:06 +01:00
with pkgs.dockerTools;
let
2019-10-10 13:28:48 +02:00
corev1 = config.kubernetes.api.resources.core.v1;
appsv1beta2 = config.kubernetes.api.resources.apps.v1beta2;
2019-02-28 15:10:06 +01:00
postgresql = pullImage {
imageName = "docker.io/bitnami/postgresql";
imageDigest = "sha256:16485a9b19696958ab7259e0d2c3efa0ef7f300b6fd1beb13a6643e120970a05";
sha256 = "0hqdkpk7s3wcy5qsy6dzgzqc0rbpavpghly350p97j1janxbyhc7";
finalImageTag = "10.7.0";
};
postgresqlExporter = pullImage {
imageName = "docker.io/wrouesnel/postgres_exporter";
imageDigest = "sha256:dd8051322ceb8995d3d7f116041a2116815e01e88232a90f635ebde8dcc4d3f4";
sha256 = "09mva5jx1g4v47s4lr1pkpfzzmxc7z9dnajfizffm3rxwl0qzjji";
finalImageTag = "v0.4.7";
};
minideb = pullImage {
imageName = "docker.io/bitnami/minideb";
imageDigest = "sha256:363011b4ad5308e7f2aee505b80730cbaadf9d41ff87879403f567dd98cfb5cf";
sha256 = "1vfyfdhmgidi7hc8kjflpq91vkzdqi9sj78g51ci8nyarclr808q";
finalImageTag = "latest";
};
in {
2019-03-08 00:39:09 +01:00
imports = [ kubenix.modules.test kubenix.modules.helm kubenix.modules.k8s ];
test = {
name = "helm-simple";
description = "Simple k8s testing wheter name, apiVersion and kind are preset";
2019-03-08 00:39:09 +01:00
enable = builtins.compareVersions config.kubernetes.version "1.8" >= 0;
assertions = [{
message = "should have generated resources";
assertion =
2019-02-28 14:06:32 +01:00
appsv1beta2.StatefulSet ? "app-psql-postgresql-master" &&
appsv1beta2.StatefulSet ? "app-psql-postgresql-slave" &&
corev1.ConfigMap ? "app-psql-postgresql-init-scripts" &&
corev1.Secret ? "app-psql-postgresql" &&
corev1.Service ? "app-psql-postgresql-headless" ;
} {
message = "should have values passed";
assertion = appsv1beta2.StatefulSet.app-psql-postgresql-slave.spec.replicas == 2;
} {
message = "should have namespace defined";
assertion =
2019-02-28 15:10:06 +01:00
appsv1beta2.StatefulSet.app-psql-postgresql-master.metadata.namespace == "test";
}];
2019-02-28 15:10:06 +01:00
testScript = ''
$kube->waitUntilSucceeds("docker load < ${postgresql}");
$kube->waitUntilSucceeds("docker load < ${postgresqlExporter}");
$kube->waitUntilSucceeds("docker load < ${minideb}");
2019-05-05 16:15:21 +02:00
$kube->waitUntilSucceeds("kubectl apply -f ${toYAML config.kubernetes.generated}");
2019-02-28 15:10:06 +01:00
$kube->waitUntilSucceeds("PGPASSWORD=postgres ${pkgs.postgresql}/bin/psql -h app-psql-postgresql.test.svc.cluster.local -U postgres -l");
'';
};
kubernetes.version = k8sVersion;
2019-10-10 13:28:48 +02:00
kubernetes.resources.namespaces.test = {};
kubernetes.helm.instances.app-psql = {
2019-02-28 15:10:06 +01:00
namespace = "test";
chart = helm.fetch {
chart = "stable/postgresql";
version = "3.0.0";
2019-10-10 13:28:48 +02:00
sha256 = "06dkn4fgvgqr27hcnbbax1ylvr4sld3rcmy1w5kanljsajbph57m";
};
values = {
2019-02-28 15:10:06 +01:00
image = {
repository = "bitnami/postgresql";
tag = "10.7.0";
pullPolicy = "IfNotPresent";
};
volumePermissions.image = {
repository = "bitnami/minideb";
tag = "latest";
pullPolicy = "IfNotPresent";
};
metrics.image = {
repository = "wrouesnel/postgres_exporter";
tag = "v0.4.7";
pullPolicy = "IfNotPresent";
};
replication.enabled = true;
replication.slaveReplicas = 2;
2019-02-28 15:10:06 +01:00
postgresqlPassword = "postgres";
persistence.enabled = false;
};
};
}