Modified etcd manifest to support clustering.
Modified etcd manifest to support clustering.
This commit is contained in:
		@@ -644,6 +644,7 @@ ENABLE_MANIFEST_URL: $(yaml-quote ${ENABLE_MANIFEST_URL:-false})
 | 
				
			|||||||
MANIFEST_URL: $(yaml-quote ${MANIFEST_URL:-})
 | 
					MANIFEST_URL: $(yaml-quote ${MANIFEST_URL:-})
 | 
				
			||||||
MANIFEST_URL_HEADER: $(yaml-quote ${MANIFEST_URL_HEADER:-})
 | 
					MANIFEST_URL_HEADER: $(yaml-quote ${MANIFEST_URL_HEADER:-})
 | 
				
			||||||
NUM_NODES: $(yaml-quote ${NUM_NODES})
 | 
					NUM_NODES: $(yaml-quote ${NUM_NODES})
 | 
				
			||||||
 | 
					INITIAL_ETCD_CLUSTER: $(yaml-quote ${MASTER_NAME})
 | 
				
			||||||
EOF
 | 
					EOF
 | 
				
			||||||
    if [ -n "${APISERVER_TEST_ARGS:-}" ]; then
 | 
					    if [ -n "${APISERVER_TEST_ARGS:-}" ]; then
 | 
				
			||||||
      cat >>$file <<EOF
 | 
					      cat >>$file <<EOF
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -452,10 +452,11 @@ network_policy_provider: '$(echo "$NETWORK_POLICY_PROVIDER" | sed -e "s/'/''/g")
 | 
				
			|||||||
enable_manifest_url: '$(echo "${ENABLE_MANIFEST_URL:-}" | sed -e "s/'/''/g")'
 | 
					enable_manifest_url: '$(echo "${ENABLE_MANIFEST_URL:-}" | sed -e "s/'/''/g")'
 | 
				
			||||||
manifest_url: '$(echo "${MANIFEST_URL:-}" | sed -e "s/'/''/g")'
 | 
					manifest_url: '$(echo "${MANIFEST_URL:-}" | sed -e "s/'/''/g")'
 | 
				
			||||||
manifest_url_header: '$(echo "${MANIFEST_URL_HEADER:-}" | sed -e "s/'/''/g")'
 | 
					manifest_url_header: '$(echo "${MANIFEST_URL_HEADER:-}" | sed -e "s/'/''/g")'
 | 
				
			||||||
master_name: '$(echo "${MASTER_NAME:-}" | sed -e "s/'/''/g")'
 | 
					master_name: '$(echo "${KUBERNETES_MASTER_NAME:-}" | sed -e "s/'/''/g")'
 | 
				
			||||||
num_nodes: $(echo "${NUM_NODES:-}" | sed -e "s/'/''/g")
 | 
					num_nodes: $(echo "${NUM_NODES:-}" | sed -e "s/'/''/g")
 | 
				
			||||||
e2e_storage_test_environment: '$(echo "$E2E_STORAGE_TEST_ENVIRONMENT" | sed -e "s/'/''/g")'
 | 
					e2e_storage_test_environment: '$(echo "$E2E_STORAGE_TEST_ENVIRONMENT" | sed -e "s/'/''/g")'
 | 
				
			||||||
kube_uid: '$(echo "${KUBE_UID}" | sed -e "s/'/''/g")'
 | 
					kube_uid: '$(echo "${KUBE_UID}" | sed -e "s/'/''/g")'
 | 
				
			||||||
 | 
					initial_etcd_cluster: '$(echo "${INITIAL_ETCD_CLUSTER:-}" | sed -e "s/'/''/g")'
 | 
				
			||||||
