From 73ee508005ee71d2456bbaddec6ffccf77581aef Mon Sep 17 00:00:00 2001 From: Andy Zheng Date: Tue, 3 May 2016 14:27:49 -0700 Subject: [PATCH] GCI: Add two GCI specific metadata pairs --- cluster/gce/trusty/helper.sh | 47 ++++++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/cluster/gce/trusty/helper.sh b/cluster/gce/trusty/helper.sh index d12eafaca4a..529b4727169 100755 --- a/cluster/gce/trusty/helper.sh +++ b/cluster/gce/trusty/helper.sh @@ -18,17 +18,45 @@ # The configuration is based on upstart, which is in Ubuntu up to 14.04 LTS (Trusty). # Ubuntu 15.04 and above replaced upstart with systemd as the init system. -# Consequently, the configuration cannot work on these images. +# Consequently, the configuration cannot work on these images. In release-1.2 branch, +# GCI and Trusty share the configuration code. We have to keep the GCI specific code +# here as long as the release-1.2 branch has not been deprecated. +# Creates the GCI specific metadata files if they do not exit. +# Assumed var +# KUBE_TEMP +function ensure-gci-metadata-files { + if [[ ! -f "${KUBE_TEMP}/gci-update.txt" ]]; then + cat >"${KUBE_TEMP}/gci-update.txt" << EOF +update_disabled +EOF + fi + if [[ ! -f "${KUBE_TEMP}/gci-docker.txt" ]]; then + cat >"${KUBE_TEMP}/gci-docker.txt" << EOF +true +EOF + fi +} # $1: template name (required) function create-node-instance-template { local template_name="$1" - create-node-template "$template_name" "${scope_flags[*]}" \ - "kube-env=${KUBE_TEMP}/node-kube-env.yaml" \ - "user-data=${KUBE_ROOT}/cluster/gce/trusty/node.yaml" \ - "configure-sh=${KUBE_ROOT}/cluster/gce/trusty/configure.sh" \ - "cluster-name=${KUBE_TEMP}/cluster-name.txt" + if [[ "${OS_DISTRIBUTION}" == "gci" && "${NODE_IMAGE}" == gci* ]]; then + ensure-gci-metadata-files + create-node-template "$template_name" "${scope_flags[*]}" \ + "kube-env=${KUBE_TEMP}/node-kube-env.yaml" \ + "user-data=${KUBE_ROOT}/cluster/gce/trusty/node.yaml" \ + "configure-sh=${KUBE_ROOT}/cluster/gce/trusty/configure.sh" \ + "cluster-name=${KUBE_TEMP}/cluster-name.txt" \ + "gci-update-strategy=${KUBE_TEMP}/gci-update.txt" \ + "gci-ensure-gke-docker=${KUBE_TEMP}/gci-docker.txt" + else + create-node-template "$template_name" "${scope_flags[*]}" \ + "kube-env=${KUBE_TEMP}/node-kube-env.yaml" \ + "user-data=${KUBE_ROOT}/cluster/gce/trusty/node.yaml" \ + "configure-sh=${KUBE_ROOT}/cluster/gce/trusty/configure.sh" \ + "cluster-name=${KUBE_TEMP}/cluster-name.txt" + fi } # create-master-instance creates the master instance. If called with @@ -47,6 +75,11 @@ function create-node-instance-template { function create-master-instance { local address_opt="" [[ -n ${1:-} ]] && address_opt="--address ${1}" + local image_metadata="" + if [[ "${OS_DISTRIBUTION}" == "gci" && "${MASTER_IMAGE}" == gci* ]]; then + ensure-gci-metadata-files + image_metadata=",gci-update-strategy=${KUBE_TEMP}/gci-update.txt,gci-ensure-gke-docker=${KUBE_TEMP}/gci-docker.txt" + fi write-master-env gcloud compute instances create "${MASTER_NAME}" \ @@ -61,6 +94,6 @@ function create-master-instance { --scopes "storage-ro,compute-rw,monitoring,logging-write" \ --can-ip-forward \ --metadata-from-file \ - "kube-env=${KUBE_TEMP}/master-kube-env.yaml,user-data=${KUBE_ROOT}/cluster/gce/trusty/master.yaml,configure-sh=${KUBE_ROOT}/cluster/gce/trusty/configure.sh,cluster-name=${KUBE_TEMP}/cluster-name.txt" \ + "kube-env=${KUBE_TEMP}/master-kube-env.yaml,user-data=${KUBE_ROOT}/cluster/gce/trusty/master.yaml,configure-sh=${KUBE_ROOT}/cluster/gce/trusty/configure.sh,cluster-name=${KUBE_TEMP}/cluster-name.txt${image_metadata}" \ --disk "name=${MASTER_NAME}-pd,device-name=master-pd,mode=rw,boot=no,auto-delete=no" }