kubernetes/kubernetes.spec
2019-10-06 22:22:55 +03:00

140 lines
3.7 KiB
RPMSpec

%define debug %nil
%define debug_package %nil
Name: kubernetes
Version: 1.13.11
Release: 1
Summary: Production-Grade Container Scheduling and Management
License: ASL 2.0
URL: https://kubernetes.io
Source0: %{name}-%{version}.tar.gz
Source1000: %{name}.rpmlintrc
Group: Development/Other
BuildRequires: golang >= 1.12.1
BuildRequires: git
BuildRequires: upx
%description
Kubernetes is an open source system for managing containerized
applications across multiple hosts; providing basic mechanisms
for deployment, maintenance, and scaling of applications.
%package -n kubectl
Summary: Container Cluster Manager - Kubernetes client tools
%description -n kubectl
Command-line utility for interacting with a Kubernetes cluster
%files -n kubectl
%{_bindir}/kubectl
%package -n kubeadm
Summary: Container Cluster Manager - Kubernetes Cluster Bootstrapping Tool
Requires: kubelet >= 1.8.0
Requires: kubectl >= 1.8.0
Requires: cni-plugins >= 0.7.5
Requires: cri-tools >= 1.11.0
%description -n kubeadm
Command-line utility for deploying a Kubernetes cluster
%files -n kubeadm
%{_bindir}/kubeadm
%{_sysconfdir}/systemd/kubelet.service.d/10-kubeadm.conf
%{_sysconfdir}/sysconfig/kubelet
%dir %{_libexecdir}/modules-load.d
%{_libexecdir}/modules-load.d/kubeadm.conf
%{_prefix}/lib/sysctl.d/50-kubeadm.conf
%package -n kubelet
Summary: Container Cluster Manager - Kubernetes Node Agent
Requires: conntrack
Requires: ebtables
Requires: ethtool
Requires: iproute
Requires: iptables >= 1.4.21
Requires: cni-plugins >= 0.7.5
Requires: socat
Requires: util-linux
Requires: systemd
%description -n kubelet
The node agent of Kubernetes, the container cluster manager
%files -n kubelet
%{_bindir}/kubelet
%attr(644,-,-) %{_unitdir}/kubelet.service
%{_sysconfdir}/kubernetes/manifests/
%package client
Summary: Kubernetes client tools
BuildRequires: golang >= 1.12.0
Requires: kubectl == %{version}
%description client
Kubernetes client tools like kubectl
%files client
%doc *.md LICENSE
%{_bindir}/hyperkube
%package docs
Summary: Kubernetes documentations
%description docs
Kubernetes documentations
%files docs
%doc docs/admin/*.md docs/user-guide/kubectl/*.md docs/yaml/kubectl/*.yaml docs/api-reference LICENSE
%{_mandir}/man1/*
%prep
%setup -q
%build
%define GOPATH $RPM_BUILD_DIR/go
GOPATH=%{GOPATH} make
hack/generate-docs.sh
upx _output/bin/kubeadm
upx _output/bin/kubelet
upx _output/bin/kubectl
upx _output/bin/hyperkube
%install
install -dm0755 %{buildroot}%{_bindir}
install -dm0755 %{buildroot}%{_sysconfdir}/systemd/kubelet.service.d
install -dm0755 %{buildroot}%{_sysconfdir}/sysconfig
install -dm0755 %{buildroot}%{_sysconfdir}/kubernetes/manifests
install -dm0755 %{buildroot}%{_libexecdir}/modules-load.d
install -dm0755 %{buildroot}/usr/lib/sysctl.d
install -dm0755 %{buildroot}%{_mandir}/man1
install -dm0755 %{buildroot}%{_unitdir}
# kubeadm
install -p -m 0755 -t %{buildroot}%{_bindir} _output/bin/kubeadm
install -p -m 0644 -t %{buildroot}%{_sysconfdir}/systemd/kubelet.service.d/ build/rpms/10-kubeadm.conf
install -p -m 0644 -T build/rpms/kubelet.env %{buildroot}%{_sysconfdir}/sysconfig/kubelet
install -p -m 0644 -t %{buildroot}%{_libexecdir}/modules-load.d/ build/rpms/kubeadm.conf
install -p -m 0644 -t %{buildroot}/usr/lib/sysctl.d/ build/rpms/50-kubeadm.conf
# kubelet
install -p -m 0755 -t %{buildroot}%{_bindir} _output/bin/kubelet
install -p -m 0644 build/rpms/kubelet.service %{buildroot}%{_unitdir}
# kubectl
install -p -m 0755 -t %{buildroot}%{_bindir} _output/bin/kubectl
# docs
install -p -m 0644 docs/man/man1/* %{buildroot}%{_mandir}/man1/
# client
install -p -m 0755 _output/bin/hyperkube %{buildroot}%{_bindir}
# fix perm docs
find docs/ -type f -exec chmod 0644 {} \;
%files
%doc README.md LICENSE CHANGELOG-*.md