From caa4a4304eefe2fe9278a005c1bdef9a19fa7339 Mon Sep 17 00:00:00 2001 From: Mike Danese Date: Wed, 2 Nov 2016 18:58:29 -0700 Subject: [PATCH] bazel: build debs for kubelet and kubeadm --- BUILD.bazel | 8 +++ WORKSPACE | 12 ++++ build-tools/debs/BUILD | 105 +++++++++++++++++++++++++++++++ build-tools/debs/kubeadm-10.conf | 7 +++ build-tools/debs/kubelet.service | 12 ++++ 5 files changed, 144 insertions(+) create mode 100644 build-tools/debs/BUILD create mode 100644 build-tools/debs/kubeadm-10.conf create mode 100644 build-tools/debs/kubelet.service diff --git a/BUILD.bazel b/BUILD.bazel index 4e0d6fc62dfdb..46d7af4aba30b 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -3,5 +3,13 @@ package(default_visibility = ["//visibility:public"]) licenses(["notice"]) load("@io_bazel_rules_go//go:def.bzl", "go_prefix") +load("@io_kubernetes_build//defs:build.bzl", "gcs_upload") go_prefix("k8s.io/kubernetes") + +gcs_upload( + name = "ci-artifacts", + data = [ + "//build-tools/debs", + ], +) diff --git a/WORKSPACE b/WORKSPACE index feda40df54ada..1a1e69a57a140 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -4,6 +4,12 @@ git_repository( remote = "https://github.com/bazelbuild/rules_go.git", ) +git_repository( + name = "io_kubernetes_build", + commit = "418b8e976cb32d94fd765c80f2b04e660c5ec4ec", + remote = "https://github.com/kubernetes/release.git", +) + load("@io_bazel_rules_go//go:def.bzl", "go_repositories") go_repositories() @@ -37,3 +43,9 @@ debs = ( sha256 = sha256, url = url, ) for name, sha256, url in debs] + +http_file( + name = "kubernetes_cni", + sha256 = "ddcb7a429f82b284a13bdb36313eeffd997753b6fa5191205f1e978dcfeb0792", + url = " https://storage.googleapis.com/kubernetes-release/network-plugins/cni-amd64-07a8a28637e97b22eb8dfe710eeae1344f69d16e.tar.gz", +) diff --git a/build-tools/debs/BUILD b/build-tools/debs/BUILD new file mode 100644 index 0000000000000..78612e906b60e --- /dev/null +++ b/build-tools/debs/BUILD @@ -0,0 +1,105 @@ +package(default_visibility = ["//visibility:public"]) + +load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar", "pkg_deb") +load("@io_kubernetes_build//defs:deb.bzl", "k8s_deb", "deb_data") + +filegroup( + name = "debs", + srcs = [ + ":kubeadm.deb", + ":kubectl.deb", + ":kubelet.deb", + ":kubernetes-cni.deb", + ], +) + +deb_data( + name = "kubectl", + data = [ + { + "files": ["//cmd/kubectl"], + "mode": "0755", + "dir": "/usr/bin", + }, + ], +) + +deb_data( + name = "kubelet", + data = [ + { + "files": ["//cmd/kubelet"], + "mode": "0755", + "dir": "/usr/bin", + }, + { + "files": ["kubelet.service"], + "mode": "644", + "dir": "/lib/systemd/system", + }, + ], +) + +deb_data( + name = "kubeadm", + data = [ + { + "files": ["//cmd/kubeadm"], + "mode": "0755", + "dir": "/usr/bin", + }, + { + "files": ["kubeadm-10.conf"], + "mode": "644", + "dir": "/etc/systemd/system/kubelet.service.d", + }, + ], +) + +pkg_tar( + name = "kubernetes-cni-data", + package_dir = "/opt/cni", + deps = ["@kubernetes_cni//file"], +) + +k8s_deb( + name = "kubectl", + description = """Kubernetes Command Line Tool +The Kubernetes command line tool for interacting with the Kubernetes API. +""", +) + +k8s_deb( + name = "kubelet", + depends = [ + "iptables (>= 1.4.21)", + "kubernetes-cni (>= 0.3.0.1)", + "iproute2", + "socat", + "util-linux", + "mount", + "ebtables", + "ethtool", + ], + description = """Kubernetes Node Agent +The node agent of Kubernetes, the container cluster manager +""", +) + +k8s_deb( + name = "kubeadm", + depends = [ + "kubelet (>= 1.4.0)", + "kubectl (>= 1.4.0)", + ], + description = """Kubernetes Cluster Bootstrapping Tool +The Kubernetes command line tool for bootstrapping a Kubernetes cluster. +""", +) + +k8s_deb( + name = "kubernetes-cni", + description = """Kubernetes Packaging of CNI +The Container Networking Interface tools for provisioning container networks. +""", +) diff --git a/build-tools/debs/kubeadm-10.conf b/build-tools/debs/kubeadm-10.conf new file mode 100644 index 0000000000000..6b01e374e460b --- /dev/null +++ b/build-tools/debs/kubeadm-10.conf @@ -0,0 +1,7 @@ +[Service] +Environment="KUBELET_KUBECONFIG_ARGS=--kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true" +Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true" +Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin" +Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local" +ExecStart= +ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_EXTRA_ARGS diff --git a/build-tools/debs/kubelet.service b/build-tools/debs/kubelet.service new file mode 100644 index 0000000000000..9712664deaf98 --- /dev/null +++ b/build-tools/debs/kubelet.service @@ -0,0 +1,12 @@ +[Unit] +Description=kubelet: The Kubernetes Node Agent +Documentation=http://kubernetes.io/docs/ + +[Service] +ExecStart=/usr/bin/kubelet +Restart=always +StartLimitInterval=0 +RestartSec=10 + +[Install] +WantedBy=multi-user.target