From f3b0aa012469d54905db93b5fc14b47fb6581e93 Mon Sep 17 00:00:00 2001 From: Aric Renzo Date: Thu, 25 May 2017 15:11:11 -0400 Subject: [PATCH] enable or diable image prefetching --- .gitignore | 2 ++ Dockerfile.genesis | 2 +- Dockerfile.join | 2 +- Makefile | 23 ++++++++++++++++++++--- scripts/entrypoint-genesis.sh | 6 +++++- 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 6f122c39..ee43dbe0 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ /helm /kubelet /linux-amd64 +/genesis_image_cache/ +/join_image_cache/ diff --git a/Dockerfile.genesis b/Dockerfile.genesis index 6b1f0871..740850d6 100644 --- a/Dockerfile.genesis +++ b/Dockerfile.genesis @@ -29,7 +29,7 @@ WORKDIR /promenade ENTRYPOINT /promenade/scripts/entrypoint.sh -COPY genesis-images.tar cni.tgz helm kubelet /promenade/ +COPY genesis_image_cache/* cni.tgz helm kubelet /promenade/ COPY kubelet.service.template /promenade/ COPY env.sh scripts/common/* /promenade/scripts/ diff --git a/Dockerfile.join b/Dockerfile.join index 0f8850e4..3e1e644b 100644 --- a/Dockerfile.join +++ b/Dockerfile.join @@ -29,7 +29,7 @@ WORKDIR /promenade ENTRYPOINT /promenade/scripts/entrypoint.sh -COPY join-images.tar cni.tgz kubelet /promenade/ +COPY join_image_cache/* cni.tgz kubelet /promenade/ COPY kubelet.service.template /promenade/ COPY env.sh scripts/common/* /promenade/scripts/ diff --git a/Makefile b/Makefile index ec507e70..8e19387f 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,9 @@ GENESIS_REPO := promenade-genesis JOIN_REPO := promenade-join TAG := dev +#PreFetch Images for Offline deployment +PREFETCH_IMAGES := true + GENESIS_IMAGES := \ gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1 \ gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1 \ @@ -72,8 +75,14 @@ save: save-genesis save-join genesis: build-genesis +ifeq ($(PREFETCH_IMAGES), true) build-genesis: Dockerfile.genesis cni.tgz env.sh helm genesis-images.tar kubelet kubelet.service.template sudo docker build -f Dockerfile.genesis -t $(NAMESPACE)/$(GENESIS_REPO):$(TAG) . +else +build-genesis: Dockerfile.genesis cni.tgz env.sh helm kubelet kubelet.service.template + sudo docker build -f Dockerfile.genesis -t $(NAMESPACE)/$(GENESIS_REPO):$(TAG) . +endif + push-genesis: build-genesis sudo docker push $(NAMESPACE)/$(GENESIS_REPO):$(TAG) @@ -84,9 +93,13 @@ save-genesis: build-genesis join: build-join +ifeq ($(PREFETCH_IMAGES), true) build-join: Dockerfile.join join-images.tar kubelet.service.template sudo docker build -f Dockerfile.join -t $(NAMESPACE)/$(JOIN_REPO):$(TAG) . - +else +build-join: Dockerfile.join kubelet.service.template + sudo docker build -f Dockerfile.join -t $(NAMESPACE)/$(JOIN_REPO):$(TAG) . +endif push-join: build-join sudo docker push $(NAMESPACE)/$(JOIN_REPO):$(TAG) @@ -115,13 +128,15 @@ genesis-images.tar: for IMAGE in $(GENESIS_IMAGES); do \ sudo docker pull $$IMAGE; \ done - sudo docker save -o genesis-images.tar $(GENESIS_IMAGES) + mkdir genesis_image_cache + sudo docker save -o genesis_image_cache/genesis-images.tar $(GENESIS_IMAGES) join-images.tar: for IMAGE in $(JOIN_IMAGES); do \ sudo docker pull $$IMAGE; \ done - sudo docker save -o join-images.tar $(JOIN_IMAGES) + mkdir join_image_cache + sudo docker save -o join_image_cache/join-images.tar $(JOIN_IMAGES) kubelet: curl -LO http://storage.googleapis.com/kubernetes-release/release/$(KUBERNETES_VERSION)/bin/linux/amd64/kubelet @@ -136,6 +151,8 @@ clean: helm.tgz \ kubelet \ linux-amd64 \ + genesis_image_cache \ + join_image_cache \ .PHONY : build build-genesis build-join clean genesis join push push-genesis push-join diff --git a/scripts/entrypoint-genesis.sh b/scripts/entrypoint-genesis.sh index c45ab7d9..522132dd 100755 --- a/scripts/entrypoint-genesis.sh +++ b/scripts/entrypoint-genesis.sh @@ -22,7 +22,11 @@ source ./scripts/func.sh validate_environment # XXX validate_genesis_assets -docker load -i ./genesis-images.tar +if [ -f "genesis_image_cache/genesis-images.tar" ]; then + docker load -i ./genesis-images.tar +else + echo "Image Cache Not Found.. Skipping." +fi install_assets install_cni