一、 背景
本文在博客 http://blog.csdn.net/shida_csdn/article/details/78415946 实现 Kubernetes 源码编译基础上,
进一步实现将可执行程序编译生成 RPM 安装程序。
二、 实现步骤
2.1 下载打包程序源码
# git clone https://github.com/kubernetes/release.git
2.2 替换文件
将上篇博客中 Kubernetes 源码编译生成的文件 _output/kubernetes-server-linux-amd64.tar.gz 解压,提取 server/bin/ 文件夹下的kubeadm、kubectl、kubelet 文件,替换打包程序 release/rpm/ 下的对应文件。
2.3 修改源码
编辑 release/rpm/kubelet.spec 文件
将文件头版本号设置为正确版本号,例如我编译的是 1.7.9 版本,修改为:
%global KUBE_MAJOR 1
%global KUBE_MINOR 7
%global KUBE_PATCH 9
%global KUBE_VERSION %{KUBE_MAJOR}.%{KUBE_MINOR}.%{KUBE_PATCH}
修改Source资源配置为使用本地文件,不从网络下载
Source0: kubelet
Source2: kubectl
Source3: kubeadm
Source5: cni-amd64-0799f5732f2a11b329d9e3d51b9c8f2e3759f2ff.tar.gz
2.4 导入镜像
# docker pull golang:1.7
# docker pull fedora:24
2.5 编译 RPM
进入 release/rpm 目录,执行编译命令
# ./docker-build.sh
2.6 编译好的 RPM 软件包位于 release/rpm/output/ 里