SPECS/kubernetes/kubernetes-1.10.spec
f36af574
 %ifarch x86_64
 %define archname amd64
 %endif
 %ifarch aarch64
 %define archname arm64
 %endif
 
14a58dbb
 Summary:        Kubernetes cluster management
 Name:           kubernetes
77e08477
 Version:        1.10.7
1a5a7f19
 Release:        2%{?dist}
14a58dbb
 License:        ASL 2.0
e512a0c6
 URL:            https://github.com/kubernetes/kubernetes/archive/v%{version}.tar.gz
3ec8aa37
 Source0:        kubernetes-%{version}.tar.gz
77e08477
 %define sha1    kubernetes-%{version}.tar.gz=39c24846730ae3902a9ce5b49ec9fce7336441d4
14a58dbb
 Source1:        https://github.com/kubernetes/contrib/archive/contrib-0.7.0.tar.gz
e512a0c6
 %define sha1    contrib-0.7.0=47a744da3b396f07114e518226b6313ef4b2203c
77e08477
 Patch0:         k8s-1.10-vke.patch
14a58dbb
 Group:          Development/Tools
 Vendor:         VMware, Inc.
 Distribution:   Photon
77e08477
 BuildRequires:  go = 1.9.4
e512a0c6
 BuildRequires:  rsync
 BuildRequires:  which
bd8dde78
 Requires:       cni
 Requires:       ebtables
14a58dbb
 Requires:       etcd >= 3.0.4
bd8dde78
 Requires:       ethtool
 Requires:       iptables
 Requires:       iproute2
7f9d2e12
 Requires(pre):  /usr/sbin/useradd /usr/sbin/groupadd
 Requires(postun):/usr/sbin/userdel /usr/sbin/groupdel
bd8dde78
 Requires:       socat
7f9d2e12
 Requires:       (util-linux or toybox)
d0fc675c
 
f4d17450
 %description
 Kubernetes is an open source implementation of container cluster management.
d0fc675c
 
7a4979d5
 %package        kubeadm
 Summary:        kubeadm deployment tool
 Group:          Development/Tools
 Requires:       %{name} = %{version}
 %description    kubeadm
 kubeadm is a tool that enables quick and easy deployment of a kubernetes cluster.
 
77e08477
 %package	kubectl-extras
 Summary:	kubectl binaries for extra platforms
 Group:		Development/Tools
 %description	kubectl-extras
 Contains kubectl binaries for additional platforms.
 
1746bf69
 %package        pause
 Summary:        pause binary
 Group:          Development/Tools
 %description    pause
 A pod setup process that holds a pod's namespace.
 
f4d17450
 %prep -p exit
e512a0c6
 %setup -qn %{name}-%{version}
 cd ..
70c915af
 tar xf %{SOURCE1} --no-same-owner
5484648d
 sed -i -e 's|127.0.0.1:4001|127.0.0.1:2379|g' contrib-0.7.0/init/systemd/environ/apiserver
e512a0c6
 cd %{name}-%{version}
77e08477
 %patch0 -p1
d0fc675c
 
f4d17450
 %build
e512a0c6
 make
1746bf69
 pushd build/pause
 mkdir -p bin
f36af574
 gcc -Os -Wall -Werror -static -o bin/pause-%{archname} pause.c
 strip bin/pause-%{archname}
1746bf69
 popd
1a5a7f19
 
 %ifarch x86_64
77e08477
 make WHAT="cmd/kubectl" KUBE_BUILD_PLATFORMS="darwin/%{archname} windows/%{archname}"
1a5a7f19
 %endif
d0fc675c
 
f4d17450
 %install
 install -vdm644 %{buildroot}/etc/profile.d
 install -m 755 -d %{buildroot}%{_bindir}
77e08477
 install -m 755 -d %{buildroot}/opt/vmware/kubernetes
 install -m 755 -d %{buildroot}/opt/vmware/kubernetes/linux/%{archname}
