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 k8s;
with pkgs.dockerTools;
let let
corev1 = config.kubernetes.api.core.v1; corev1 = config.kubernetes.api.core.v1;
appsv1beta2 = config.kubernetes.api.apps.v1beta2; 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 { in {
imports = [ imports = [
kubenix.helm kubenix.helm
@ -27,14 +50,21 @@ in {
} { } {
message = "should have namespace defined"; message = "should have namespace defined";
assertion = 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 = { kubernetes.helm.instances.app-psql = {
namespace = "test-namespace"; namespace = "test";
chart = helm.fetch { chart = helm.fetch {
chart = "stable/postgresql"; chart = "stable/postgresql";
version = "3.0.0"; version = "3.0.0";
@ -42,8 +72,25 @@ in {
}; };
values = { 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.enabled = true;
replication.slaveReplicas = 2; replication.slaveReplicas = 2;
postgresqlPassword = "postgres";
persistence.enabled = false;
}; };
}; };
} }