From d2ea7a29ab710f10a0f12a7c2d06cea662b20bf5 Mon Sep 17 00:00:00 2001 From: nikhiljindal Date: Tue, 31 May 2016 17:40:20 -0700 Subject: [PATCH] Add federation controller manager to federation e2es --- build/common.sh | 4 +++ federation/cluster/common.sh | 25 ++++++++++++++- .../federation-apiserver-cluster-service.yaml | 17 ++++++++++ .../federation-apiserver-deployment.yaml | 1 - ...eration-controller-manager-deployment.yaml | 31 +++++++++++++++++++ hack/lib/golang.sh | 1 + 6 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 federation/manifests/federation-apiserver-cluster-service.yaml create mode 100644 federation/manifests/federation-controller-manager-deployment.yaml diff --git a/build/common.sh b/build/common.sh index b9c5a449444..63b52865b39 100755 --- a/build/common.sh +++ b/build/common.sh @@ -99,6 +99,7 @@ kube::build::get_docker_wrapped_binaries() { kube-scheduler,busybox kube-proxy,gcr.io/google_containers/debian-iptables-amd64:v3 federation-apiserver,busybox + federation-controller-manager,busybox );; "arm") local targets=( @@ -107,6 +108,7 @@ kube::build::get_docker_wrapped_binaries() { 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=( @@ -115,6 +117,7 @@ kube::build::get_docker_wrapped_binaries() { 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=( @@ -123,6 +126,7 @@ kube::build::get_docker_wrapped_binaries() { kube-scheduler,ppc64le/busybox kube-proxy,gcr.io/google_containers/debian-iptables-ppc64le:v3 federation-apiserver,ppc64le/busybox + federation-controller-manager,ppc64lebusybox );; esac diff --git a/federation/cluster/common.sh b/federation/cluster/common.sh index 9fb63a06a87..730772c98c4 100644 --- a/federation/cluster/common.sh +++ b/federation/cluster/common.sh @@ -47,6 +47,10 @@ function create-federated-api-objects { 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}/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)}" + export FEDERATION_SERVICE_CIDR=${FEDERATION_SERVICE_CIDR:-"10.10.0.0/24"} #Only used for providers that require a nodeport service (vagrant for now) @@ -104,6 +108,7 @@ function create-federated-api-objects { export FEDERATION_API_KNOWN_TOKENS="${FEDERATION_API_TOKEN},admin,admin" $template "${manifests_root}/federation-apiserver-"{deployment,secrets}".yaml" | $host_kubectl create -f - + $template "${manifests_root}/federation-controller-manager-deployment.yaml" | $host_kubectl create -f - # Don't finish provisioning until federation-apiserver pod is running for i in {1..30};do @@ -123,6 +128,24 @@ function create-federated-api-objects { sleep 4 done + # Verify that federation-controller-manager pod is running. + for i in {1..30};do + #TODO(colhom): in the future this needs to scale out for N pods. This assumes just one pod + phase="$($host_kubectl get -o=jsonpath pods -lapp=federated-cluster,module=federation-controller-manager --template '{.items[*].status.phase}')" + echo "Waiting for federation-controller-manager to be running...(phase= $phase)" + if [[ "$phase" == "Running" ]];then + echo "federation-controller-manager pod is running!" + break + fi + + if [[ $i -eq 30 ]];then + echo "federation-controller-manager pod is not running! giving up." + exit 1 + fi + + sleep 4 + done + CONTEXT=federated-cluster \ KUBE_BEARER_TOKEN="$FEDERATION_API_TOKEN" \ SECONDARY_KUBECONFIG=true \ @@ -137,7 +160,7 @@ function create-federated-api-objects { # FEDERATION_IMAGE_TAG: push all federated images with this tag. Used for ci testing function push-federated-images { : "${FEDERATION_PUSH_REPO_BASE?Must set FEDERATION_PUSH_REPO_BASE env var}" - local FEDERATION_BINARIES=${FEDERATION_BINARIES:-'federation-apiserver'} + local FEDERATION_BINARIES=${FEDERATION_BINARIES:-"federation-apiserver federation-controller-manager"} local imageFolder="${KUBE_ROOT}/_output/${KUBE_BUILD_STAGE}/server/${KUBE_PLATFORM}-${KUBE_ARCH}/kubernetes/server/bin" diff --git a/federation/manifests/federation-apiserver-cluster-service.yaml b/federation/manifests/federation-apiserver-cluster-service.yaml new file mode 100644 index 00000000000..d711394cb81 --- /dev/null +++ b/federation/manifests/federation-apiserver-cluster-service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{.FEDERATION_APISERVER_DEPLOYMENT_NAME}} + namespace: {{.FEDERATION_NAMESPACE}} + labels: + app: federated-cluster +spec: + type: ClusterIP + selector: + app: federated-cluster + module: federation-apiserver + ports: + - name: https + protocol: TCP + port: 443 + targetPort: 443 diff --git a/federation/manifests/federation-apiserver-deployment.yaml b/federation/manifests/federation-apiserver-deployment.yaml index ad5e78dad0c..29a35308f9b 100644 --- a/federation/manifests/federation-apiserver-deployment.yaml +++ b/federation/manifests/federation-apiserver-deployment.yaml @@ -23,7 +23,6 @@ spec: - --service-cluster-ip-range={{.FEDERATION_SERVICE_CIDR}} - --secure-port=443 - --advertise-address={{.FEDERATION_API_HOST}} - - --admission-control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota - --token-auth-file=/srv/kubernetes/known-tokens.csv ports: - containerPort: 443 diff --git a/federation/manifests/federation-controller-manager-deployment.yaml b/federation/manifests/federation-controller-manager-deployment.yaml new file mode 100644 index 00000000000..b12f96c035f --- /dev/null +++ b/federation/manifests/federation-controller-manager-deployment.yaml @@ -0,0 +1,31 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{.FEDERATION_CONTROLLER_MANAGER_DEPLOYMENT_NAME}} + namespace: {{.FEDERATION_NAMESPACE}} + labels: + app: federated-cluster +spec: + template: + metadata: + name: federation-controller-manager + labels: + app: federated-cluster + module: federation-controller-manager + spec: + containers: + - name: controller-manager + image: {{.FEDERATION_CONTROLLER_MANAGER_IMAGE_REPO}}:{{.FEDERATION_CONTROLLER_MANAGER_IMAGE_TAG}} + command: + - /usr/local/bin/federation-controller-manager + - --master={{.FEDERATION_APISERVER_DEPLOYMENT_NAME}}:443 + ports: + - containerPort: 443 + name: https + - containerPort: 8080 + name: local + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh index b8bfabceb83..861a3bb9b91 100755 --- a/hack/lib/golang.sh +++ b/hack/lib/golang.sh @@ -166,6 +166,7 @@ readonly KUBE_STATIC_LIBRARIES=( kube-proxy kubectl federation-apiserver + federation-controller-manager ) kube::golang::is_statically_linked_library() {