Merge pull request #39445 from mikedanese/deb-join

Automatic merge from submit-queue (batch tested with PRs 39311, 39226, 39445)

use debs to build k8s docker images

This puts the binaries in better paths and fixes compatibility issues.
pull/6/head
Kubernetes Submit Queue 2017-01-04 18:25:09 -08:00 committed by GitHub
commit 11402abc71
2 changed files with 66 additions and 17 deletions

View File

@ -2,13 +2,6 @@ package(default_visibility = ["//visibility:public"])
load("@bazel_tools//tools/build_defs/docker:docker.bzl", "docker_build") load("@bazel_tools//tools/build_defs/docker:docker.bzl", "docker_build")
server_binaries = {
"kube-apiserver": "//cmd/kube-apiserver",
"kube-controller-manager": "//cmd/kube-controller-manager",
"kube-scheduler": "//plugin/cmd/kube-scheduler",
"kubernetes-discovery": "//cmd/kubernetes-discovery",
}
docker_build( docker_build(
name = "busybox", name = "busybox",
debs = [ debs = [
@ -40,21 +33,26 @@ docker_build(
) )
[docker_build( [docker_build(
name = name, name = binary,
base = ":busybox-libc", base = ":busybox-libc",
cmd = ["/" + name], cmd = ["/usr/bin/" + binary],
files = [ debs = [
label, "//build/debs:%s.deb" % binary,
], ],
repository = "gcr.io/google-containers", repository = "gcr.io/google-containers",
) for name, label in server_binaries.items()] ) for binary in [
"kube-apiserver",
"kube-controller-manager",
"kube-scheduler",
"kubernetes-discovery",
]]
docker_build( docker_build(
name = "kube-proxy", name = "kube-proxy",
base = ":busybox-net", base = ":busybox-net",
cmd = ["/kube-proxy"], cmd = ["/kube-proxy"],
files = [ debs = [
"//cmd/kube-proxy", "//build/debs:kube-proxy.deb",
], ],
repository = "gcr.io/google-containers", repository = "gcr.io/google-containers",
) )

View File

@ -3,6 +3,11 @@ package(default_visibility = ["//visibility:public"])
load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar", "pkg_deb") load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar", "pkg_deb")
load("@io_kubernetes_build//defs:deb.bzl", "k8s_deb", "deb_data") load("@io_kubernetes_build//defs:deb.bzl", "k8s_deb", "deb_data")
# We do not include kube-scheduler, kube-controller-manager,
# kube-apiserver, and kube-proxy in this list even though we
# produce debs for them. We recommend that they be run in docker
# images. We use the debs that we produce here to build those
# images.
filegroup( filegroup(
name = "debs", name = "debs",
srcs = [ srcs = [
@ -13,11 +18,28 @@ filegroup(
], ],
) )
deb_data( [deb_data(
name = "kubectl", name = binary,
data = [ data = [
{ {
"files": ["//cmd/kubectl"], "files": ["//cmd/" + binary],
"mode": "0755",
"dir": "/usr/bin",
},
],
) for binary in [
"kubectl",
"kube-apiserver",
"kube-controller-manager",
"kube-proxy",
"kubernetes-discovery",
]]
deb_data(
name = "kube-scheduler",
data = [
{
"files": ["//plugin/cmd/kube-scheduler"],
"mode": "0755", "mode": "0755",
"dir": "/usr/bin", "dir": "/usr/bin",
}, },
@ -69,6 +91,35 @@ The Kubernetes command line tool for interacting with the Kubernetes API.
""", """,
) )
k8s_deb(
name = "kube-apiserver",
description = "Kubernetes API Server",
)
k8s_deb(
name = "kube-controller-manager",
description = "Kubernetes Controller Manager",
)
k8s_deb(
name = "kube-scheduler",
description = "Kubernetes Scheduler",
)
k8s_deb(
name = "kube-proxy",
depends = [
"iptables (>= 1.4.21)",
"iproute2",
],
description = "Kubernetes Service Proxy",
)
k8s_deb(
name = "kubernetes-discovery",
description = "Kubernetes Federated API Server",
)
k8s_deb( k8s_deb(
name = "kubelet", name = "kubelet",
depends = [ depends = [