mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Grab different etcd versions in etcd image.
This commit is contained in:
		@@ -16,4 +16,5 @@ FROM BASEIMAGE
 | 
			
		||||
MAINTAINER Dawn Chen <dawnchen@google.com>
 | 
			
		||||
 | 
			
		||||
EXPOSE 2379 2380 4001 7001
 | 
			
		||||
COPY etcd etcdctl migrate-if-needed.sh attachlease /usr/local/bin/
 | 
			
		||||
COPY etcd* etcdctl* /usr/local/bin/
 | 
			
		||||
COPY migrate-if-needed.sh attachlease /usr/local/bin/
 | 
			
		||||
 
 | 
			
		||||
@@ -15,10 +15,19 @@
 | 
			
		||||
# Build the etcd image
 | 
			
		||||
#
 | 
			
		||||
# Usage:
 | 
			
		||||
# 	[TAG=3.0.4] [REGISTRY=gcr.io/google_containers] [ARCH=amd64] [BASEIMAGE=busybox] make (build|push)
 | 
			
		||||
# 	[TAGS=2.2.1 2.3.7 3.0.10] [REGISTRY=gcr.io/google_containers] [ARCH=amd64] [BASEIMAGE=busybox] make (build|push)
 | 
			
		||||
 | 
			
		||||
TAG?=3.0.4
 | 
			
		||||
REGISTRY_TAG?=$(TAG)
 | 
			
		||||
# The image contains different etcd versions to simplify
 | 
			
		||||
# upgrades. Thus be careful when removing any tag from here.
 | 
			
		||||
#
 | 
			
		||||
# NOTE: The etcd upgrade rules are that you can upgrade only 1 minor
 | 
			
		||||
# version at a time, and patch release don't matter.
 | 
			
		||||
#
 | 
			
		||||
# Except from etcd-$(tag) and etcdctl-$(tag) binaries, we also
 | 
			
		||||
# need etcd and etcdctl binaries for backward compatibility reasons.
 | 
			
		||||
# That binary will be set to the last tag from $(TAGS).
 | 
			
		||||
TAGS?=2.2.1 2.3.7 3.0.10
 | 
			
		||||
REGISTRY_TAG?=3.0.10
 | 
			
		||||
ARCH?=amd64
 | 
			
		||||
REGISTRY?=gcr.io/google_containers
 | 
			
		||||
GOLANG_VERSION?=1.6.3
 | 
			
		||||
@@ -50,16 +59,30 @@ build:
 | 
			
		||||
ifeq ($(ARCH),amd64)
 | 
			
		||||
 | 
			
		||||
	# Do not compile if we should make an image for amd64, use the official etcd binaries instead
 | 
			
		||||
	curl -sSL --retry 5 https://github.com/coreos/etcd/releases/download/v$(TAG)/etcd-v$(TAG)-linux-amd64.tar.gz | tar -xz -C $(TEMP_DIR) --strip-components=1
 | 
			
		||||
	# For each release create a tmp dir 'etcd_release_tmp_dir' and unpack the release tar there.
 | 
			
		||||
	for tag in $(TAGS); do \
 | 
			
		||||
		etcd_release_tmp_dir=$(shell mktemp -d); \
 | 
			
		||||
		curl -sSL --retry 5 https://github.com/coreos/etcd/releases/download/v$$tag/etcd-v$$tag-linux-amd64.tar.gz | tar -xz -C $$etcd_release_tmp_dir --strip-components=1; \
 | 
			
		||||
		cp $$etcd_release_tmp_dir/etcd $$etcd_release_tmp_dir/etcdctl $(TEMP_DIR)/; \
 | 
			
		||||
		cp $(TEMP_DIR)/etcd $(TEMP_DIR)/etcd-$$tag; \
 | 
			
		||||
		cp $(TEMP_DIR)/etcdctl $(TEMP_DIR)/etcdctl-$$tag; \
 | 
			
		||||
	done
 | 
			
		||||
else
 | 
			
		||||
	
 | 
			
		||||
	# Download etcd in a golang container and cross-compile it statically
 | 
			
		||||
	docker run -it -v $(TEMP_DIR):/etcdbin golang:$(GOLANG_VERSION) /bin/bash -c \
 | 
			
		||||
	# For each release create a tmp dir 'etcd_release_tmp_dir' and unpack the release tar there.
 | 
			
		||||
	for tag in $(TAGS); do \
 | 
			
		||||
		etcd_release_tmp_dir=$(shell mktemp -d); \
 | 
			
		||||
		docker run -it -v $$etcd_release_tmp_dir:/etcdbin golang:$(GOLANG_VERSION) /bin/bash -c \
 | 
			
		||||
			"git clone https://github.com/coreos/etcd /go/src/github.com/coreos/etcd \
 | 
			
		||||
			&& cd /go/src/github.com/coreos/etcd \
 | 
			
		||||
		&& git checkout v$(TAG) \
 | 
			
		||||
			&& git checkout v$$tag \
 | 
			
		||||
			&& GOARM=$(GOARM) GOARCH=$(ARCH) ./build \
 | 
			
		||||
		&& cp -f bin/$(ARCH)/etcd* bin/etcd* /etcdbin; echo 'done'"
 | 
			
		||||
			&& cp -f bin/$(ARCH)/etcd* bin/etcd* /etcdbin; echo 'done'"; \
 | 
			
		||||
		cp $$etcd_release_tmp_dir/etcd $$etcd_release_tmp_dir/etcdctl $(TEMP_DIR)/; \
 | 
			
		||||
		cp $(TEMP_DIR)/etcd $(TEMP_DIR)/etcd-$$tag; \
 | 
			
		||||
		cp $(TEMP_DIR)/etcdctl $(TEMP_DIR)/etcdctl-$$tag; \
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
	# Add this ENV variable in order to workaround an unsupported arch blocker
 | 
			
		||||
	# The multiarch feature is in an limited and experimental state right now, and etcd should work fine on arm64
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user