Change-Id: If415a9a66cd88defc907c6611fed5c02c49b13c7
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/3400
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Bo Gan <ganb@vmware.com>
| ... | ... |
@@ -401,6 +401,7 @@ photon-docker-image: |
| 401 | 401 |
k8s-docker-images: |
| 402 | 402 |
systemctl start docker && \ |
| 403 | 403 |
cd ./support/dockerfiles/k8s-docker-images && \ |
| 404 |
+ ./build-k8s-docker-images.sh $(PHOTON_DIST_TAG) $(PHOTON_RELEASE_VERSION) $(PHOTON_SPECS_DIR) $(PHOTON_STAGE) && \ |
|
| 404 | 405 |
./build-k8s-dns-docker-images.sh $(PHOTON_DIST_TAG) $(PHOTON_RELEASE_VERSION) $(PHOTON_SPECS_DIR) $(PHOTON_STAGE) && \ |
| 405 | 406 |
./build-k8s-dashboard-docker-images.sh $(PHOTON_DIST_TAG) $(PHOTON_RELEASE_VERSION) $(PHOTON_SPECS_DIR) $(PHOTON_STAGE) |
| 406 | 407 |
|
| ... | ... |
@@ -1,7 +1,7 @@ |
| 1 | 1 |
Summary: Kubernetes cluster management |
| 2 | 2 |
Name: kubernetes |
| 3 | 3 |
Version: 1.7.0 |
| 4 |
-Release: 1%{?dist}
|
|
| 4 |
+Release: 2%{?dist}
|
|
| 5 | 5 |
License: ASL 2.0 |
| 6 | 6 |
URL: https://github.com/kubernetes/kubernetes/archive/v%{version}.tar.gz
|
| 7 | 7 |
Source0: kubernetes-v%{version}.tar.gz
|
| ... | ... |
@@ -22,11 +22,19 @@ Requires: iptables |
| 22 | 22 |
Requires: iproute2 |
| 23 | 23 |
Requires: shadow |
| 24 | 24 |
Requires: socat |
| 25 |
+Requires: systemd |
|
| 25 | 26 |
Requires: util-linux |
| 26 | 27 |
|
| 27 | 28 |
%description |
| 28 | 29 |
Kubernetes is an open source implementation of container cluster management. |
| 29 | 30 |
|
| 31 |
+%package kubeadm |
|
| 32 |
+Summary: kubeadm deployment tool |
|
| 33 |
+Group: Development/Tools |
|
| 34 |
+Requires: %{name} = %{version}
|
|
| 35 |
+%description kubeadm |
|
| 36 |
+kubeadm is a tool that enables quick and easy deployment of a kubernetes cluster. |
|
| 37 |
+ |
|
| 30 | 38 |
%prep -p exit |
| 31 | 39 |
%setup -qn %{name}-%{version}
|
| 32 | 40 |
cd .. |
| ... | ... |
@@ -41,12 +49,19 @@ make |
| 41 | 41 |
install -vdm644 %{buildroot}/etc/profile.d
|
| 42 | 42 |
install -m 755 -d %{buildroot}%{_bindir}
|
| 43 | 43 |
|
| 44 |
-binaries=(cloud-controller-manager hyperkube kubeadm kube-aggregator kube-apiserver kube-controller-manager kubelet kube-proxy kube-scheduler kubectl kubefed) |
|
| 44 |
+binaries=(cloud-controller-manager hyperkube kube-aggregator kube-apiserver kube-controller-manager kubelet kube-proxy kube-scheduler kubectl kubefed) |
|
| 45 | 45 |
for bin in "${binaries[@]}"; do
|
| 46 | 46 |
echo "+++ INSTALLING ${bin}"
|
| 47 | 47 |
install -p -m 755 -t %{buildroot}%{_bindir} _output/local/bin/linux/amd64/${bin}
|
| 48 | 48 |
done |
| 49 | 49 |
|
| 50 |
+# kubeadm install |
|
| 51 |
+install -vdm644 %{buildroot}/etc/systemd/system/kubelet.service.d
|
|
| 52 |
+install -p -m 755 -t %{buildroot}%{_bindir} _output/local/bin/linux/amd64/kubeadm
|
|
| 53 |
+install -p -m 755 -t %{buildroot}/etc/systemd/system build/rpms/kubelet.service
|
|
| 54 |
+install -p -m 755 -t %{buildroot}/etc/systemd/system/kubelet.service.d build/rpms/10-kubeadm.conf
|
|
| 55 |
+sed -i '/KUBELET_CGROUP_ARGS=--cgroup-driver=systemd/d' %{buildroot}/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
|
|
| 56 |
+ |
|
| 50 | 57 |
cd .. |
| 51 | 58 |
# install config files |
| 52 | 59 |
install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}
|
| ... | ... |
@@ -84,17 +99,44 @@ fi |
| 84 | 84 |
%post |
| 85 | 85 |
chown -R kube:kube /var/lib/kubelet |
| 86 | 86 |
chown -R kube:kube /var/run/kubernetes |
| 87 |
+systemctl daemon-reload |
|
| 88 |
+ |
|
| 89 |
+%post kubeadm |
|
| 90 |
+systemctl daemon-reload |
|
| 91 |
+systemctl stop kubelet |
|
| 92 |
+systemctl enable docker kubelet |
|
| 93 |
+systemctl start docker |
|
| 94 |
+ |
|
| 95 |
+%preun kubeadm |
|
| 96 |
+if [ $1 -eq 0 ]; then |
|
| 97 |
+ systemctl stop kubelet |
|
| 98 |
+fi |
|
| 87 | 99 |
|
| 88 | 100 |
%postun |
| 89 | 101 |
if [ $1 -eq 0 ]; then |
| 90 | 102 |
# Package deletion |
| 91 | 103 |
userdel kube |
| 92 | 104 |
groupdel kube |
| 105 |
+ systemctl daemon-reload |
|
| 106 |
+fi |
|
| 107 |
+ |
|
| 108 |
+%postun kubeadm |
|
| 109 |
+if [ $1 -eq 0 ]; then |
|
| 110 |
+ systemctl daemon-reload |
|
| 93 | 111 |
fi |
| 94 | 112 |
|
| 95 | 113 |
%files |
| 96 | 114 |
%defattr(-,root,root) |
| 97 |
-%{_bindir}/*
|
|
| 115 |
+%{_bindir}/cloud-controller-manager
|
|
| 116 |
+%{_bindir}/hyperkube
|
|
| 117 |
+%{_bindir}/kube-aggregator
|
|
| 118 |
+%{_bindir}/kube-apiserver
|
|
| 119 |
+%{_bindir}/kube-controller-manager
|
|
| 120 |
+%{_bindir}/kubelet
|
|
| 121 |
+%{_bindir}/kube-proxy
|
|
| 122 |
+%{_bindir}/kube-scheduler
|
|
| 123 |
+%{_bindir}/kubectl
|
|
| 124 |
+%{_bindir}/kubefed
|
|
| 98 | 125 |
%{_lib}/systemd/system/kube-apiserver.service
|
| 99 | 126 |
%{_lib}/systemd/system/kubelet.service
|
| 100 | 127 |
%{_lib}/systemd/system/kube-scheduler.service
|
| ... | ... |
@@ -111,7 +153,15 @@ fi |
| 111 | 111 |
%config(noreplace) %{_sysconfdir}/%{name}/kubelet
|
| 112 | 112 |
%config(noreplace) %{_sysconfdir}/%{name}/scheduler
|
| 113 | 113 |
|
| 114 |
+%files kubeadm |
|
| 115 |
+%defattr(-,root,root) |
|
| 116 |
+%{_bindir}/kubeadm
|
|
| 117 |
+/etc/systemd/system/kubelet.service |
|
| 118 |
+/etc/systemd/system/kubelet.service.d/10-kubeadm.conf |
|
| 119 |
+ |
|
| 114 | 120 |
%changelog |
| 121 |
+* Sat Aug 02 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.0-2 |
|
| 122 |
+- Split kubeadm into its own pkg. |
|
| 115 | 123 |
* Fri Jul 14 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.0-1 |
| 116 | 124 |
- Upgrade kubernetes to v1.7.0. |
| 117 | 125 |
* Tue May 09 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.6.0-3 |
| 0 | 9 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,11 @@ |
| 0 |
+# Photon Base Build Container |
|
| 1 |
+ |
|
| 2 |
+FROM vmware/photon:1.0 |
|
| 3 |
+ |
|
| 4 |
+MAINTAINER kulkarniv@vmware.com |
|
| 5 |
+ |
|
| 6 |
+RUN tdnf install -y ebtables iptables iproute2 shadow socat |
|
| 7 |
+ADD tmp/k8s/usr/bin/kube-proxy /usr/bin/kube-proxy |
|
| 8 |
+RUN ln -s /usr/bin/kube-proxy /usr/local/bin/kube-proxy |
|
| 9 |
+ |
|
| 10 |
+CMD ["/usr/bin/kube-proxy"] |
| ... | ... |
@@ -13,7 +13,7 @@ K8S_DASH_VER=`cat ${SPEC_DIR}/kubernetes-dashboard/kubernetes-dashboard.spec | g
|
| 13 | 13 |
K8S_DASH_VER_REL=${K8S_DASH_VER}-`cat ${SPEC_DIR}/kubernetes-dashboard/kubernetes-dashboard.spec | grep Release | cut -d: -f2 | tr -d ' ' | cut -d% -f1`
|
| 14 | 14 |
K8S_DASH_RPM=kubernetes-dashboard-${K8S_DASH_VER_REL}${DIST_TAG}.${ARCH}.rpm
|
| 15 | 15 |
K8S_DASH_RPM_FILE=${STAGE_DIR}/RPMS/x86_64/${K8S_DASH_RPM}
|
| 16 |
-K8S_DASH_TAR=k8s-dashboard.tar |
|
| 16 |
+K8S_DASH_TAR=kubernetes-dashboard.tar |
|
| 17 | 17 |
|
| 18 | 18 |
if [ ! -f ${K8S_DASH_RPM_FILE} ]
|
| 19 | 19 |
then |
| ... | ... |
@@ -21,7 +21,7 @@ then |
| 21 | 21 |
exit 1 |
| 22 | 22 |
fi |
| 23 | 23 |
|
| 24 |
-IMG_NAME=vmware/k8s-dashboard-${DIST_VER}:v${K8S_DASH_VER}
|
|
| 24 |
+IMG_NAME=vmware_photon/kubernetes-dashboard-amd64:v${K8S_DASH_VER}
|
|
| 25 | 25 |
|
| 26 | 26 |
IMG_ID=`docker images -q ${IMG_NAME} 2> /dev/null`
|
| 27 | 27 |
if [[ ! -z "${IMG_ID}" ]]; then
|
| ... | ... |
@@ -22,7 +22,7 @@ then |
| 22 | 22 |
fi |
| 23 | 23 |
|
| 24 | 24 |
for K8S_BIN in ${K8S_DNS_BINS[*]}; do
|
| 25 |
- IMG_NAME=vmware/k8s-dns-${K8S_BIN}-${DIST_VER}:v${K8S_DNS_VER}
|
|
| 25 |
+ IMG_NAME=vmware_photon/k8s-dns-${K8S_BIN}-amd64:${K8S_DNS_VER}
|
|
| 26 | 26 |
IMG_ID=`docker images -q ${IMG_NAME} 2> /dev/null`
|
| 27 | 27 |
if [[ ! -z "${IMG_ID}" ]]; then
|
| 28 | 28 |
echo "Removing image ${IMG_NAME}"
|
| ... | ... |
@@ -37,7 +37,7 @@ rpm2cpio ${K8S_DNS_RPM} | cpio -vid
|
| 37 | 37 |
popd |
| 38 | 38 |
|
| 39 | 39 |
for K8S_BIN in ${K8S_DNS_BINS[*]}; do
|
| 40 |
- IMG_NAME=vmware/k8s-dns-${K8S_BIN}-${DIST_VER}:v${K8S_DNS_VER}
|
|
| 40 |
+ IMG_NAME=vmware_photon/k8s-dns-${K8S_BIN}-amd64:${K8S_DNS_VER}
|
|
| 41 | 41 |
K8S_TAR_NAME=k8s-dns-${K8S_BIN}.tar
|
| 42 | 42 |
docker build --rm -t ${IMG_NAME} -f ./Dockerfile.${K8S_BIN} .
|
| 43 | 43 |
docker save -o ${K8S_TAR_NAME} ${IMG_NAME}
|
| 44 | 44 |
new file mode 100755 |
| ... | ... |
@@ -0,0 +1,47 @@ |
| 0 |
+#!/bin/bash -e |
|
| 1 |
+ |
|
| 2 |
+DIST_TAG=$1 |
|
| 3 |
+DIST_VER=$2 |
|
| 4 |
+SPEC_DIR=$3 |
|
| 5 |
+STAGE_DIR=$4 |
|
| 6 |
+ARCH=x86_64 |
|
| 7 |
+ |
|
| 8 |
+# |
|
| 9 |
+# Docker images for kubernetes artifacts |
|
| 10 |
+# |
|
| 11 |
+K8S_VER=`cat ${SPEC_DIR}/kubernetes/kubernetes.spec | grep Version | cut -d: -f2 | tr -d ' '`
|
|
| 12 |
+K8S_VER_REL=${K8S_VER}-`cat ${SPEC_DIR}/kubernetes/kubernetes.spec | grep Release | cut -d: -f2 | tr -d ' ' | cut -d% -f1`
|
|
| 13 |
+K8S_RPM=kubernetes-${K8S_VER_REL}${DIST_TAG}.${ARCH}.rpm
|
|
| 14 |
+K8S_RPM_FILE=../../../stage/RPMS/x86_64/${K8S_RPM}
|
|
| 15 |
+ |
|
| 16 |
+if [ ! -f ${K8S_RPM_FILE} ]
|
|
| 17 |
+then |
|
| 18 |
+ echo "Kubernetes RPM ${K8S_RPM_FILE} not found. Exiting.."
|
|
| 19 |
+ exit 1 |
|
| 20 |
+fi |
|
| 21 |
+ |
|
| 22 |
+K8S_BINS=(kube-apiserver kube-controller-manager kube-proxy kube-scheduler) |
|
| 23 |
+for K8S_BIN in ${K8S_BINS[*]}; do
|
|
| 24 |
+ IMG_NAME=vmware_photon/${K8S_BIN}-amd64:v${K8S_VER}
|
|
| 25 |
+ IMG_ID=`docker images -q ${IMG_NAME} 2> /dev/null`
|
|
| 26 |
+ if [[ ! -z "${IMG_ID}" ]]; then
|
|
| 27 |
+ echo "Removing image ${IMG_NAME}"
|
|
| 28 |
+ docker rmi -f ${IMG_NAME}
|
|
| 29 |
+ fi |
|
| 30 |
+done |
|
| 31 |
+ |
|
| 32 |
+mkdir -p tmp/k8s |
|
| 33 |
+cp ${K8S_RPM_FILE} tmp/k8s/
|
|
| 34 |
+pushd ./tmp/k8s |
|
| 35 |
+rpm2cpio ${K8S_RPM} | cpio -vid
|
|
| 36 |
+popd |
|
| 37 |
+ |
|
| 38 |
+for K8S_BIN in ${K8S_BINS[*]}; do
|
|
| 39 |
+ IMG_NAME=vmware_photon/${K8S_BIN}-amd64:v${K8S_VER}
|
|
| 40 |
+ K8S_TAR_NAME=${K8S_BIN}.tar
|
|
| 41 |
+ docker build --rm -t ${IMG_NAME} -f ./Dockerfile.${K8S_BIN} .
|
|
| 42 |
+ docker save -o ${K8S_TAR_NAME} ${IMG_NAME}
|
|
| 43 |
+ mv -f ${K8S_TAR_NAME} ${STAGE_DIR}/
|
|
| 44 |
+done |
|
| 45 |
+ |
|
| 46 |
+rm -rf ./tmp |