diff --git a/docs/getting-started-guides/coreos/azure/cloud_config_templates/kubernetes-cluster-etcd-node-template.yml b/docs/getting-started-guides/coreos/azure/cloud_config_templates/kubernetes-cluster-etcd-node-template.yml index 72b52737f8b..484da417df9 100644 --- a/docs/getting-started-guides/coreos/azure/cloud_config_templates/kubernetes-cluster-etcd-node-template.yml +++ b/docs/getting-started-guides/coreos/azure/cloud_config_templates/kubernetes-cluster-etcd-node-template.yml @@ -39,7 +39,6 @@ coreos: Environment=ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379,http://0.0.0.0:4001 Environment=ETCD_ADVERTISE_CLIENT_URLS=http://%H:2379,http://%H:4001 Environment=ETCD_INITIAL_CLUSTER_STATE=new - Environment=ETCD_INITIAL_CLUSTER=etcd-00=http://etcd-00:2380,etcd-01=http://etcd-01:2380,etcd-02=http://etcd-02:2380 ExecStart=/opt/bin/etcd2 Restart=always RestartSec=10 diff --git a/docs/getting-started-guides/coreos/azure/cloud_config_templates/kubernetes-cluster-main-nodes-template.yml b/docs/getting-started-guides/coreos/azure/cloud_config_templates/kubernetes-cluster-main-nodes-template.yml index 9537978da28..123f3f27140 100644 --- a/docs/getting-started-guides/coreos/azure/cloud_config_templates/kubernetes-cluster-main-nodes-template.yml +++ b/docs/getting-started-guides/coreos/azure/cloud_config_templates/kubernetes-cluster-main-nodes-template.yml @@ -244,7 +244,7 @@ coreos: ExecStart=/opt/kubernetes/server/bin/kube-apiserver \ --address=0.0.0.0 \ --port=8080 \ - --etcd_servers=http://etcd-00:4001,http://etcd-01:4001,http://etcd-02:4001 \ + $ETCD_SERVERS \ --portal_net=10.1.0.0/16 \ --cloud_provider=vagrant \ --logtostderr=true --v=3 diff --git a/docs/getting-started-guides/coreos/azure/lib/deployment_logic/kubernetes.js b/docs/getting-started-guides/coreos/azure/lib/deployment_logic/kubernetes.js index d13f3701cd7..e497a55708d 100644 --- a/docs/getting-started-guides/coreos/azure/lib/deployment_logic/kubernetes.js +++ b/docs/getting-started-guides/coreos/azure/lib/deployment_logic/kubernetes.js @@ -5,15 +5,51 @@ var util = require('../util.js'); var cloud_config = require('../cloud_config.js'); +etcd_initial_cluster_conf_self = function (conf) { + var port = '2380'; + + var data = { + nodes: _(conf.nodes.etcd).times(function (n) { + var host = util.hostname(n, 'etcd'); + return [host, [host, port].join(':')].join('=http://'); + }), + }; + + return { + 'name': 'etcd2.service', + 'drop-ins': [{ + 'name': '50-etcd-initial-cluster.conf', + 'content': _.template("[Service]\nEnvironment=ETCD_INITIAL_CLUSTER=<%= nodes.join(',') %>\n")(data), + }], + }; +}; + +etcd_initial_cluster_conf_kube = function (conf) { + var port = '4001'; + + var data = { + nodes: _(conf.nodes.etcd).times(function (n) { + var host = util.hostname(n, 'etcd'); + return 'http://' + [host, port].join(':'); + }), + }; + + return { + 'name': 'apiserver.service', + 'drop-ins': [{ + 'name': '50-etcd-initial-cluster.conf', + 'content': _.template("[Service]\nEnvironment=ETCD_SERVERS=--etcd_servers=<%= nodes.join(',') %>\n")(data), + }], + }; +}; + exports.create_etcd_cloud_config = function (node_count, conf) { var input_file = './cloud_config_templates/kubernetes-cluster-etcd-node-template.yml'; + var output_file = util.join_output_file_path('kubernetes-cluster-etcd-nodes', 'generated.yml'); - return _(node_count).times(function (n) { - var output_file = util.join_output_file_path('kubernetes-cluster-etcd-node-' + n, 'generated.yml'); - - return cloud_config.process_template(input_file, output_file, function(data) { - return data; - }); + return cloud_config.process_template(input_file, output_file, function(data) { + data.coreos.units.push(etcd_initial_cluster_conf_self(conf)); + return data; }); }; @@ -31,8 +67,10 @@ exports.create_node_cloud_config = function (node_count, conf) { bridge_address_cidr: util.ipv4([10, 2, n, 1], 24), }); }; + return cloud_config.process_template(input_file, output_file, function(data) { data.write_files = data.write_files.concat(_(node_count).times(make_node_config)); + data.coreos.units.push(etcd_initial_cluster_conf_kube(conf)); return data; }); };