From 31f5525f439f4dbf33c3715b56c8485c99658212 Mon Sep 17 00:00:00 2001 From: "Madhusudan.C.S" Date: Mon, 1 Aug 2016 23:54:09 -0700 Subject: [PATCH] Revert "[Federation] Downsize the release binary distribution." --- build/common.sh | 10 +++ federation/cluster/common.sh | 83 +++++++++---------- .../federation-apiserver-deployment.yaml | 3 +- ...eration-controller-manager-deployment.yaml | 3 +- hack/lib/golang.sh | 5 +- hack/lib/util.sh | 5 -- 6 files changed, 54 insertions(+), 55 deletions(-) diff --git a/build/common.sh b/build/common.sh index 5407818b09d..b70bf1b6d8d 100755 --- a/build/common.sh +++ b/build/common.sh @@ -97,6 +97,8 @@ kube::build::get_docker_wrapped_binaries() { kube-controller-manager,busybox kube-scheduler,busybox kube-proxy,gcr.io/google_containers/debian-iptables-amd64:v3 + federation-apiserver,busybox + federation-controller-manager,busybox );; "arm") local targets=( @@ -104,6 +106,8 @@ kube::build::get_docker_wrapped_binaries() { kube-controller-manager,armel/busybox kube-scheduler,armel/busybox kube-proxy,gcr.io/google_containers/debian-iptables-arm:v3 + federation-apiserver,armel/busybox + federation-controller-manager,armel/busybox );; "arm64") local targets=( @@ -111,6 +115,8 @@ kube::build::get_docker_wrapped_binaries() { kube-controller-manager,aarch64/busybox kube-scheduler,aarch64/busybox kube-proxy,gcr.io/google_containers/debian-iptables-arm64:v3 + federation-apiserver,aarch64/busybox + federation-controller-manager,aarch64/busybox );; "ppc64le") local targets=( @@ -118,6 +124,8 @@ kube::build::get_docker_wrapped_binaries() { kube-controller-manager,ppc64le/busybox kube-scheduler,ppc64le/busybox kube-proxy,gcr.io/google_containers/debian-iptables-ppc64le:v3 + federation-apiserver,ppc64le/busybox + federation-controller-manager,ppc64le/busybox );; esac @@ -1542,6 +1550,8 @@ function kube::release::docker::release() { "kube-scheduler" "kube-proxy" "hyperkube" + "federation-apiserver" + "federation-controller-manager" ) local docker_push_cmd=("${DOCKER[@]}") diff --git a/federation/cluster/common.sh b/federation/cluster/common.sh index 6c685b1b5da..e93fa9757f3 100644 --- a/federation/cluster/common.sh +++ b/federation/cluster/common.sh @@ -52,7 +52,6 @@ KUBE_PLATFORM=${KUBE_PLATFORM:-linux} KUBE_ARCH=${KUBE_ARCH:-amd64} KUBE_BUILD_STAGE=${KUBE_BUILD_STAGE:-release-stage} -source "${KUBE_ROOT}/build/common.sh" source "${KUBE_ROOT}/cluster/common.sh" source "${KUBE_ROOT}/hack/lib/util.sh" @@ -67,11 +66,11 @@ function create-federation-api-objects { ( : "${FEDERATION_PUSH_REPO_BASE?Must set FEDERATION_PUSH_REPO_BASE env var}" export FEDERATION_APISERVER_DEPLOYMENT_NAME="federation-apiserver" - export FEDERATION_APISERVER_IMAGE_REPO="${FEDERATION_PUSH_REPO_BASE}/hyperkube" + export FEDERATION_APISERVER_IMAGE_REPO="${FEDERATION_PUSH_REPO_BASE}/federation-apiserver" export FEDERATION_APISERVER_IMAGE_TAG="${FEDERATION_IMAGE_TAG:-$(cat ${KUBE_ROOT}/_output/${KUBE_BUILD_STAGE}/server/${KUBE_PLATFORM}-${KUBE_ARCH}/kubernetes/server/bin/federation-apiserver.docker_tag)}" export FEDERATION_CONTROLLER_MANAGER_DEPLOYMENT_NAME="federation-controller-manager" - export FEDERATION_CONTROLLER_MANAGER_IMAGE_REPO="${FEDERATION_PUSH_REPO_BASE}/hyperkube" + export FEDERATION_CONTROLLER_MANAGER_IMAGE_REPO="${FEDERATION_PUSH_REPO_BASE}/federation-controller-manager" export FEDERATION_CONTROLLER_MANAGER_IMAGE_TAG="${FEDERATION_IMAGE_TAG:-$(cat ${KUBE_ROOT}/_output/${KUBE_BUILD_STAGE}/server/${KUBE_PLATFORM}-${KUBE_ARCH}/kubernetes/server/bin/federation-controller-manager.docker_tag)}" if [[ -z "${FEDERATION_DNS_PROVIDER:-}" ]]; then @@ -225,64 +224,58 @@ function create-federation-api-objects { # Required # FEDERATION_PUSH_REPO_BASE: the docker repo where federated images will be pushed -# FEDERATION_IMAGE_TAG: the tag of the image to be pushed + +# Optional +# FEDERATION_IMAGE_TAG: push all federated images with this tag. Used for ci testing function push-federation-images { : "${FEDERATION_PUSH_REPO_BASE?Must set FEDERATION_PUSH_REPO_BASE env var}" - : "${FEDERATION_IMAGE_TAG?Must set FEDERATION_IMAGE_TAG env var}" - local FEDERATION_BINARIES=${FEDERATION_BINARIES:-"hyperkube"} + local FEDERATION_BINARIES=${FEDERATION_BINARIES:-"federation-apiserver federation-controller-manager"} - local bin_dir="${KUBE_ROOT}/_output/${KUBE_BUILD_STAGE}/server/${KUBE_PLATFORM}-${KUBE_ARCH}/kubernetes/server/bin" + local imageFolder="${KUBE_ROOT}/_output/${KUBE_BUILD_STAGE}/server/${KUBE_PLATFORM}-${KUBE_ARCH}/kubernetes/server/bin" - if [[ ! -d "${bin_dir}" ]];then - echo "${bin_dir} does not exist! Run make quick-release or make release" - exit 1 + if [[ ! -d "$imageFolder" ]];then + echo "${imageFolder} does not exist! Run make quick-release or make release" + exit 1 fi - for binary in ${FEDERATION_BINARIES}; do - local bin_path="${bin_dir}/${binary}" + for binary in $FEDERATION_BINARIES;do + local imageFile="${imageFolder}/${binary}.tar" - if [[ ! -f "${bin_path}" ]]; then - echo "${bin_path} does not exist!" - exit 1 - fi + if [[ ! -f "$imageFile" ]];then + echo "${imageFile} does not exist!" + exit 1 + fi - local docker_build_path="${bin_path}.dockerbuild" - local docker_file_path="${docker_build_path}/Dockerfile" + echo "Load: ${imageFile}" + # Load the image. Trust we know what it's called, as docker load provides no help there :( + docker load < "${imageFile}" - rm -rf ${docker_build_path} - mkdir -p ${docker_build_path} + local srcImageTag="$(cat ${imageFolder}/${binary}.docker_tag)" + local dstImageTag="${FEDERATION_IMAGE_TAG:-$srcImageTag}" + local srcImageName="${FEDERATION_IMAGE_REPO_BASE}/${binary}:${srcImageTag}" + local dstImageName="${FEDERATION_PUSH_REPO_BASE}/${binary}:${dstImageTag}" - ln "${bin_path}" "${docker_build_path}/${binary}" - printf " FROM busybox \n ADD ${binary} /usr/local/bin/${binary}\n" > ${docker_file_path} + echo "Tag: ${srcImageName} --> ${dstImageName}" + docker tag -f "$srcImageName" "$dstImageName" - local docker_image_tag="${FEDERATION_PUSH_REPO_BASE}/${binary}:${FEDERATION_IMAGE_TAG}" + echo "Push: $dstImageName" + if [[ "${FEDERATION_PUSH_REPO_BASE}" == "gcr.io/"* ]];then + echo " -> GCR repository detected. Using gcloud" + gcloud docker push "$dstImageName" + else + docker push "$dstImageName" + fi - # Build the docker image on-the-fly. - # - # NOTE: This is only a temporary fix until the proposal in issue - # https://github.com/kubernetes/kubernetes/issues/28630 is implemented. - # Also, the new turn up mechanism completely obviates this step. - # - # TODO(madhusudancs): Remove this code when the new turn up mechanism work - # is merged. - kube::log::status "Building docker image ${docker_image_tag} from the binary" - docker build -q -t "${docker_image_tag}" ${docker_build_path} >/dev/null + echo "Remove: $srcImageName" + docker rmi "$srcImageName" - rm -rf ${docker_build_path} + if [[ "$srcImageName" != "dstImageName" ]];then + echo "Remove: $dstImageName" + docker rmi "$dstImageName" + fi - kube::log::status "Pushing ${docker_image_tag}" - if [[ "${FEDERATION_PUSH_REPO_BASE}" == "gcr.io/"* ]]; then - echo " -> GCR repository detected. Using gcloud" - gcloud docker push "${docker_image_tag}" - else - docker push "${docker_image_tag}" - fi - - kube::log::status "Deleting docker image ${docker_image_tag}" - docker rmi "${docker_image_tag}" 2>/dev/null || true done } - function cleanup-federation-api-objects { # Delete all resources with the federated-cluster label. $host_kubectl delete pods,svc,rc,deployment,secret -lapp=federated-cluster diff --git a/federation/manifests/federation-apiserver-deployment.yaml b/federation/manifests/federation-apiserver-deployment.yaml index 7c86485a291..1b21dbb999b 100644 --- a/federation/manifests/federation-apiserver-deployment.yaml +++ b/federation/manifests/federation-apiserver-deployment.yaml @@ -17,8 +17,7 @@ spec: - name: apiserver image: {{.FEDERATION_APISERVER_IMAGE_REPO}}:{{.FEDERATION_APISERVER_IMAGE_TAG}} command: - - /usr/local/bin/hyperkube - - federation-apiserver + - /usr/local/bin/federation-apiserver - --bind-address=0.0.0.0 - --etcd-servers=http://localhost:2379 - --service-cluster-ip-range={{.FEDERATION_SERVICE_CIDR}} diff --git a/federation/manifests/federation-controller-manager-deployment.yaml b/federation/manifests/federation-controller-manager-deployment.yaml index 410936c0ce2..85a50b34751 100644 --- a/federation/manifests/federation-controller-manager-deployment.yaml +++ b/federation/manifests/federation-controller-manager-deployment.yaml @@ -25,8 +25,7 @@ spec: mountPath: /etc/ssl/certs image: {{.FEDERATION_CONTROLLER_MANAGER_IMAGE_REPO}}:{{.FEDERATION_CONTROLLER_MANAGER_IMAGE_TAG}} command: - - /usr/local/bin/hyperkube - - federation-controller-manager + - /usr/local/bin/federation-controller-manager - --master=https://{{.FEDERATION_APISERVER_DEPLOYMENT_NAME}}:443 - --dns-provider={{.FEDERATION_DNS_PROVIDER}} - --dns-provider-config={{.FEDERATION_DNS_PROVIDER_CONFIG}} diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh index 2c6193f891b..f0397b5c542 100755 --- a/hack/lib/golang.sh +++ b/hack/lib/golang.sh @@ -37,6 +37,8 @@ kube::golang::server_targets() { cmd/kubelet cmd/kubemark cmd/hyperkube + federation/cmd/federation-apiserver + federation/cmd/federation-controller-manager plugin/cmd/kube-scheduler ) if [ -n "${KUBERNETES_CONTRIB:-}" ]; then @@ -167,7 +169,8 @@ readonly KUBE_STATIC_LIBRARIES=( kube-scheduler kube-proxy kubectl - hyperkube + federation-apiserver + federation-controller-manager ) kube::golang::is_statically_linked_library() { diff --git a/hack/lib/util.sh b/hack/lib/util.sh index c790c98a348..cd6db72bfb5 100755 --- a/hack/lib/util.sh +++ b/hack/lib/util.sh @@ -197,13 +197,8 @@ kube::util::gen-docs() { "${genkubedocs}" "${dest}/docs/admin/" "kube-proxy" "${genkubedocs}" "${dest}/docs/admin/" "kube-scheduler" "${genkubedocs}" "${dest}/docs/admin/" "kubelet" - - # We don't really need federation-apiserver and federation-controller-manager - # binaries to generate the docs. We just pass their names to decide which docs - # to generate. The actual binary for running federation is hyperkube. "${genfeddocs}" "${dest}/docs/admin/" "federation-apiserver" "${genfeddocs}" "${dest}/docs/admin/" "federation-controller-manager" - mkdir -p "${dest}/docs/man/man1/" "${genman}" "${dest}/docs/man/man1/" mkdir -p "${dest}/docs/yaml/kubectl/"