From 279716c330701cc85ebc63747ed7cbf6d313288c Mon Sep 17 00:00:00 2001 From: Jonas Juselius Date: Sat, 9 Mar 2019 11:57:41 +0100 Subject: [PATCH] nixos/kubernetes: add dns addonmanger reconcile mode option (#55834) Allow coredns ConfigMap and Depolyment to be editable by the user. An use case is augmenting the default, generated dns records with local services. --- .../services/cluster/kubernetes/addons/dns.nix | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/nixos/modules/services/cluster/kubernetes/addons/dns.nix b/nixos/modules/services/cluster/kubernetes/addons/dns.nix index 8f3234bfc706..4368159ea6e3 100644 --- a/nixos/modules/services/cluster/kubernetes/addons/dns.nix +++ b/nixos/modules/services/cluster/kubernetes/addons/dns.nix @@ -38,6 +38,18 @@ in { type = types.int; }; + reconcileMode = mkOption { + description = '' + Controls the addon manager reconciliation mode for the DNS addon. + + Setting reconcile mode to EnsureExists makes it possible to tailor DNS behavior by editing the coredns ConfigMap. + + See: . + ''; + default = "Reconcile"; + type = types.enum [ "Reconcile" "EnsureExists" ]; + }; + coredns = mkOption { description = "Docker image to seed for the CoreDNS container."; type = types.attrs; @@ -131,7 +143,7 @@ in { kind = "ConfigMap"; metadata = { labels = { - "addonmanager.kubernetes.io/mode" = "Reconcile"; + "addonmanager.kubernetes.io/mode" = cfg.reconcileMode; "k8s-app" = "kube-dns"; "kubernetes.io/cluster-service" = "true"; }; @@ -162,7 +174,7 @@ in { kind = "Deployment"; metadata = { labels = { - "addonmanager.kubernetes.io/mode" = "Reconcile"; + "addonmanager.kubernetes.io/mode" = cfg.reconcileMode; "k8s-app" = "kube-dns"; "kubernetes.io/cluster-service" = "true"; "kubernetes.io/name" = "CoreDNS";