1a5a7f19
 
 %ifarch x86_64
 install -m 755 -d %{buildroot}/opt/vmware/kubernetes/darwin/%{archname}
77e08477
 install -m 755 -d %{buildroot}/opt/vmware/kubernetes/windows/%{archname}
1a5a7f19
 %endif
f4d17450
 
3ec8aa37
 binaries=(cloud-controller-manager hyperkube kube-aggregator kube-apiserver kube-controller-manager kubelet kube-proxy kube-scheduler kubectl)
f4d17450
 for bin in "${binaries[@]}"; do
   echo "+++ INSTALLING ${bin}"
f36af574
   install -p -m 755 -t %{buildroot}%{_bindir} _output/local/bin/linux/%{archname}/${bin}
f4d17450
 done
f36af574
 install -p -m 755 -t %{buildroot}%{_bindir} build/pause/bin/pause-%{archname}
f4d17450
 
77e08477
 # kubectl-extras
 install -p -m 755 -t %{buildroot}/opt/vmware/kubernetes/linux/%{archname}/ _output/local/bin/linux/%{archname}/kubectl
1a5a7f19
 %ifarch x86_64
 install -p -m 755 -t %{buildroot}/opt/vmware/kubernetes/darwin/%{archname}/ _output/local/bin/darwin/%{archname}/kubectl
77e08477
 install -p -m 755 -t %{buildroot}/opt/vmware/kubernetes/windows/%{archname}/ _output/local/bin/windows/%{archname}/kubectl.exe
1a5a7f19
 %endif
77e08477
 
7a4979d5
 # kubeadm install
 install -vdm644 %{buildroot}/etc/systemd/system/kubelet.service.d
f36af574
 install -p -m 755 -t %{buildroot}%{_bindir} _output/local/bin/linux/%{archname}/kubeadm
7a4979d5
 install -p -m 755 -t %{buildroot}/etc/systemd/system build/rpms/kubelet.service
 install -p -m 755 -t %{buildroot}/etc/systemd/system/kubelet.service.d build/rpms/10-kubeadm.conf
 sed -i '/KUBELET_CGROUP_ARGS=--cgroup-driver=systemd/d' %{buildroot}/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
 
e512a0c6
 cd ..
f4d17450
 # install config files
 install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}
