diff --git a/tests/helm/simple.nix b/tests/helm/simple.nix index 2765e77..7070b0e 100644 --- a/tests/helm/simple.nix +++ b/tests/helm/simple.nix @@ -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; }; }; }