You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
284 lines
9.5 KiB
284 lines
9.5 KiB
%global _dwz_low_mem_die_limit 0 |
|
%global provider github |
|
%global provider_tld com |
|
%global project kubernetes |
|
%global repo kubernetes |
|
# https://github.com/kubernetes/kubernetes |
|
%global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo} |
|
%global import_path k8s.io/kubernetes |
|
%global _buildshell /bin/bash |
|
%global _checkshell /bin/bash |
|
|
|
Name: kubernetes |
|
Version: 1.18.8 |
|
%global commit 9f2892aab98fe339f3bd70e3c470144299398ace |
|
Release: 1%{?dist} |
|
Summary: Container cluster management |
|
License: ASL 2.0 |
|
URL: https://%{import_path} |
|
ExclusiveArch: ppc64le ppc64 x86_64 aarch64 s390x |
|
Source0: https://%{provider_prefix}/archive/%{commit}/%{repo}-%{shortcommit}.tar.gz |
|
Source1: kubernetes-env-apiserver |
|
Source2: kube-proxy.service |
|
Source3: kubernetes-accounting.conf |
|
Source4: kubeadm.conf |
|
Source5: kubelet.service |
|
Source6: kube-controller-manager.service |
|
Source7: kube-apiserver.service |
|
Source8: kubernetes-env-control-manager |
|
Source9: kubernetes-env-scheduler |
|
Source10: kubernetes-tmpfiles |
|
Source11: kube-scheduler.service |
|
Source12: kubernetes-env-config |
|
Source13: kubernetes-env-kubelet |
|
Source14: kubernetes-env-proxy |
|
Source33: genmanpages.sh |
|
# It obsoletes cadvisor but needs its source code (literally integrated) |
|
Obsoletes: cadvisor |
|
# kubernetes is decomposed into master and node subpackages |
|
# require both of them for updates |
|
Requires: kubernetes-master = %{version}-%{release} |
|
Requires: kubernetes-node = %{version}-%{release} |
|
%global shortcommit %(c=%{commit}; echo ${c:0:7}) |
|
|
|
|
|
%description |
|
%{summary} |
|
|
|
|
|
%package master |
|
Summary: Kubernetes services for master host |
|
BuildRequires: golang >= 1.2-7 |
|
BuildRequires: systemd |
|
BuildRequires: rsync |
|
BuildRequires: go-md2man |
|
BuildRequires: go-bindata |
|
Requires(pre): shadow-utils |
|
Requires: kubernetes-client = %{version}-%{release} |
|
# if node is installed with node, version and release must be the same |
|
Conflicts: kubernetes-node < %{version}-%{release} |
|
Conflicts: kubernetes-node > %{version}-%{release} |
|
%description master |
|
Kubernetes services for master host |
|
|
|
|
|
%package node |
|
Summary: Kubernetes services for node host |
|
Requires: conntrack-tools |
|
BuildRequires: golang >= 1.2-7 |
|
BuildRequires: systemd |
|
BuildRequires: rsync |
|
BuildRequires: go-md2man |
|
BuildRequires: go-bindata |
|
Requires(pre): shadow-utils |
|
Requires: socat |
|
Requires: kubernetes-client = %{version}-%{release} |
|
# if master is installed with node, version and release must be the same |
|
Conflicts: kubernetes-master < %{version}-%{release} |
|
Conflicts: kubernetes-master > %{version}-%{release} |
|
%description node |
|
Kubernetes services for node host |
|
|
|
|
|
%package kubeadm |
|
Summary: Kubernetes tool for standing up clusters |
|
Requires: kubernetes-node = %{version}-%{release} |
|
Requires: containernetworking-plugins |
|
%description kubeadm |
|
Kubernetes tool for standing up clusters |
|
|
|
|
|
%package client |
|
Summary: Kubernetes client tools |
|
BuildRequires: golang >= 1.2-7 |
|
BuildRequires: go-bindata |
|
%description client |
|
Kubernetes client tools like kubectl |
|
|
|
|
|
%prep |
|
%setup -q -n %{repo}-%{commit} |
|
mkdir -p src/k8s.io/kubernetes |
|
mv $(ls | grep -v "^src$") src/k8s.io/kubernetes/. |
|
%ifarch ppc64 |
|
sed 's/ppc64le/ppc64/' -i src/k8s.io/kubernetes/cluster/clientbin.sh |
|
sed 's/ppc64le/ppc64/' -i src/k8s.io/kubernetes/cluster/gce/upgrade.sh |
|
sed 's/ppc64le/ppc64/' -i src/k8s.io/kubernetes/hack/lib/util.sh |
|
sed 's/ppc64le/ppc64/' -i src/k8s.io/kubernetes/hack/local-up-cluster.sh |
|
%endif |
|
|
|
|
|
%build |
|
pushd src/k8s.io/kubernetes/ |
|
export KUBE_GIT_TREE_STATE="clean" |
|
export KUBE_GIT_COMMIT=%{commit} |
|
export KUBE_GIT_VERSION=v%{version} |
|
export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace |
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1392922#c1 |
|
#%$%ifarch ppc64le |
|
#%$export GOLDFLAGS='-linkmode=external' |
|
#%$%endif |
|
# Build each binary separately to generate a unique build-id. |
|
make WHAT="cmd/kube-proxy" |
|
make WHAT="cmd/kube-apiserver" |
|
make WHAT="cmd/kubelet" |
|
make WHAT="cmd/kubeadm" |
|
make WHAT="cmd/kube-scheduler" |
|
make WHAT="cmd/kubectl" |
|
make WHAT="cmd/kubemark" |
|
make WHAT="cmd/kube-controller-manager" |
|
# convert md to man |
|
./hack/generate-docs.sh || true |
|
pushd docs |
|
pushd admin |
|
cp kube-apiserver.md kube-controller-manager.md kube-proxy.md kube-scheduler.md kubelet.md .. |
|
popd |
|
cp %{SOURCE33} genmanpages.sh |
|
bash genmanpages.sh |
|
popd |
|
popd |
|
|
|
|
|
%install |
|
pushd src/k8s.io/kubernetes/ |
|
. hack/lib/init.sh |
|
kube::golang::setup_env |
|
#%ifarch ppc64le |
|
output_path="_output/local/go/bin" |
|
#%else |
|
#$%output_path="${KUBE_OUTPUT_BINPATH}/$(kube::golang::host_platform)" |
|
#%endif |
|
install -m 0755 -d %{buildroot}%{_bindir} |
|
install -p -m 0754 -t %{buildroot}%{_bindir} ${output_path}/kube-proxy |
|
install -p -m 0754 -t %{buildroot}%{_bindir} ${output_path}/kube-apiserver |
|
install -p -m 0754 -t %{buildroot}%{_bindir} ${output_path}/kubelet |
|
install -p -m 0754 -t %{buildroot}%{_bindir} ${output_path}/kubeadm |
|
install -p -m 0754 -t %{buildroot}%{_bindir} ${output_path}/kube-scheduler |
|
install -p -m 0754 -t %{buildroot}%{_bindir} ${output_path}/kubectl |
|
install -p -m 0754 -t %{buildroot}%{_bindir} ${output_path}/kubemark |
|
install -p -m 0754 -t %{buildroot}%{_bindir} ${output_path}/kube-controller-manager |
|
install -d -m 0755 %{buildroot}/%{_sysconfdir}/systemd/system/kubelet.service.d |
|
install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system/kubelet.service.d %{SOURCE4} |
|
install -d -m 0755 %{buildroot}%{_datadir}/bash-completion/completions/ |
|
%{buildroot}%{_bindir}/kubectl completion bash > %{buildroot}%{_datadir}/bash-completion/completions/kubectl |
|
install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name} |
|
install -p -m 0644 %{SOURCE12} %{buildroot}%{_sysconfdir}/%{name}/config |
|
install -p -m 0644 %{SOURCE1} %{buildroot}%{_sysconfdir}/%{name}/apiserver |
|
install -p -m 0644 %{SOURCE9} %{buildroot}%{_sysconfdir}/%{name}/scheduler |
|
install -p -m 0644 %{SOURCE8} %{buildroot}%{_sysconfdir}/%{name}/controller-manager |
|
install -p -m 0644 %{SOURCE13} %{buildroot}%{_sysconfdir}/%{name}/kubelet |
|
install -p -m 0644 %{SOURCE14} %{buildroot}%{_sysconfdir}/%{name}/proxy |
|
install -d -m 0755 %{buildroot}%{_unitdir} |
|
install -p -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE2} |
|
install -p -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE5} |
|
install -p -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE6} |
|
install -p -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE7} |
|
install -p -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE11} |
|
install -d %{buildroot}%{_mandir}/man1 |
|
install -p -m 0644 docs/man/man1/* %{buildroot}%{_mandir}/man1 |
|
#rm %{buildroot}%{_mandir}/man1/cloud-controller-manager.* |
|
install -d %{buildroot}%{_sharedstatedir}/kubelet |
|
install -d -m 0755 %{buildroot}%{_tmpfilesdir} |
|
install -p -m 0644 %{SOURCE10} %{buildroot}/%{_tmpfilesdir}/kubernetes.conf |
|
mkdir -p %{buildroot}/run |
|
install -d -m 0755 %{buildroot}/run/%{name}/ |
|
install -d -m 0755 %{buildroot}/%{_sysconfdir}/systemd/system.conf.d |
|
install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system.conf.d %{SOURCE3} |
|
popd |
|
mv src/k8s.io/kubernetes/*.md . |
|
mv src/k8s.io/kubernetes/LICENSE . |
|
|
|
|
|
%files |
|
# empty as it depends on master and node |
|
|
|
|
|
%files master |
|
%license LICENSE |
|
%doc *.md |
|
%{_mandir}/man1/kube-apiserver.1* |
|
%{_mandir}/man1/kube-controller-manager.1* |
|
%{_mandir}/man1/kube-scheduler.1* |
|
%attr(754, -, kube) %caps(cap_net_bind_service=ep) %{_bindir}/kube-apiserver |
|
%{_bindir}/kube-controller-manager |
|
%{_bindir}/kube-scheduler |
|
%{_unitdir}/kube-apiserver.service |
|
%{_unitdir}/kube-controller-manager.service |
|
%{_unitdir}/kube-scheduler.service |
|
%dir %{_sysconfdir}/%{name} |
|
%config(noreplace) %{_sysconfdir}/%{name}/apiserver |
|
%config(noreplace) %{_sysconfdir}/%{name}/scheduler |
|
%config(noreplace) %{_sysconfdir}/%{name}/config |
|
%config(noreplace) %{_sysconfdir}/%{name}/controller-manager |
|
%{_tmpfilesdir}/kubernetes.conf |
|
%verify(not size mtime md5) %attr(755, kube,kube) %dir /run/%{name} |
|
|
|
|
|
%files node |
|
%license LICENSE |
|
%doc *.md |
|
%{_mandir}/man1/kubelet.1* |
|
%{_mandir}/man1/kube-proxy.1* |
|
%{_bindir}/kubelet |
|
%{_bindir}/kube-proxy |
|
%{_unitdir}/kube-proxy.service |
|
%{_unitdir}/kubelet.service |
|
%dir %{_sharedstatedir}/kubelet |
|
%dir %{_sysconfdir}/%{name} |
|
%config(noreplace) %{_sysconfdir}/%{name}/config |
|
%config(noreplace) %{_sysconfdir}/%{name}/kubelet |
|
%config(noreplace) %{_sysconfdir}/%{name}/proxy |
|
%config(noreplace) %{_sysconfdir}/systemd/system.conf.d/kubernetes-accounting.conf |
|
%{_tmpfilesdir}/kubernetes.conf |
|
%verify(not size mtime md5) %attr(755, kube,kube) %dir /run/%{name} |
|
|
|
|
|
%files kubeadm |
|
%license LICENSE |
|
%doc *.md |
|
%{_mandir}/man1/kubeadm.1* |
|
%{_mandir}/man1/kubeadm-* |
|
%{_bindir}/kubeadm |
|
%{_bindir}/kubemark |
|
%dir %{_sysconfdir}/systemd/system/kubelet.service.d |
|
%config(noreplace) %{_sysconfdir}/systemd/system/kubelet.service.d/kubeadm.conf |
|
|
|
|
|
%files client |
|
%license LICENSE |
|
%doc *.md |
|
%{_mandir}/man1/kubectl.1* |
|
%{_mandir}/man1/kubectl-* |
|
%{_bindir}/kubectl |
|
%{_datadir}/bash-completion/completions/kubectl |
|
|
|
|
|
%pre master |
|
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 |
|
%post master |
|
%systemd_post kube-apiserver kube-scheduler kube-controller-manager |
|
%preun master |
|
%systemd_preun kube-apiserver kube-scheduler kube-controller-manager |
|
%postun master |
|
%systemd_postun kube-apiserver kube-scheduler kube-controller-manager |
|
|
|
|
|
%pre node |
|
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 |
|
%post node |
|
%systemd_post kubelet kube-proxy |
|
# If accounting is not currently enabled systemd reexec |
|
if [[ `systemctl show docker kubelet | grep -q -e CPUAccounting=no -e MemoryAccounting=no; echo $?` -eq 0 ]]; then |
|
systemctl daemon-reexec |
|
fi |
|
|
|
|
|
%preun node |
|
%systemd_preun kubelet kube-proxy |
|
%postun node |
|
%systemd_postun kubelet kube-proxy |
|
|
|
|
|
%changelog
|
|
|