kubenix/tests/helm/simple.nix

97 lines
3.2 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;
2020-04-04 19:17:59 +07:00
appsv1 = config.kubernetes.api.resources.apps.v1;
2019-02-28 15:10:06 +01:00
postgresql = pullImage {
imageName = "docker.io/bitnami/postgresql";
2020-04-04 19:17:59 +07:00
imageDigest = "sha256:ec16eb9ff2e7bf0669cfc52e595f17d9c52efd864c3f943f404d525dafaaaf96";
sha256 = "1idl8amp2jifc71lq8ymyns41d76cnasqbxyaild0gjzlpxmsn9n";
finalImageTag = "11.7.0-debian-10-r55";
2019-02-28 15:10:06 +01:00
};
postgresqlExporter = pullImage {
2020-04-04 19:17:59 +07:00
imageName = "docker.io/bitnami/postgres-exporter";
imageDigest = "sha256:08ab46104b83834760a5e0329af11de23ccf920b4beffd27c506f34421920313";
sha256 = "14yw8fp6ja7x1wn3lyw8ws5lc5z9jz54vdc5ad5s7yxjfs0jvk6d";
finalImageTag = "0.8.0-debian-10-r66";
2019-02-28 15:10:06 +01:00
};
minideb = pullImage {
imageName = "docker.io/bitnami/minideb";
2020-04-04 19:17:59 +07:00
imageDigest = "sha256:2f430acaa0ffd88454ac330a6843840f1e1204007bf92f8ce7b654fd3b558d68";
sha256 = "1h589digi99jvpdzn3azx4p8hlh7plci04him9vfmx2vfa5zxq4i";
finalImageTag = "buster";
2019-02-28 15:10:06 +01:00
};
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";
assertions = [{
message = "should have generated resources";
assertion =
2020-04-04 19:17:59 +07:00
appsv1.StatefulSet ? "app-psql-postgresql-master" &&
appsv1.StatefulSet ? "app-psql-postgresql-slave" &&
corev1.Secret ? "app-psql-postgresql" &&
corev1.Service ? "app-psql-postgresql-headless" ;
} {
message = "should have values passed";
2020-04-04 19:17:59 +07:00
assertion = appsv1.StatefulSet.app-psql-postgresql-slave.spec.replicas == 2;
} {
message = "should have namespace defined";
assertion =
2020-04-04 19:17:59 +07:00
appsv1.StatefulSet.app-psql-postgresql-master.metadata.namespace == "test";
}];
2019-02-28 15:10:06 +01:00
testScript = ''
2021-04-28 13:43:24 -05:00
kube.wait_until_succeeds("docker load < ${postgresql}")
kube.wait_until_succeeds("docker load < ${postgresqlExporter}")
kube.wait_until_succeeds("docker load < ${minideb}")
kube.wait_until_succeeds("kubectl apply -f ${config.kubernetes.result}")
kube.wait_until_succeeds("PGPASSWORD=postgres ${pkgs.postgresql}/bin/psql -h app-psql-postgresql.test.svc.cluster.local -U postgres -l")
2019-02-28 15:10:06 +01:00
'';
};
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 {
2020-04-04 19:17:59 +07:00
repo = "https://charts.bitnami.com/bitnami";
2020-01-14 19:13:33 +00:00
chart = "postgresql";
2020-04-04 19:17:59 +07:00
version = "8.6.13";
sha256 = "pYJuxr5Ec6Yjv/wFn7QAA6vCiVjNTz1mWoexdxwiEzE=";
};
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;
};
};
}