feat(helm): implement simple e2e test

This commit is contained in:
Jaka Hudoklin 2019-02-28 15:10:06 +01:00
parent 142fca3546
commit 1b32ca7bbd
No known key found for this signature in database
GPG key ID: 6A08896BFD32BD95

View file

@ -1,10 +1,33 @@
{ config, test, kubenix, k8s, helm, ... }:
{ config, lib, test, pkgs, kubenix, k8s, helm, ... }:
with lib;
with k8s;
with pkgs.dockerTools;
let
corev1 = config.kubernetes.api.core.v1;
appsv1beta2 = config.kubernetes.api.apps.v1beta2;
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 {
imports = [
kubenix.helm
@ -27,14 +50,21 @@ in {
} {
message = "should have namespace defined";
assertion =
appsv1beta2.StatefulSet.app-psql-postgresql-master.metadata.namespace == "test-namespace";
appsv1beta2.StatefulSet.app-psql-postgresql-master.metadata.namespace == "test";
}];
testScript = ''
$kube->waitUntilSucceeds("docker load < ${postgresql}");
$kube->waitUntilSucceeds("docker load < ${postgresqlExporter}");
$kube->waitUntilSucceeds("docker load < ${minideb}");
$kube->waitUntilSucceeds("kubectl apply -f ${toYAML config.kubernetes.generated}");
$kube->waitUntilSucceeds("PGPASSWORD=postgres ${pkgs.postgresql}/bin/psql -h app-psql-postgresql.test.svc.cluster.local -U postgres -l");
'';
};
kubernetes.api.namespaces.test-namespace = {};
kubernetes.api.namespaces.test = {};
kubernetes.helm.instances.app-psql = {
namespace = "test-namespace";
namespace = "test";
chart = helm.fetch {
chart = "stable/postgresql";
version = "3.0.0";
@ -42,8 +72,25 @@ in {
};
values = {
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;
postgresqlPassword = "postgres";
persistence.enabled = false;
};
};
}