From 6ec88afabb201adbd3e02490b3cac283a6e43842 Mon Sep 17 00:00:00 2001 From: Krisztian Lengyel Date: Fri, 10 May 2019 16:19:16 -0400 Subject: [PATCH] Make CaaS DNS domains configurable Change-Id: I2ebf2a34fb6878daf2fa7956580c72b59d9585d0 Signed-off-by: Krisztian Lengyel --- cmdatahandlers/src/cmdatahandlers/caas/config.py | 25 ++++++++++++++++++---- .../src/cmframework/utils/cmansibleinventory.py | 2 +- userconfigtemplate/user_config.yaml | 6 +++++- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/cmdatahandlers/src/cmdatahandlers/caas/config.py b/cmdatahandlers/src/cmdatahandlers/caas/config.py index cd932e2..e897558 100644 --- a/cmdatahandlers/src/cmdatahandlers/caas/config.py +++ b/cmdatahandlers/src/cmdatahandlers/caas/config.py @@ -21,6 +21,7 @@ import jinja2 CAAS_CONFIG_FILE_PATH = "/etc/cmframework/config/" CAAS_CONFIG_FILE = "caas.yaml" +DEFAULT_CAAS_DNS_DOMAIN = "rec.io" class Config(config.Config): @@ -55,6 +56,8 @@ class Config(config.Config): user_conf = self.confman.get_users_config_handler() self.config[self.ROOT]['helm_home'] = "/home/" + user_conf.get_admin_user() + "/.helm" self.config[self.ROOT]['flavour'] = self.flavour_set() + if not self.config[self.ROOT].get('dns_domain', ""): + self.config[self.ROOT]['dns_domain'] = DEFAULT_CAAS_DNS_DOMAIN def set_static_config(self): try: @@ -63,15 +66,25 @@ class Config(config.Config): CAAS_CONFIG_FILE_PATH)).get_template(CAAS_CONFIG_FILE) with open(CAAS_CONFIG_FILE_PATH + CAAS_CONFIG_FILE) as config_file: data = yaml.load(config_file) - outputText = template.render(data) - config_data = yaml.load(outputText) - for key in config_data: - self.config[self.ROOT][key] = config_data[key] + self.config[self.ROOT].update( + self._template_config(template, self.config[self.ROOT], data)) except jinja2.exceptions.TemplateNotFound: return except Exception: raise configerror.ConfigError("Unexpected issue occured!") + def _template_config(self, template, base_config, initial_data): + config_data = initial_data.copy() + config_data.update(base_config) + outputText = template.render(config_data) + previousOutputText = "" + while outputText != previousOutputText: + config_data = yaml.load(outputText) + config_data.update(base_config) + outputText = template.render(config_data) + previousOutputText = outputText + return yaml.load(outputText) + def add_defaults(self): if not self.config.get('cloud.caas', ''): return @@ -141,3 +154,7 @@ class Config(config.Config): def get_caas_parameter(self, parameter): return self.config.get(self.ROOT, {}).get(parameter, '') + + def get_kubernetes_domain(self): + return 'kubernetes.default.svc.{}'.format( + self.config.get(self.ROOT, {}).get('dns_domain', '')) diff --git a/cmframework/src/cmframework/utils/cmansibleinventory.py b/cmframework/src/cmframework/utils/cmansibleinventory.py index eef17db..13db5f2 100644 --- a/cmframework/src/cmframework/utils/cmansibleinventory.py +++ b/cmframework/src/cmframework/utils/cmansibleinventory.py @@ -93,7 +93,7 @@ class AnsibleInventory(object): def set_caas_master_data(self, hostvars, node, caasconf, hostsconf): dns = hostvars[node]['ssl_alt_name']['dns'] - dns.append('kubernetes.default.svc.nokia.net') + dns.append(caasconf.get_kubernetes_domain()) dns.append(caasconf.get_apiserver_in_hosts()) dns.append(caasconf.get_registry_url()) dns.append(caasconf.get_update_registry_url()) diff --git a/userconfigtemplate/user_config.yaml b/userconfigtemplate/user_config.yaml index 4517eaf..1e1e257 100644 --- a/userconfigtemplate/user_config.yaml +++ b/userconfigtemplate/user_config.yaml @@ -248,6 +248,11 @@ caas: ### e.g. ["U2FsdGVkX1+WlNST+W.."] encrypted_ca_key: '[""]' + ### This parameter defines the DNS domain served by the REC DNS server for example + ### in-cluster Kubernetes Services all belongs to this domain DNS queries. + ### Outside of this domain are either rejected, or forwarded to a configured upstream DNS server (if, any). + ### The default value is: rec.io + #dns_domain: "" ### Storage configuration storage: @@ -544,4 +549,3 @@ hosts: #mgmt_mac: [, , ...] ... - -- 2.16.6