14a58dbb
 install -m 644 -t %{buildroot}%{_sysconfdir}/%{name} contrib-0.7.0/init/systemd/environ/*
4124bcd6
 cat << EOF >> %{buildroot}%{_sysconfdir}/%{name}/kubeconfig
 apiVersion: v1
 clusters:
 - cluster:
     server: http://127.0.0.1:8080
 EOF
7598ae93
 sed -i '/KUBELET_API_SERVER/c\KUBELET_API_SERVER="--kubeconfig=/etc/kubernetes/kubeconfig"' %{buildroot}%{_sysconfdir}/%{name}/kubelet
f4d17450
 
 # install service files
 install -d -m 0755 %{buildroot}/usr/lib/systemd/system
14a58dbb
 install -m 0644 -t %{buildroot}/usr/lib/systemd/system contrib-0.7.0/init/systemd/*.service
f4d17450
 
 # install the place the kubelet defaults to put volumes
e512a0c6
 install -dm755 %{buildroot}/var/lib/kubelet
 install -dm755 %{buildroot}/var/run/kubernetes
f4d17450
 
31f72888
 mkdir -p %{buildroot}/%{_lib}/tmpfiles.d
 cat << EOF >> %{buildroot}/%{_lib}/tmpfiles.d/kubernetes.conf
 d /var/run/kubernetes 0755 kube kube -
 EOF
 
f4d17450
 %check
d009d976
 export GOPATH=%{_builddir}
 go get golang.org/x/tools/cmd/cover
 make %{?_smp_mflags} check
d0fc675c
 
f4d17450
 %clean
 rm -rf %{buildroot}/*
d0fc675c
 
f4d17450
 %pre
4aa873d5
 if [ $1 -eq 1 ]; then
d45b7400
     # Initial installation.
     getent group kube >/dev/null || groupadd -r kube
     getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \
             -c "Kubernetes user" kube
 fi
 
e512a0c6
 %post
 chown -R kube:kube /var/lib/kubelet
 chown -R kube:kube /var/run/kubernetes
7a4979d5
 systemctl daemon-reload
 
 %post kubeadm
 systemctl daemon-reload
 systemctl stop kubelet
 systemctl enable kubelet
 
 %preun kubeadm
 if [ $1 -eq 0 ]; then
     systemctl stop kubelet
 fi
e512a0c6
 
d45b7400
 %postun
4aa873d5
 if [ $1 -eq 0 ]; then
d45b7400
     # Package deletion
     userdel kube
cfb1fd76
     groupdel kube
7a4979d5
     systemctl daemon-reload
 fi
 
 %postun kubeadm
 if [ $1 -eq 0 ]; then
     systemctl daemon-reload
d45b7400
 fi
d0fc675c
 
f4d17450
 %files
 %defattr(-,root,root)
7a4979d5
 %{_bindir}/cloud-controller-manager
 %{_bindir}/hyperkube
 %{_bindir}/kube-aggregator
 %{_bindir}/kube-apiserver
 %{_bindir}/kube-controller-manager
 %{_bindir}/kubelet
 %{_bindir}/kube-proxy
 %{_bindir}/kube-scheduler
 %{_bindir}/kubectl
3ec8aa37
 #%{_bindir}/kubefed
31f72888
 %{_lib}/systemd/system/kube-apiserver.service
 %{_lib}/systemd/system/kubelet.service
 %{_lib}/systemd/system/kube-scheduler.service
 %{_lib}/systemd/system/kube-controller-manager.service
 %{_lib}/systemd/system/kube-proxy.service
 %{_lib}/tmpfiles.d/kubernetes.conf
f4d17450
 %dir %{_sysconfdir}/%{name}
 %dir /var/lib/kubelet
e512a0c6
 %dir /var/run/kubernetes
f4d17450
 %config(noreplace) %{_sysconfdir}/%{name}/config
 %config(noreplace) %{_sysconfdir}/%{name}/apiserver
 %config(noreplace) %{_sysconfdir}/%{name}/controller-manager
 %config(noreplace) %{_sysconfdir}/%{name}/proxy
 %config(noreplace) %{_sysconfdir}/%{name}/kubelet
4124bcd6
 %config(noreplace) %{_sysconfdir}/%{name}/kubeconfig
f4d17450
 %config(noreplace) %{_sysconfdir}/%{name}/scheduler
d0fc675c
 
7a4979d5
 %files kubeadm
 %defattr(-,root,root)
 %{_bindir}/kubeadm
 /etc/systemd/system/kubelet.service
 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
 
1746bf69
 %files pause
 %defattr(-,root,root)
f36af574
 %{_bindir}/pause-%{archname}
1746bf69
 
77e08477
 %files kubectl-extras
 %defattr(-,root,root)
 /opt/vmware/kubernetes/linux/%{archname}/kubectl
1a5a7f19
 %ifarch x86_64
 /opt/vmware/kubernetes/darwin/%{archname}/kubectl
77e08477
 /opt/vmware/kubernetes/windows/%{archname}/kubectl.exe
1a5a7f19
 %endif
77e08477
 
f4d17450
 %changelog
1a5a7f19
 *   Wed Oct 10 2018 Ajay Kaher <akaher@vmware.com> 1.10.7-2
 -   For aarch64 excluded drawin/arm64 and windows/arm64
77e08477
 *   Wed Aug 29 2018 Dheeraj Shetty <dheerajs@vmware.com> 1.10.7-1
 -   Update to k8s version 1.10.7 with VKE patch (fbdcc5c) and add
 -   kubectl-extras package
3ec8aa37
 *   Thu May 03 2018 Xiaolin Li <xiaolinl@vmware.com> 1.10.2-1
 -   Add kubernetes 1.10.2.
baa738d0
 *   Tue Jan 30 2018 Ashok Chandrasekar <ashokc@vmware.com> 1.8.1-6
 -   Fix password issue in cascade cloud provider.
d5275918
 *   Tue Jan 23 2018 Ashok Chandrasekar <ashokc@vmware.com> 1.8.1-5
 -   Add Cascade cloud provider.
f36af574
 *   Wed Nov 15 2017 Alexey Makhalov <amakhalov@vmware.com> 1.8.1-4
 -   Aarch64 support
 *   Wed Nov 15 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.8.1-3
7598ae93
 -   Specify --kubeconfig to pass in config file.
4124bcd6
 *   Tue Nov 07 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.8.1-2
 -   Specify API server via kubeconfig file.
e3e4eb64
 *   Wed Nov 01 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.8.1-1
 -   k8s v1.8.1.
7f9d2e12
 *   Mon Sep 18 2017 Alexey Makhalov <amakhalov@vmware.com> 1.7.5-2
 -   Requires util-linux or toybox
 -   Remove shadow from requires and use explicit tools for post actions
464d6140
 *   Mon Sep 11 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.5-1
 -   k8s v1.7.5.
1746bf69
 *   Thu Aug 03 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.0-3
 -   PhotonOS based k8s pause container.
7a4979d5
 *   Sat Jul 22 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.0-2
 -   Split kubeadm into its own pkg.
2849ae7a
 *   Fri Jul 14 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.7.0-1
 -   Upgrade kubernetes to v1.7.0.
bd8dde78
 *   Tue May 09 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.6.0-3
 -   Fix kubernetes dependencies.
cfb1fd76
 *   Thu May 04 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.6.0-2
 -   Include cloud-controller-manager, kube-aggregator binaries.
e512a0c6
 *   Tue Mar 28 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.6.0-1
 -   Build kubernetes 1.6.0 from source.
 *   Mon Feb 13 2017 Vinay Kulkarni <kulkarniv@vmware.com> 1.5.2-3
f45ca38c
 -   Added kubeadm, kubefed, dns, discovery to package.
31f72888
 *   Fri Jan 27 2017 Xiaolin Li <xiaolinl@vmware.com> 1.5.2-2
 -   Added /lib/tmpfiles.d/kubernetes.conf.
c52aeb48
 *   Thu Jan 19 2017 Xiaolin Li <xiaolinl@vmware.com> 1.5.2-1
 -   Upgraded to version 1.5.2
5484648d
 *   Fri Oct 21 2016 Xiaolin Li <xiaolinl@vmware.com> 1.4.4-1
 -   Upgraded to version 1.4.4
14a58dbb
 *   Wed Sep 21 2016 Xiaolin Li <xiaolinl@vmware.com> 1.4.0-1
 -   Upgraded to version 1.4.0
 *   Fri Jun 24 2016 Xiaolin Li <xiaolinl@vmware.com> 1.2.4-1
07123e9c
 -   Upgraded to version 1.2.4
14a58dbb
 *   Tue May 24 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.1.8-4
 -   GA - Bump release of all rpms
 *   Wed May 18 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 1.1.8-3
 -   Fix if syntax
 *   Thu May 05 2016 Kumar Kaushik <kaushikk@vmware.com> 1.1.8-2
 -   Adding support to pre/post/un scripts for package upgrade.
 *   Tue Feb 23 2016 Harish Udaiya Kumar <hudaiyakumar@vmware.com> 1.1.8-1
 -   Upgraded to version 1.1.8
 *   Mon Aug 3 2015 Tom Scanlan <tscanlan@vmware.com> 1.0.2-1
 -   bump up to latest release
 *   Thu Jul 23 2015 Vinay Kulkarni <kulkarniv@vmware.com> 1.0.1-1
 -   Upgrade to kubernetes v1.0.1
 *   Tue Mar 10 2015 Divya Thaluru <dthaluru@vmware.com> 0.12.1-1
70c915af
 -   Initial build. First version