From 59164ca8447f3ec394a1477ae9c4bf5abcfe15c8 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Thu, 6 Nov 2014 20:49:21 -0800 Subject: [PATCH] Make DNS an option for cluster turnup --- cluster/aws/config-default.sh | 6 ++++++ cluster/aws/templates/create-dynamic-salt-files.sh | 3 +++ cluster/aws/util.sh | 3 +++ cluster/gce/config-default.sh | 6 ++++++ cluster/gce/config-test.sh | 6 ++++++ cluster/gce/templates/create-dynamic-salt-files.sh | 3 +++ cluster/gce/util.sh | 3 +++ cluster/kube-up.sh | 12 ++++++++++++ .../rackspace/cloud-config/minion-cloud-config.yaml | 2 +- cluster/rackspace/config-default.sh | 6 ++++++ cluster/rackspace/util.sh | 3 +++ cluster/saltbase/salt/kubelet/default | 9 ++++++++- cluster/vagrant/config-default.sh | 6 ++++++ cluster/vagrant/provision-master.sh | 3 +++ cluster/vsphere/config-default.sh | 6 ++++++ .../vsphere/templates/create-dynamic-salt-files.sh | 3 +++ cluster/vsphere/util.sh | 3 +++ 17 files changed, 81 insertions(+), 2 deletions(-) diff --git a/cluster/aws/config-default.sh b/cluster/aws/config-default.sh index c116f0a99e0..12cde00b502 100644 --- a/cluster/aws/config-default.sh +++ b/cluster/aws/config-default.sh @@ -44,3 +44,9 @@ ENABLE_NODE_LOGGING=true LOGGING_DESTINATION=elasticsearch # options: elasticsearch, gcp IAM_PROFILE="kubernetes" LOG="/dev/null" + +# Optional: Install cluster DNS. +ENABLE_CLUSTER_DNS=true +DNS_SERVER_IP="10.0.0.10" +DNS_DOMAIN="kubernetes.local" +DNS_REPLICAS=1 diff --git a/cluster/aws/templates/create-dynamic-salt-files.sh b/cluster/aws/templates/create-dynamic-salt-files.sh index 0a06dd73983..f9a01c41a9b 100644 --- a/cluster/aws/templates/create-dynamic-salt-files.sh +++ b/cluster/aws/templates/create-dynamic-salt-files.sh @@ -25,6 +25,9 @@ portal_net: $PORTAL_NET enable_node_monitoring: $ENABLE_NODE_MONITORING enable_node_logging: $ENABLE_NODE_LOGGING logging_destination: $LOGGING_DESTINATION +enable_cluster_dns: $ENABLE_CLUSTER_DNS +dns_server: $DNS_SERVER_IP +dns_domain: $DNS_DOMAIN EOF mkdir -p /srv/salt-overlay/salt/nginx diff --git a/cluster/aws/util.sh b/cluster/aws/util.sh index e3d34b95882..80f54ab5291 100644 --- a/cluster/aws/util.sh +++ b/cluster/aws/util.sh @@ -299,6 +299,9 @@ function kube-up { echo "readonly ENABLE_NODE_MONITORING='${ENABLE_NODE_MONITORING:-false}'" echo "readonly ENABLE_NODE_LOGGING='${ENABLE_NODE_LOGGING:-false}'" echo "readonly LOGGING_DESTINATION='${LOGGING_DESTINATION:-}'" + echo "readonly ENABLE_CLUSTER_DNS='${ENABLE_CLUSTER_DNS:-false}'" + echo "readonly DNS_SERVER_IP='${DNS_SERVER_IP:-}'" + echo "readonly DNS_DOMAIN='${DNS_DOMAIN:-}'" grep -v "^#" "${KUBE_ROOT}/cluster/aws/templates/create-dynamic-salt-files.sh" grep -v "^#" "${KUBE_ROOT}/cluster/aws/templates/download-release.sh" grep -v "^#" "${KUBE_ROOT}/cluster/aws/templates/salt-master.sh" diff --git a/cluster/gce/config-default.sh b/cluster/gce/config-default.sh index 36638be9605..4061edff570 100755 --- a/cluster/gce/config-default.sh +++ b/cluster/gce/config-default.sh @@ -54,3 +54,9 @@ LOGGING_DESTINATION=elasticsearch # options: elasticsearch, gcp # Don't require https for registries in our local RFC1918 network EXTRA_DOCKER_OPTS="--insecure-registry 10.0.0.0/8" + +# Optional: Install cluster DNS. +ENABLE_CLUSTER_DNS=true +DNS_SERVER_IP="10.0.0.10" +DNS_DOMAIN="kubernetes.local" +DNS_REPLICAS=1 diff --git a/cluster/gce/config-test.sh b/cluster/gce/config-test.sh index 5ad43de0a44..947a67c4d7c 100755 --- a/cluster/gce/config-test.sh +++ b/cluster/gce/config-test.sh @@ -51,3 +51,9 @@ ENABLE_CLUSTER_MONITORING=false # Don't require https for registries in our local RFC1918 network EXTRA_DOCKER_OPTS="--insecure-registry 10.0.0.0/8" + +# Optional: Install cluster DNS. +ENABLE_CLUSTER_DNS=true +DNS_SERVER_IP="10.0.0.10" +DNS_DOMAIN="kubernetes.local" +DNS_REPLICAS=1 diff --git a/cluster/gce/templates/create-dynamic-salt-files.sh b/cluster/gce/templates/create-dynamic-salt-files.sh index 0b10c9fedd4..0f894423d73 100644 --- a/cluster/gce/templates/create-dynamic-salt-files.sh +++ b/cluster/gce/templates/create-dynamic-salt-files.sh @@ -25,6 +25,9 @@ portal_net: '$(echo "$PORTAL_NET" | sed -e "s/'/''/g")' enable_node_monitoring: '$(echo "$ENABLE_NODE_MONITORING" | sed -e "s/'/''/g")' enable_node_logging: '$(echo "$ENABLE_NODE_LOGGING" | sed -e "s/'/''/g")' logging_destination: '$(echo "$LOGGING_DESTINATION" | sed -e "s/'/''/g")' +enable_cluster_dns: '$(echo "$ENABLE_CLUSTER_DNS" | sed -e "s/'/''/g")' +dns_server: '$(echo "$DNS_SERVER_IP" | sed -e "s/'/''/g")' +dns_domain: '$(echo "$DNS_DOMAIN" | sed -e "s/'/''/g")' EOF mkdir -p /srv/salt-overlay/salt/nginx diff --git a/cluster/gce/util.sh b/cluster/gce/util.sh index 9689ad293fb..6eba06103e9 100755 --- a/cluster/gce/util.sh +++ b/cluster/gce/util.sh @@ -389,6 +389,9 @@ function kube-up { echo "readonly ENABLE_NODE_MONITORING='${ENABLE_NODE_MONITORING:-false}'" echo "readonly ENABLE_NODE_LOGGING='${ENABLE_NODE_LOGGING:-false}'" echo "readonly LOGGING_DESTINATION='${LOGGING_DESTINATION:-}'" + echo "readonly ENABLE_CLUSTER_DNS='${ENABLE_CLUSTER_DNS:-false}'" + echo "readonly DNS_SERVER_IP='${DNS_SERVER_IP:-}'" + echo "readonly DNS_DOMAIN='${DNS_DOMAIN:-}'" grep -v "^#" "${KUBE_ROOT}/cluster/gce/templates/common.sh" grep -v "^#" "${KUBE_ROOT}/cluster/gce/templates/format-and-mount-pd.sh" grep -v "^#" "${KUBE_ROOT}/cluster/gce/templates/create-dynamic-salt-files.sh" diff --git a/cluster/kube-up.sh b/cluster/kube-up.sh index 43d3c4dd80e..db3b294bc93 100755 --- a/cluster/kube-up.sh +++ b/cluster/kube-up.sh @@ -42,4 +42,16 @@ echo "... calling validate-cluster" >&2 echo "... calling setup-monitoring" >&2 setup-monitoring +if [[ "${ENABLE_CLUSTER_DNS}" == "true" ]]; then + echo "Installing cluster DNS" + sed -e "s/{DNS_DOMAIN}/$DNS_DOMAIN/g" \ + -e "s/{DNS_REPLICAS}/$DNS_REPLICAS/g" \ + "${KUBE_ROOT}/contrib/dns/skydns-rc.yaml.in" \ + | "${KUBE_ROOT}/cluster/kubectl.sh" create -f - + + sed -e "s/{DNS_SERVER_IP}/$DNS_SERVER_IP/g" \ + "${KUBE_ROOT}/contrib/dns/skydns-svc.yaml.in" \ + | "${KUBE_ROOT}/cluster/kubectl.sh" create -f - +fi + echo "Done" >&2 diff --git a/cluster/rackspace/cloud-config/minion-cloud-config.yaml b/cluster/rackspace/cloud-config/minion-cloud-config.yaml index 96a67125e85..307722d2ee7 100644 --- a/cluster/rackspace/cloud-config/minion-cloud-config.yaml +++ b/cluster/rackspace/cloud-config/minion-cloud-config.yaml @@ -103,7 +103,7 @@ coreos: Requires=download-release.service [Service] ExecStartPre=/usr/bin/ln -sf /opt/kubernetes/server/bin/kubelet /opt/bin/kubelet - ExecStart=/opt/bin/kubelet --address=$private_ipv4 --hostname_override=$private_ipv4 --etcd_servers=http://127.0.0.1:4001 --logtostderr=true --config=/opt/kubernetes-manifests + ExecStart=/opt/bin/kubelet --address=$private_ipv4 --hostname_override=$private_ipv4 --etcd_servers=http://127.0.0.1:4001 --logtostderr=true --config=/opt/kubernetes-manifests --cluster_dns=DNS_SERVER_IP --cluster_domain=DNS_DOMAIN Restart=always RestartSec=2 - name: minion-proxy.service diff --git a/cluster/rackspace/config-default.sh b/cluster/rackspace/config-default.sh index 5133e23b7f0..547b1640175 100644 --- a/cluster/rackspace/config-default.sh +++ b/cluster/rackspace/config-default.sh @@ -44,3 +44,9 @@ ENABLE_NODE_MONITORING=true # Optional: Enable node logging. ENABLE_NODE_LOGGING=true LOGGING_DESTINATION=elasticsearch + +# Optional: Install cluster DNS. +ENABLE_CLUSTER_DNS=true +DNS_SERVER_IP="10.0.0.10" +DNS_DOMAIN="kubernetes.local" +DNS_REPLICAS=1 diff --git a/cluster/rackspace/util.sh b/cluster/rackspace/util.sh index cbbaeef669c..8d1aa18f3bf 100644 --- a/cluster/rackspace/util.sh +++ b/cluster/rackspace/util.sh @@ -187,6 +187,9 @@ rax-boot-minions() { -e "s|ENABLE_NODE_MONITORING|${ENABLE_NODE_MONITORING:-false}|" \ -e "s|ENABLE_NODE_LOGGING|${ENABLE_NODE_LOGGING:-false}|" \ -e "s|LOGGING_DESTINATION|${LOGGING_DESTINATION:-}|" \ + -e "s|ENABLE_CLUSTER_DNS|${ENABLE_CLUSTER_DNS:-false}|" \ + -e "s|DNS_SERVER_IP|${DNS_SERVER_IP:-}|" \ + -e "s|DNS_DOMAIN|${DNS_DOMAIN:-}|" \ $(dirname $0)/rackspace/cloud-config/minion-cloud-config.yaml > $KUBE_TEMP/minion-cloud-config-$(($i + 1)).yaml diff --git a/cluster/saltbase/salt/kubelet/default b/cluster/saltbase/salt/kubelet/default index 7492562977b..55e74914133 100644 --- a/cluster/saltbase/salt/kubelet/default +++ b/cluster/saltbase/salt/kubelet/default @@ -27,4 +27,11 @@ {% set registry_qps = "-registry_qps=0.1" %} -DAEMON_ARGS="{{daemon_args}} {{etcd_servers}} {{apiservers}} {{auth_path}} {{hostname_override}} {{address}} {{config}} --allow_privileged={{pillar['allow_privileged']}} {{pillar['log_level']}}" +{% set cluster_dns = "" %} +{% set cluster_domain = "" %} +{% if pillar['enable_cluster_dns'] is defined and pillar['enable_cluster_dns'] %} + {% set cluster_dns = "-cluster_dns=" + pillar['dns_server'] %} + {% set cluster_domain = "-cluster_domain=" + pillar['dns_domain'] %} +{% endif %} + +DAEMON_ARGS="{{daemon_args}} {{etcd_servers}} {{apiservers}} {{auth_path}} {{hostname_override}} {{address}} {{config}} --allow_privileged={{pillar['allow_privileged']}} {{pillar['log_level']}} {{cluster_dns}} {{cluster_domain}}" diff --git a/cluster/vagrant/config-default.sh b/cluster/vagrant/config-default.sh index 77a554c4964..9c5005a81cb 100755 --- a/cluster/vagrant/config-default.sh +++ b/cluster/vagrant/config-default.sh @@ -56,3 +56,9 @@ LOGGING_DESTINATION=elasticsearch # Extra options to set on the Docker command line. This is useful for setting # --insecure-registry for local registries. DOCKER_OPTS="" + +# Optional: Install cluster DNS. +ENABLE_CLUSTER_DNS=true +DNS_SERVER_IP="10.0.0.10" +DNS_DOMAIN="kubernetes.local" +DNS_REPLICAS=1 diff --git a/cluster/vagrant/provision-master.sh b/cluster/vagrant/provision-master.sh index 7e0573d48ac..400445d985c 100755 --- a/cluster/vagrant/provision-master.sh +++ b/cluster/vagrant/provision-master.sh @@ -84,6 +84,9 @@ cat </srv/salt-overlay/pillar/cluster-params.sls enable_node_monitoring: '$(echo "$ENABLE_NODE_MONITORING" | sed -e "s/'/''/g")' enable_node_logging: '$(echo "$ENABLE_NODE_LOGGING" | sed -e "s/'/''/g")' logging_destination: '$(echo "$LOGGING_DESTINATION" | sed -e "s/'/''/g")' + enable_cluster_dns: '$(echo "$ENABLE_CLUSTER_DNS" | sed -e "s/'/''/g")' + dns_server: '$(echo "$DNS_SERVER_IP" | sed -e "s/'/''/g")' + dns_domain: '$(echo "$DNS_DOMAIN" | sed -e "s/'/''/g")' EOF # Configure the salt-master diff --git a/cluster/vsphere/config-default.sh b/cluster/vsphere/config-default.sh index 9b30ad1f4b2..0614b418a89 100755 --- a/cluster/vsphere/config-default.sh +++ b/cluster/vsphere/config-default.sh @@ -39,3 +39,9 @@ ENABLE_NODE_MONITORING=true # Optional: Enable node logging. ENABLE_NODE_LOGGING=true LOGGING_DESTINATION=elasticsearch + +# Optional: Install cluster DNS. +ENABLE_CLUSTER_DNS=true +DNS_SERVER_IP="10.244.240.240" +DNS_DOMAIN="kubernetes.local" +DNS_REPLICAS=1 diff --git a/cluster/vsphere/templates/create-dynamic-salt-files.sh b/cluster/vsphere/templates/create-dynamic-salt-files.sh index 0a06dd73983..f9a01c41a9b 100755 --- a/cluster/vsphere/templates/create-dynamic-salt-files.sh +++ b/cluster/vsphere/templates/create-dynamic-salt-files.sh @@ -25,6 +25,9 @@ portal_net: $PORTAL_NET enable_node_monitoring: $ENABLE_NODE_MONITORING enable_node_logging: $ENABLE_NODE_LOGGING logging_destination: $LOGGING_DESTINATION +enable_cluster_dns: $ENABLE_CLUSTER_DNS +dns_server: $DNS_SERVER_IP +dns_domain: $DNS_DOMAIN EOF mkdir -p /srv/salt-overlay/salt/nginx diff --git a/cluster/vsphere/util.sh b/cluster/vsphere/util.sh index 7aacf264a1a..b52542f5715 100755 --- a/cluster/vsphere/util.sh +++ b/cluster/vsphere/util.sh @@ -294,6 +294,9 @@ function kube-up { echo "readonly ENABLE_NODE_MONITORING='${ENABLE_NODE_MONITORING:-false}'" echo "readonly ENABLE_NODE_LOGGING='${ENABLE_NODE_LOGGING:-false}'" echo "readonly LOGGING_DESTINATION='${LOGGING_DESTINATION:-}'" + echo "readonly ENABLE_CLUSTER_DNS='${ENABLE_CLUSTER_DNS:-false}'" + echo "readonly DNS_SERVER_IP='${DNS_SERVER_IP:-}'" + echo "readonly DNS_DOMAIN='${DNS_DOMAIN:-}'" echo "readonly SERVER_BINARY_TAR='${SERVER_BINARY_TAR##*/}'" echo "readonly SALT_TAR='${SALT_TAR##*/}'" echo "readonly MASTER_HTPASSWD='${htpasswd}'"