Browse code

kubeadm with PhotonOS k8s, align container naming convention with k8s standard.

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>

Vinay Kulkarni authored on 2017/08/03 13:49:12
Showing 9 changed files
... ...
@@ -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
118 126
new file mode 100644
... ...
@@ -0,0 +1,9 @@
0
+# Photon Base Build Container
1
+
2
+FROM vmware/photon:1.0
3
+
4
+MAINTAINER kulkarniv@vmware.com
5
+
6
+ADD tmp/k8s/usr/bin/kube-apiserver /usr/bin/kube-apiserver
7
+
8
+CMD ["/usr/bin/kube-apiserver"]
0 9
new file mode 100644
... ...
@@ -0,0 +1,9 @@
0
+# Photon Base Build Container
1
+
2
+FROM vmware/photon:1.0
3
+
4
+MAINTAINER kulkarniv@vmware.com
5
+
6
+ADD tmp/k8s/usr/bin/kube-controller-manager /usr/bin/kube-controller-manager
7
+
8
+CMD ["/usr/bin/kube-controller-manager"]
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"]
0 11
new file mode 100644
... ...
@@ -0,0 +1,9 @@
0
+# Photon Base Build Container
1
+
2
+FROM vmware/photon:1.0
3
+
4
+MAINTAINER kulkarniv@vmware.com
5
+
6
+ADD tmp/k8s/usr/bin/kube-scheduler /usr/bin/kube-scheduler
7
+
8
+CMD ["/usr/bin/kube-scheduler"]
... ...
@@ -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