EOF
 | 
					EOF
 | 
				
			||||||
    if [ -n "${KUBELET_PORT:-}" ]; then
 | 
					    if [ -n "${KUBELET_PORT:-}" ]; then
 | 
				
			||||||
      cat <<EOF >>/srv/salt-overlay/pillar/cluster-params.sls
 | 
					      cat <<EOF >>/srv/salt-overlay/pillar/cluster-params.sls
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -507,12 +507,27 @@ function start-kube-proxy {
 | 
				
			|||||||
# $4: value for variable 'cpulimit'
 | 
					# $4: value for variable 'cpulimit'
 | 
				
			||||||
# $5: pod name, which should be either etcd or etcd-events
 | 
					# $5: pod name, which should be either etcd or etcd-events
 | 
				
			||||||
function prepare-etcd-manifest {
 | 
					function prepare-etcd-manifest {
 | 
				
			||||||
 | 
					  local host_name=$(hostname)
 | 
				
			||||||
 | 
					  local etcd_cluster=""
 | 
				
			||||||
 | 
					  local cluster_state="new"
 | 
				
			||||||
 | 
					  for host in $(echo "${INITIAL_ETCD_CLUSTER:-${host_name}}" | tr "," "\n"); do
 | 
				
			||||||
 | 
					    etcd_host="etcd-${host}=http://${host}:$3"
 | 
				
			||||||
 | 
					    if [[ -n "${etcd_cluster}" ]]; then
 | 
				
			||||||
 | 
					      etcd_cluster+=","
 | 
				
			||||||
 | 
					      cluster_state="existing"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    etcd_cluster+="${etcd_host}"
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
  local -r temp_file="/tmp/$5"
 | 
					  local -r temp_file="/tmp/$5"
 | 
				
			||||||
  cp "${KUBE_HOME}/kube-manifests/kubernetes/gci-trusty/etcd.manifest" "${temp_file}"
 | 
					  cp "${KUBE_HOME}/kube-manifests/kubernetes/gci-trusty/etcd.manifest" "${temp_file}"
 | 
				
			||||||
 | 
					  remove-salt-config-comments "${temp_file}"
 | 
				
			||||||
  sed -i -e "s@{{ *suffix *}}@$1@g" "${temp_file}"
 | 
					  sed -i -e "s@{{ *suffix *}}@$1@g" "${temp_file}"
 | 
				
			||||||
  sed -i -e "s@{{ *port *}}@$2@g" "${temp_file}"
 | 
					  sed -i -e "s@{{ *port *}}@$2@g" "${temp_file}"
 | 
				
			||||||
  sed -i -e "s@{{ *server_port *}}@$3@g" "${temp_file}"
 | 
					  sed -i -e "s@{{ *server_port *}}@$3@g" "${temp_file}"
 | 
				
			||||||
  sed -i -e "s@{{ *cpulimit *}}@\"$4\"@g" "${temp_file}"
 | 
					  sed -i -e "s@{{ *cpulimit *}}@\"$4\"@g" "${temp_file}"
 | 
				
			||||||
 | 
					  sed -i -e "s@{{ *host_name *}}@$host_name@g" "${temp_file}"
 | 
				
			||||||
 | 
					  sed -i -e "s@{{ *etcd_cluster *}}@$etcd_cluster@g" "${temp_file}"
 | 
				
			||||||
 | 
					  sed -i -e "s@{{ *cluster_state *}}@$cluster_state@g" "${temp_file}"
 | 
				
			||||||
  # Replace the volume host path.
 | 
					  # Replace the volume host path.
 | 
				
			||||||
  sed -i -e "s@/mnt/master-pd/var/etcd@/mnt/disks/master-pd/var/etcd@g" "${temp_file}"
 | 
					  sed -i -e "s@/mnt/master-pd/var/etcd@/mnt/disks/master-pd/var/etcd@g" "${temp_file}"
 | 
				
			||||||
  mv "${temp_file}" /etc/kubernetes/manifests
 | 
					  mv "${temp_file}" /etc/kubernetes/manifests
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -409,12 +409,27 @@ create_master_kubelet_auth() {
 | 
				
			|||||||
# $4: value for variable 'cpulimit'
 | 
					# $4: value for variable 'cpulimit'
 | 
				
			||||||
# $5: pod name, which should be either etcd or etcd-events
 | 
					# $5: pod name, which should be either etcd or etcd-events
 | 
				
			||||||
prepare_etcd_manifest() {
 | 
					prepare_etcd_manifest() {
 | 
				
			||||||
 | 
					  local host_name=$(hostname)
 | 
				
			||||||
 | 
					  local etcd_cluster=""
 | 
				
			||||||
 | 
					  local cluster_state="new"
 | 
				
			||||||
 | 
					  for host in $(echo "${INITIAL_ETCD_CLUSTER:-${host_name}}" | tr "," "\n"); do
 | 
				
			||||||
 | 
					    etcd_host="etcd-${host}=http://${host}:$3"
 | 
				
			||||||
 | 
					    if [[ -n "${etcd_cluster}" ]]; then
 | 
				
			||||||
 | 
					      etcd_cluster+=","
 | 
				
			||||||
 | 
					      cluster_state="existing"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    etcd_cluster+="${etcd_host}"
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
  etcd_temp_file="/tmp/$5"
 | 
					  etcd_temp_file="/tmp/$5"
 | 
				
			||||||
  cp /home/kubernetes/kube-manifests/kubernetes/gci-trusty/etcd.manifest "${etcd_temp_file}"
 | 
					  cp /home/kubernetes/kube-manifests/kubernetes/gci-trusty/etcd.manifest "${etcd_temp_file}"
 | 
				
			||||||
 | 
					  remove_salt_config_comments "${etcd_temp_file}"
 | 
				
			||||||
  sed -i -e "s@{{ *suffix *}}@$1@g" "${etcd_temp_file}"
 | 
					  sed -i -e "s@{{ *suffix *}}@$1@g" "${etcd_temp_file}"
 | 
				
			||||||
  sed -i -e "s@{{ *port *}}@$2@g" "${etcd_temp_file}"
 | 
					  sed -i -e "s@{{ *port *}}@$2@g" "${etcd_temp_file}"
 | 
				
			||||||
  sed -i -e "s@{{ *server_port *}}@$3@g" "${etcd_temp_file}"
 | 
					  sed -i -e "s@{{ *server_port *}}@$3@g" "${etcd_temp_file}"
 | 
				
			||||||
  sed -i -e "s@{{ *cpulimit *}}@\"$4\"@g" "${etcd_temp_file}"
 | 
					  sed -i -e "s@{{ *cpulimit *}}@\"$4\"@g" "${etcd_temp_file}"
 | 
				
			||||||
 | 
					  sed -i -e "s@{{ *host_name *}}@$host_name@g" "${etcd_temp_file}"
 | 
				
			||||||
 | 
					  sed -i -e "s@{{ *etcd_cluster *}}@$etcd_cluster@g" "${etcd_temp_file}"
 | 
				
			||||||
 | 
					  sed -i -e "s@{{ *cluster_state *}}@$cluster_state@g" "${etcd_temp_file}"
 | 
				
			||||||
  # Replace the volume host path
 | 
					  # Replace the volume host path
 | 
				
			||||||
  sed -i -e "s@/mnt/master-pd/var/etcd@/mnt/disks/master-pd/var/etcd@g" "${etcd_temp_file}"
 | 
					  sed -i -e "s@/mnt/master-pd/var/etcd@/mnt/disks/master-pd/var/etcd@g" "${etcd_temp_file}"
 | 
				
			||||||
  mv "${etcd_temp_file}" /etc/kubernetes/manifests
 | 
					  mv "${etcd_temp_file}" /etc/kubernetes/manifests
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,20 @@
 | 
				
			|||||||
 | 
					{% set cluster_state = 'new' -%}
 | 
				
			||||||
 | 
					{% set host_name = pillar.get('master_name', '') -%}
 | 
				
			||||||
 | 
					{% set etcd_cluster_array = pillar.get('initial_etcd_cluster', host_name).split(',') -%}
 | 
				
			||||||
 | 
					{% set etcd_cluster = '' -%}
 | 
				
			||||||
 | 
					{# We use vars dictionary to pass variables set inside the for loop, because jinja defines new variables inside the for loop that hide variables from the outside. #}
 | 
				
			||||||
 | 
					{% set vars = {'etcd_cluster': '', 'cluster_state': cluster_state} -%}
 | 
				
			||||||
 | 
					{% for host in etcd_cluster_array -%}
 | 
				
			||||||
 | 
					  {% if etcd_cluster != '' -%}
 | 
				
			||||||
 | 
					    {% set cluster_state = 'existing' -%}
 | 
				
			||||||
 | 
					    {% set etcd_cluster = etcd_cluster ~ ',' -%}
 | 
				
			||||||
 | 
					  {% endif -%}
 | 
				
			||||||
 | 
					  {% set etcd_cluster = etcd_cluster ~ 'etcd-' ~ host ~ '=http://' ~ host ~ ':' ~ server_port -%}
 | 
				
			||||||
 | 
					  {% do vars.update({'etcd_cluster': etcd_cluster, 'cluster_state': cluster_state}) -%}
 | 
				
			||||||
 | 
					{% endfor -%}
 | 
				
			||||||
 | 
					{% set etcd_cluster = vars.etcd_cluster -%}
 | 
				
			||||||
 | 
					{% set cluster_state = vars.cluster_state -%}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
"apiVersion": "v1",
 | 
					"apiVersion": "v1",
 | 
				
			||||||
"kind": "Pod",
 | 
					"kind": "Pod",
 | 
				
			||||||
@@ -19,7 +36,7 @@
 | 
				
			|||||||
    "command": [
 | 
					    "command": [
 | 
				
			||||||
              "/bin/sh",
 | 
					              "/bin/sh",
 | 
				
			||||||
              "-c",
 | 
					              "-c",
 | 
				
			||||||
              "/usr/local/bin/etcd --listen-peer-urls http://127.0.0.1:{{ server_port }} --advertise-client-urls http://127.0.0.1:{{ port }} --listen-client-urls http://127.0.0.1:{{ port }} --data-dir /var/etcd/data{{ suffix }} 1>>/var/log/etcd{{ suffix }}.log 2>&1"
 | 
					              "/usr/local/bin/etcd --name etcd-{{ host_name }} --listen-peer-urls http://{{ host_name }}:{{ server_port }} --initial-advertise-peer-urls http://{{ host_name }}:{{ server_port }} --advertise-client-urls http://127.0.0.1:{{ port }} --listen-client-urls http://127.0.0.1:{{ port }} --data-dir /var/etcd/data{{ suffix }} --initial-cluster-state {{ cluster_state }} --initial-cluster {{ etcd_cluster }} 1>>/var/log/etcd{{ suffix }}.log 2>&1"
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
    "livenessProbe": {
 | 
					    "livenessProbe": {
 | 
				
			||||||
      "httpGet": {
 | 
					      "httpGet": {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user