Add federation controller manager to federation e2es

This commit is contained in:
nikhiljindal 2016-05-31 17:40:20 -07:00
parent ee412efcef
commit d2ea7a29ab
6 changed files with 77 additions and 2 deletions

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -166,6 +166,7 @@ readonly KUBE_STATIC_LIBRARIES=(
kube-proxy
kubectl
federation-apiserver
federation-controller-manager
)
kube::golang::is_statically_linked_library() {