diff --git a/cluster/images/kubemark/BUILD b/cluster/images/kubemark/BUILD index c56bec980c4..b78d3af8cc3 100644 --- a/cluster/images/kubemark/BUILD +++ b/cluster/images/kubemark/BUILD @@ -15,7 +15,7 @@ docker_push( registry = "$(REGISTRY)", repository = "kubemark", stamp = True, - tag = "latest", + tag = "$(IMAGE_TAG)", tags = ["manual"], ) diff --git a/cluster/images/kubemark/Makefile b/cluster/images/kubemark/Makefile index eef40478838..e005a90d80a 100644 --- a/cluster/images/kubemark/Makefile +++ b/cluster/images/kubemark/Makefile @@ -20,16 +20,17 @@ # .. is not the same as: # make REGISTRY=$VAR REGISTRY := $(if $(REGISTRY),$(REGISTRY),staging-k8s.gcr.io) +IMAGE_TAG := $(if $(IMAGE_TAG),$(IMAGE_TAG),latest) all: gcloudpush build: - docker build --pull -t $(REGISTRY)/kubemark . + docker build --pull -t $(REGISTRY)/kubemark:$(IMAGE_TAG) . gcloudpush: build - gcloud docker -- push $(REGISTRY)/kubemark + gcloud docker -- push $(REGISTRY)/kubemark:$(IMAGE_TAG) push: build - docker -- push $(REGISTRY)/kubemark + docker -- push $(REGISTRY)/kubemark:$(IMAGE_TAG) .PHONY: all build gcloudpush push diff --git a/test/kubemark/resources/hollow-node_template.yaml b/test/kubemark/resources/hollow-node_template.yaml index 836a4a574da..0207d06d614 100644 --- a/test/kubemark/resources/hollow-node_template.yaml +++ b/test/kubemark/resources/hollow-node_template.yaml @@ -35,7 +35,7 @@ spec: emptyDir: {} containers: - name: hollow-kubelet - image: {{full_registry}}/kubemark:latest + image: {{full_registry}}/kubemark:{{kubemark_image_tag}} ports: - containerPort: 4194 - containerPort: 10250 @@ -67,7 +67,7 @@ spec: securityContext: privileged: true - name: hollow-proxy - image: {{full_registry}}/kubemark:latest + image: {{full_registry}}/kubemark:{{kubemark_image_tag}} env: - name: CONTENT_TYPE valueFrom: diff --git a/test/kubemark/start-kubemark.sh b/test/kubemark/start-kubemark.sh index 25170dd7fe0..4ba98995d31 100755 --- a/test/kubemark/start-kubemark.sh +++ b/test/kubemark/start-kubemark.sh @@ -45,6 +45,10 @@ KUBECTL="${KUBE_ROOT}/cluster/kubectl.sh" KUBEMARK_DIRECTORY="${KUBE_ROOT}/test/kubemark" RESOURCE_DIRECTORY="${KUBEMARK_DIRECTORY}/resources" +# Generate a random 6-digit alphanumeric tag for the kubemark image. +# Used to uniquify image builds across different invocations of this script. +KUBEMARK_IMAGE_TAG=$(head /dev/urandom | tr -dc 'a-z0-9' | fold -w 6 | head -n 1) + # Write all environment variables that we need to pass to the kubemark master, # locally to the file ${RESOURCE_DIRECTORY}/kubemark-master-env.sh. function create-master-environment-file { @@ -200,7 +204,7 @@ function create-and-upload-hollow-node-image { cd "${MAKE_DIR}" RETRIES=3 for attempt in $(seq 1 ${RETRIES}); do - if ! REGISTRY="${FULL_REGISTRY}" make "${KUBEMARK_IMAGE_MAKE_TARGET}"; then + if ! REGISTRY="${FULL_REGISTRY}" IMAGE_TAG="${KUBEMARK_IMAGE_TAG}" make "${KUBEMARK_IMAGE_MAKE_TARGET}"; then if [[ $((attempt)) -eq "${RETRIES}" ]]; then echo "${color_red}Make failed. Exiting.${color_norm}" exit 1 @@ -221,7 +225,7 @@ function create-and-upload-hollow-node-image { function create-and-upload-hollow-node-image-bazel { RETRIES=3 for attempt in $(seq 1 ${RETRIES}); do - if ! bazel run //cluster/images/kubemark:push --define REGISTRY="${FULL_REGISTRY}"; then + if ! bazel run //cluster/images/kubemark:push --define REGISTRY="${FULL_REGISTRY}" --define IMAGE_TAG="${KUBEMARK_IMAGE_TAG}"; then if [[ $((attempt)) -eq "${RETRIES}" ]]; then echo "${color_red}Image push failed. Exiting.${color_norm}" exit 1 @@ -396,6 +400,7 @@ current-context: kubemark-context") sed -i'' -e "s/{{HOLLOW_PROXY_CPU}}/${proxy_cpu}/g" "${RESOURCE_DIRECTORY}/hollow-node.yaml" sed -i'' -e "s/{{HOLLOW_PROXY_MEM}}/${proxy_mem}/g" "${RESOURCE_DIRECTORY}/hollow-node.yaml" sed -i'' -e "s'{{full_registry}}'${FULL_REGISTRY}'g" "${RESOURCE_DIRECTORY}/hollow-node.yaml" + sed -i'' -e "s/{{kubemark_image_tag}}/${KUBEMARK_IMAGE_TAG}/g" "${RESOURCE_DIRECTORY}/hollow-node.yaml" sed -i'' -e "s/{{master_ip}}/${MASTER_IP}/g" "${RESOURCE_DIRECTORY}/hollow-node.yaml" sed -i'' -e "s/{{kubelet_verbosity_level}}/${KUBELET_TEST_LOG_LEVEL}/g" "${RESOURCE_DIRECTORY}/hollow-node.yaml" sed -i'' -e "s/{{kubeproxy_verbosity_level}}/${KUBEPROXY_TEST_LOG_LEVEL}/g" "${RESOURCE_DIRECTORY}/hollow-node.yaml"