2019-10-21 13:47:21 +02:00
|
|
|
{ options, config, lib, kubenix, pkgs, k8sVersion, ... }:
|
|
|
|
|
|
|
|
|
|
with lib;
|
|
|
|
|
|
2020-01-14 14:53:42 +00:00
|
|
|
let
|
|
|
|
|
findObject = { kind, name }: filter (object:
|
|
|
|
|
object.kind == kind && object.metadata.name == name
|
|
|
|
|
) config.kubernetes.objects;
|
|
|
|
|
|
|
|
|
|
getObject = filter: head (findObject filter);
|
|
|
|
|
|
|
|
|
|
hasObject = { kind, name }: length (findObject { inherit kind name; }) == 1;
|
|
|
|
|
in {
|
2019-10-21 13:47:21 +02:00
|
|
|
imports = with kubenix.modules; [ test k8s legacy ];
|
|
|
|
|
|
|
|
|
|
test = {
|
|
|
|
|
name = "legacy-crd";
|
|
|
|
|
description = "Simple test tesing kubenix legacy integration with crds crd";
|
2020-01-14 14:53:42 +00:00
|
|
|
assertions = [{
|
|
|
|
|
message = "should define claim in module";
|
|
|
|
|
assertion =
|
|
|
|
|
hasObject {kind = "SecretClaim"; name = "secret-claim";};
|
|
|
|
|
} {
|
|
|
|
|
message = "should define claim in root";
|
|
|
|
|
assertion =
|
|
|
|
|
hasObject {kind = "SecretClaim"; name = "my-claim";};
|
|
|
|
|
}];
|
2019-10-21 13:47:21 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
kubernetes.version = k8sVersion;
|
|
|
|
|
kubernetes.namespace = "test";
|
|
|
|
|
|
|
|
|
|
kubernetes.moduleDefinitions.secret-claim.module = { config, k8s, module, ... }: {
|
|
|
|
|
options = {
|
|
|
|
|
name = mkOption {
|
|
|
|
|
description = "Name of the secret claim";
|
|
|
|
|
type = types.str;
|
|
|
|
|
default = module.name;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
type = mkOption {
|
|
|
|
|
description = "Type of the secret";
|
|
|
|
|
type = types.enum ["Opaque" "kubernetes.io/tls"];
|
|
|
|
|
default = "Opaque";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
path = mkOption {
|
|
|
|
|
description = "Secret path";
|
|
|
|
|
type = types.str;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
renew = mkOption {
|
|
|
|
|
description = "Renew time in seconds";
|
|
|
|
|
type = types.nullOr types.int;
|
|
|
|
|
default = null;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
data = mkOption {
|
|
|
|
|
type = types.nullOr types.attrs;
|
|
|
|
|
description = "Data to pass to get secrets";
|
|
|
|
|
default = null;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
config = {
|
|
|
|
|
kubernetes.resources.customResourceDefinitions.secret-claims = {
|
|
|
|
|
kind = "CustomResourceDefinition";
|
|
|
|
|
apiVersion = "apiextensions.k8s.io/v1beta1";
|
|
|
|
|
metadata.name = "secretclaims.vaultproject.io";
|
|
|
|
|
spec = {
|
|
|
|
|
group = "vaultproject.io";
|
|
|
|
|
version = "v1";
|
|
|
|
|
scope = "Namespaced";
|
|
|
|
|
names = {
|
|
|
|
|
plural = "secretclaims";
|
|
|
|
|
kind = "SecretClaim";
|
|
|
|
|
shortNames = ["scl"];
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
kubernetes.customResources.secret-claims.claim = {
|
|
|
|
|
metadata.name = config.name;
|
|
|
|
|
spec = {
|
|
|
|
|
inherit (config) type path;
|
|
|
|
|
} // (optionalAttrs (config.renew != null) {
|
|
|
|
|
inherit (config) renew;
|
|
|
|
|
}) // (optionalAttrs (config.data != null) {
|
|
|
|
|
inherit (config) data;
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
2020-01-14 14:53:42 +00:00
|
|
|
kubernetes.modules.secret-claim = {
|
2019-10-21 13:47:21 +02:00
|
|
|
configuration.path = "tokens/test";
|
|
|
|
|
};
|
|
|
|
|
|
2020-01-14 14:53:42 +00:00
|
|
|
kubernetes.customResources.secret-claims.my-claim = {
|
2019-10-21 13:47:21 +02:00
|
|
|
spec = {
|
|
|
|
|
path = "secrets/test2";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
}
|