diff --git a/examples/basic/Genesis.yaml b/examples/basic/Genesis.yaml index bdad2bb8..281dee53 100644 --- a/examples/basic/Genesis.yaml +++ b/examples/basic/Genesis.yaml @@ -17,6 +17,7 @@ metadata: data: hostname: n0 ip: 192.168.77.10 + external_ip: 192.168.77.10 apiserver: arguments: - --authorization-mode=Node,RBAC diff --git a/examples/complete/Genesis.yaml b/examples/complete/Genesis.yaml index 75975e06..33c24dee 100644 --- a/examples/complete/Genesis.yaml +++ b/examples/complete/Genesis.yaml @@ -10,6 +10,7 @@ metadata: data: hostname: n0 ip: 192.168.77.10 + external_ip: 192.168.77.10 armada: target_manifest: cluster-bootstrap labels: diff --git a/promenade/control/join_scripts.py b/promenade/control/join_scripts.py index 2213a86f..ca5948c3 100644 --- a/promenade/control/join_scripts.py +++ b/promenade/control/join_scripts.py @@ -36,7 +36,10 @@ class JoinScriptsResource(BaseResource): def on_get(self, req, resp): leave_kubectl = req.get_param_as_bool('leave_kubectl') design_ref = req.get_param('design_ref', required=True) + # The required IP address to be used by Kubernetes itself ip = req.get_param('ip', required=True) + # The optional IP address to configure as externally-routable + external_ip = req.get_param('external_ip', default='127.0.0.1') hostname = req.get_param('hostname', required=True) # NOTE(sh8121att): Set a default here for backward compatability dns_domain = req.get_param('domain', default='local') @@ -73,6 +76,7 @@ class JoinScriptsResource(BaseResource): 'hostname': hostname, 'domain': dns_domain, 'ip': ip, + 'external_ip': external_ip, 'join_ips': join_ips, 'labels': { 'dynamic': dynamic_labels, diff --git a/promenade/schemas/Genesis.yaml b/promenade/schemas/Genesis.yaml index 573eacb5..704f00c4 100644 --- a/promenade/schemas/Genesis.yaml +++ b/promenade/schemas/Genesis.yaml @@ -105,6 +105,9 @@ data: ip: $ref: '#/definitions/ip_address' + external_ip: + $ref: '#/definitions/ip_address' + labels: properties: static: diff --git a/promenade/schemas/KubernetesNode.yaml b/promenade/schemas/KubernetesNode.yaml index f699bc9c..db09f816 100644 --- a/promenade/schemas/KubernetesNode.yaml +++ b/promenade/schemas/KubernetesNode.yaml @@ -26,6 +26,9 @@ data: ip: $ref: '#/definitions/ip_address' + external_ip: + $ref: '#/definitions/ip_address' + domain: type: string diff --git a/promenade/templates/roles/common/etc/hosts b/promenade/templates/roles/common/etc/hosts index cb62d012..e59e371b 100644 --- a/promenade/templates/roles/common/etc/hosts +++ b/promenade/templates/roles/common/etc/hosts @@ -1,7 +1,7 @@ # This file is controlled by Promenade. Do not modify. # -127.0.0.1 {{ config.get_first('Genesis:hostname', 'KubernetesNode:hostname') }}.{{ config.get_first('Genesis:domain', 'KubernetesNode:domain', default='local') }} {{ config.get_first('Genesis:hostname', 'KubernetesNode:hostname') }} 127.0.0.1 localhost +{{ config.get_first('Genesis:external_ip', 'KubernetesNode:external_ip', default='127.0.0.1') }} {{ config.get_first('Genesis:hostname', 'KubernetesNode:hostname') }}.{{ config.get_first('Genesis:domain', 'KubernetesNode:domain', default='local') }} {{ config.get_first('Genesis:hostname', 'KubernetesNode:hostname') }} {%- for entry in config.get_path('KubernetesNetwork:hosts_entries', []) %} {{ entry['ip'] }} {{ entry['names'] | join(' ') }} {%- endfor %} diff --git a/tools/g2/lib/promenade.sh b/tools/g2/lib/promenade.sh index 4b152297..13eec04e 100644 --- a/tools/g2/lib/promenade.sh +++ b/tools/g2/lib/promenade.sh @@ -24,7 +24,7 @@ promenade_render_curl_url() { else DESIGN_REF="design_ref=${NGINX_URL}/promenade.yaml" fi - HOST_PARAMS="hostname=${NAME}&ip=$(config_vm_ip "${NAME}")" + HOST_PARAMS="hostname=${NAME}&ip=$(config_vm_ip "${NAME}")&external_ip=$(config_vm_ip "${NAME}")" echo "${BASE_URL}?${DESIGN_REF}&${HOST_PARAMS}&leave_kubectl=true${LABEL_PARAMS}" } diff --git a/tools/gate/config-templates/genesis-config.yaml b/tools/gate/config-templates/genesis-config.yaml index d801dac2..96e41d76 100644 --- a/tools/gate/config-templates/genesis-config.yaml +++ b/tools/gate/config-templates/genesis-config.yaml @@ -10,6 +10,7 @@ metadata: data: hostname: ${GENESIS_HOSTNAME} ip: ${GENESIS_IP} + external_ip: ${GENESIS_IP} labels: dynamic: - calico-etcd=enabled diff --git a/tools/gate/config-templates/joining-host-config.yaml b/tools/gate/config-templates/joining-host-config.yaml index d97c9ca9..25f21ba0 100644 --- a/tools/gate/config-templates/joining-host-config.yaml +++ b/tools/gate/config-templates/joining-host-config.yaml @@ -10,6 +10,7 @@ metadata: data: hostname: ${GENESIS_HOSTNAME} ip: ${GENESIS_IP} + external_ip: ${GENESIS_IP} join_ip: ${MASTER1_IP} labels: dynamic: @@ -40,6 +41,7 @@ metadata: data: hostname: ${MASTER1_HOSTNAME} ip: ${MASTER1_IP} + external_ip: ${MASTER1_IP} join_ip: ${GENESIS_IP} labels: dynamic: @@ -70,6 +72,7 @@ metadata: data: hostname: ${MASTER2_HOSTNAME} ip: ${MASTER2_IP} + external_ip: ${MASTER2_IP} join_ips: - ${GENESIS_IP} - ${MASTER1_IP} @@ -102,6 +105,7 @@ metadata: data: hostname: ${WORKER_HOSTNAME} ip: ${WORKER_IP} + external_ip: ${WORKER_IP} join_ips: - ${GENESIS_IP} - ${MASTER1_IP}