diff --git a/environ-config b/environ-config index 8c0a28493fd4d7d5a8df29e63648dc25492f4977..11968027a8a90b535261a801b439c72de20d5a4e 100644 --- a/environ-config +++ b/environ-config @@ -15,7 +15,7 @@ KUBE_LOGTOSTDERR="--logtostderr=true" # journal message level, 0 is debug KUBE_LOG_LEVEL="--v=0" -# Should this cluster be allowed to run privileged docker containers +# Should this cluster be allowed to run privileged containers KUBE_ALLOW_PRIV="--allow-privileged=false" # How the controller-manager, scheduler, and proxy find the apiserver diff --git a/kubeadm.conf b/kubeadm.conf index 3b0d35b84e2d99f1066528c56d60378684e43383..cf82c3d4ec6a06f8cfe1f143ad66c54073805943 100644 --- a/kubeadm.conf +++ b/kubeadm.conf @@ -1,7 +1,6 @@ [Service] Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --fail-swap-on=false" Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests" -Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/usr/libexec/cni" Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local" Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt" Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=systemd" @@ -10,7 +9,7 @@ Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=systemd" EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env ExecStart= -ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_EXTRA_ARGS $KUBELET_KUBEADM_ARGS +ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_EXTRA_ARGS $KUBELET_KUBEADM_ARGS Restart=always StartLimitInterval=0 diff --git a/kubelet.service b/kubelet.service index b698e9d74e4ac33388ae12a439080069363f8500..48ae87a8fefd15caacf543334c7f7081d1a92917 100644 --- a/kubelet.service +++ b/kubelet.service @@ -1,7 +1,7 @@ [Unit] Description=Kubernetes Kubelet Server Documentation=https://kubernetes.io/docs/concepts/overview/components/#kubelet https://kubernetes.io/docs/reference/generated/kubelet/ -After=containerd.service crio.service docker.service +After=containerd.service crio.service [Service] WorkingDirectory=/var/lib/kubelet diff --git a/v1.23.3.tar.gz b/kubernetes-7f6f68f.tar.gz similarity index 76% rename from v1.23.3.tar.gz rename to kubernetes-7f6f68f.tar.gz index 0e86eae26876310666786af8f13e427262b6873c..758f26952065a712b8b8a541826a754c81c507fd 100644 Binary files a/v1.23.3.tar.gz and b/kubernetes-7f6f68f.tar.gz differ diff --git a/kubernetes.conf b/kubernetes.conf index 0fc3bdf58553ca9a9a82f548b0e6c0e7d4c1df58..97ce00ed4e3ac9d9e23b06052ca8b6bb6bceb69e 100644 --- a/kubernetes.conf +++ b/kubernetes.conf @@ -1 +1 @@ -d /var/run/kubernetes 0755 kube kube - +d /run/kubernetes 0755 kube kube - diff --git a/kubernetes.spec b/kubernetes.spec index 388c9c9380fa5e8eac6e87189355cfbbbb310d08..9ab528c5fc3c7d77d64ff933102c6a21a95152ec 100644 --- a/kubernetes.spec +++ b/kubernetes.spec @@ -1,110 +1,141 @@ -%define anolis_release 3 -%bcond_with debug +%define anolis_release 1 +%global with_debug 0 -# for kubernetes build -%global _buildshell /bin/bash -%global _checkshell /bin/bash - -%if %{with debug} +%if 0%{?with_debug} %global _dwz_low_mem_die_limit 0 %else %global debug_package %{nil} %endif -%global project kubernetes -%global repo kubernetes -%global provider github -%global provider_tld com -%global import_path k8s.io/kubernetes -%global commit 816c97ab8cff8a1c72eccca1026f7820e93e0d25 -%global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo} -%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global provider github +%global provider_tld com +%global project kubernetes +%global repo kubernetes + +%global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo} +%global import_path kubernetes.io/ +%global commit 7f6f68fdabc4df88cfea2dcf9a19b2b830f1e647 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) + +%global _buildshell /bin/bash +%global _checkshell /bin/bash +############################################## Name: kubernetes -Version: 1.23.3 +Version: 1.27.2 Release: %{anolis_release}%{?dist} -Summary: Container cluster management +Summary: Open Source Production-Grade Container Scheduling And Management Platform License: ASL 2.0 URL: https://%{import_path} -Source0: https://%{provider_prefix}/archive/refs/tags/v%{version}.tar.gz -Source1: kube-proxy.service -Source2: kube-apiserver.service -Source3: kube-scheduler.service -Source4: kube-controller-manager.service -Source5: kubelet.service -Source6: environ-apiserver -Source7: environ-config -Source8: environ-controller-manager -Source9: environ-kubelet -Source10: environ-kubelet.kubeconfig -Source11: environ-proxy -Source12: environ-scheduler -Source13: kubernetes-accounting.conf -Source14: kubeadm.conf -Source15: kubernetes.conf - -Patch0: build-with-debug-info.patch - -# kubernetes is decomposed into master and node subpackages require both of them for updates -Requires: kubernetes-master = %{version}-%{release} kubernetes-node = %{version}-%{release} +ExclusiveArch: x86_64 aarch64 ppc64le s390x %{arm} +Source0: https://%{provider_prefix}/archive/%{commit}/%{repo}-%{shortcommit}.tar.gz + +Source101: kube-proxy.service +Source102: kube-apiserver.service +Source103: kube-scheduler.service +Source104: kube-controller-manager.service +Source105: kubelet.service +Source106: environ-apiserver +Source107: environ-config +Source108: environ-controller-manager +Source109: environ-kubelet +Source110: environ-kubelet.kubeconfig +Source111: environ-proxy +Source112: environ-scheduler +Source113: kubernetes-accounting.conf +Source114: kubeadm.conf +Source115: kubernetes.conf +Source116: %{name}.sysusers + +Patch3: build-with-debug-info.patch + +# It obsoletes cadvisor but needs its source code (literally integrated) Obsoletes: cadvisor -%description -Kubernetes is an open-source system for automating deployment, -scaling, and management of containerized applications. +# kubernetes is decomposed into master and node subpackages +# require both of them for updates +Requires: kubernetes-master = %{version}-%{release} +Requires: kubernetes-node = %{version}-%{release} +%description +%{summary} +############################################## %package master -Summary: Kubernetes services for master host -BuildRequires: golang >= 1.15 systemd rsync go-bindata -Requires(pre): shadow-utils -Requires: kubernetes-client = %{version}-%{release} +Summary: Kubernetes services for control plane host -# version and release must be the same -Conflicts: kubernetes-node < %{version}-%{release} kubernetes-node > %{version}-%{release} +BuildRequires: golang >= 1.20.4 +BuildRequires: systemd +BuildRequires: rsync +BuildRequires: go-md2man +BuildRequires: go-bindata -%description master -Kubernetes services for master host +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 control plane host +############################################## %package node -Summary: Kubernetes services for node host -BuildRequires: golang >= 1.15 systemd rsync go-bindata -Requires(pre): shadow-utils -Requires: (containerd or cri-o or docker or docker-ce or moby-engine) -Requires: conntrack-tools socat kubernetes-client = %{version}-%{release} -Suggests: containerd -# version and release must be the same -Conflicts: kubernetes-master < %{version}-%{release} kubernetes-master > %{version}-%{release} +Summary: Kubernetes services for worker node host -%description node -Kubernetes services for node host +Requires: (containerd or cri-o) +Suggests: containerd +Requires: conntrack-tools +BuildRequires: golang >= 1.20.4 +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 worker node host + +############################################## %package kubeadm -Summary: Kubernetes tool for standing up clusters -Requires: kubernetes-node = %{version}-%{release} containernetworking-plugins +Summary: Kubernetes tool for standing up clusters +Requires: kubernetes-node = %{version}-%{release} + +Requires: containernetworking-plugins +Requires: cri-tools %description kubeadm Kubernetes tool for standing up clusters - +############################################## %package client -Summary: Kubernetes client tools -BuildRequires: golang >= 1.15 go-bindata make +Summary: Kubernetes client tools + +BuildRequires: golang >= 1.20.4 +BuildRequires: go-bindata +BuildRequires: make %description client Kubernetes client tools like kubectl +############################################## %prep -%setup -q -n %{repo}-%{version} +%setup -q -n %{repo}-%{commit} -%if %{with debug} +%if 0%{?with_debug} %patch3 -p1 %endif - for dir in vendor/github.com/google/certificate-transparency/go/x509 pkg/util/certificates; do if [ -d "${dir}" ]; then pushd ${dir} @@ -117,27 +148,36 @@ done mkdir -p src/k8s.io/kubernetes mv $(ls | grep -v "^src$") src/k8s.io/kubernetes/. +mv .generated_files src/k8s.io/kubernetes/. +mv .go* src/k8s.io/kubernetes/. + +############### %build +export FORCE_HOST_GO=y + pushd src/k8s.io/kubernetes/ source hack/lib/init.sh kube::golang::setup_env -export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace export KUBE_GIT_TREE_STATE="clean" export KUBE_GIT_COMMIT=%{commit} export KUBE_GIT_VERSION=v{version} +export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace -prefix="cmd/" -for cmd in "kubelet" "kubeadm" "kube-proxy" "kube-apiserver" "kube-controller-manager" "kube-scheduler" "kubectl" -do - make WHAT=$prefix$cmd -done - -for cmd in "genman" "genyaml" "gendocs" "genkubedocs" -do - make WHAT=$prefix$cmd -done +make WHAT="cmd/kube-proxy" +make WHAT="cmd/kube-apiserver" +make WHAT="cmd/kube-controller-manager" +make WHAT="cmd/kubelet" +make WHAT="cmd/kubeadm" +make WHAT="cmd/kube-scheduler" +make WHAT="cmd/kubectl" + +# Gen docs +make WHAT="cmd/gendocs" +make WHAT="cmd/genkubedocs" +make WHAT="cmd/genman" +make WHAT="cmd/genyaml" kube::util::gen-docs . %install @@ -145,116 +185,134 @@ pushd src/k8s.io/kubernetes/ source hack/lib/init.sh kube::golang::setup_env -echo "INSTALLING binaries" +%ifarch ppc64le +output_path="_output/local/go/bin" +%else output_path="${KUBE_OUTPUT_BINPATH}/$(kube::golang::host_platform)" -install -m 0755 -d %{buildroot}%{_bindir} -for f in kube-proxy kube-apiserver kube-controller-manager kubelet kubeadm kube-scheduler kubectl -do - install -p -m 0755 -t %{buildroot}%{_bindir} ${output_path}/$f -done +%endif -echo "INSTALLING kubelet service config" +echo "+++ INSTALLING binaries" +install -m 755 -d %{buildroot}%{_bindir} +install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kube-proxy +install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kube-apiserver +install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kube-controller-manager +install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kubelet +install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kubeadm +install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kube-scheduler +install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kubectl + +echo "+++ INSTALLING kubelet service config" install -d -m 0755 %{buildroot}/%{_sysconfdir}/systemd/system/kubelet.service.d -install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system/kubelet.service.d %{SOURCE14} +install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system/kubelet.service.d %{SOURCE114} -echo "INSTALLING bash completion" +echo "+++ INSTALLING shell completion" 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}%{_datadir}/zsh-completion/completions/ +%{buildroot}%{_bindir}/kubectl completion zsh > %{buildroot}%{_datadir}/zsh-completion/completions/kubectl +install -d -m 0755 %{buildroot}%{_datadir}/fish-completion/completions/ +%{buildroot}%{_bindir}/kubectl completion fish > %{buildroot}%{_datadir}/fish-completion/completions/kubectl -echo "INSTALLING config files" +echo "+++ INSTALLING config files" +%define remove_environ_prefix() %(echo -n %1|sed 's/.*environ-//g') install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name} install -d -m 0700 %{buildroot}%{_sysconfdir}/%{name}/manifests +install -m 644 -T %{SOURCE106} %{buildroot}%{_sysconfdir}/%{name}/%{remove_environ_prefix %{SOURCE106}} +install -m 644 -T %{SOURCE107} %{buildroot}%{_sysconfdir}/%{name}/%{remove_environ_prefix %{SOURCE107}} +install -m 644 -T %{SOURCE108} %{buildroot}%{_sysconfdir}/%{name}/%{remove_environ_prefix %{SOURCE108}} +install -m 644 -T %{SOURCE109} %{buildroot}%{_sysconfdir}/%{name}/%{remove_environ_prefix %{SOURCE109}} +install -m 644 -T %{SOURCE110} %{buildroot}%{_sysconfdir}/%{name}/%{remove_environ_prefix %{SOURCE110}} +install -m 644 -T %{SOURCE111} %{buildroot}%{_sysconfdir}/%{name}/%{remove_environ_prefix %{SOURCE111}} +install -m 644 -T %{SOURCE112} %{buildroot}%{_sysconfdir}/%{name}/%{remove_environ_prefix %{SOURCE112}} + +# place systemd/tmpfiles.d/kubernetes.conf to /usr/lib/tmpfiles.d/kubernetes.conf +install -d -m 0755 %{buildroot}%{_tmpfilesdir} +install -p -m 0644 -t %{buildroot}/%{_tmpfilesdir} %{SOURCE115} -install -m 0644 -T %{SOURCE6} %{buildroot}%{_sysconfdir}/%{name}/apiserver -install -m 0644 -T %{SOURCE7} %{buildroot}%{_sysconfdir}/%{name}/config -install -m 0644 -T %{SOURCE8} %{buildroot}%{_sysconfdir}/%{name}/controller-manager -install -m 0644 -T %{SOURCE9} %{buildroot}%{_sysconfdir}/%{name}/kubelet -install -m 0644 -T %{SOURCE10} %{buildroot}%{_sysconfdir}/%{name}/kubelet.kubeconfig -install -m 0644 -T %{SOURCE11} %{buildroot}%{_sysconfdir}/%{name}/proxy -install -m 0644 -T %{SOURCE12} %{buildroot}%{_sysconfdir}/%{name}/scheduler +echo "+++ INSTALLING sysusers.d" +install -D -m644 -vp %{SOURCE116} %{buildroot}%{_sysusersdir}/%{name}.conf +# enable CPU and Memory accounting install -d -m 0755 %{buildroot}/%{_sysconfdir}/systemd/system.conf.d -install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system.conf.d %{SOURCE13} - -install -d -m 0755 %{buildroot}%{_tmpfilesdir} -install -Dpm 0644 -t %{buildroot}/%{_tmpfilesdir} %{SOURCE15} +install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system.conf.d %{SOURCE113} -echo "INSTALLING service files" +echo "+++ INSTALLING service files" install -d -m 0755 %{buildroot}%{_unitdir} -for f in %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} %{SOURCE5} -do - install -m 0644 -t %{buildroot}%{_unitdir} $f -done +install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE101} +install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE102} +install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE103} +install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE104} +install -m 0644 -t %{buildroot}%{_unitdir} %{SOURCE105} -echo "INSTALLING manpages" +echo "+++ INSTALLING manpages" install -d %{buildroot}%{_mandir}/man1 -install -p -m 0644 docs/man/man1/*.1 %{buildroot}%{_mandir}/man1 +# from k8s tarball copied docs/man/man1/*.1 +install -p -m 644 docs/man/man1/*.1 %{buildroot}%{_mandir}/man1 + +# install the place the kubelet defaults to put volumes and default folder structure install -d %{buildroot}%{_sharedstatedir}/kubelet + mkdir -p %{buildroot}/run install -d -m 0755 %{buildroot}/run/%{name}/ popd -mv src/k8s.io/kubernetes/LICENSE . +mv src/k8s.io/kubernetes/CHANGELOG/CHANGELOG-*.md . mv src/k8s.io/kubernetes/*.md . - - -%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 [[ `systemctl show docker kubelet | grep -q -e CPUAccounting=no -e MemoryAccounting=no; echo $?` -eq 0 ]]; then - systemctl daemon-reexec +mv src/k8s.io/kubernetes/LICENSE . +# CHANGELOG.md is symlink to CHANGELOG/README.md and not actual +# change log. no need to include generated rpms +rm CHANGELOG.md + +%check +if [ 1 != 1 ]; then +echo "******Testing the commands*****" +hack/test-cmd.sh +echo "******Benchmarking kube********" +hack/benchmark-go.sh + +echo "******Testing the go code******" +hack/test-go.sh +echo "******Testing integration******" +hack/test-integration.sh --use_go_build fi -%preun node -%systemd_preun kubelet kube-proxy - -%postun node -%systemd_postun kubelet kube-proxy - - +############################################## %files -# blank pkg as it depends on master and node +# 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 +%{_sysusersdir}/%{name}.conf %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 -%{_bindir}/kube-controller-manager -%{_bindir}/kube-scheduler -%{_unitdir}/kube-apiserver.service -%{_unitdir}/kube-controller-manager.service -%{_unitdir}/kube-scheduler.service -%{_mandir}/man1/kube-apiserver.1* -%{_mandir}/man1/kube-scheduler.1* -%{_mandir}/man1/kube-controller-manager.1* -%attr(754, -, kube) %caps(cap_net_bind_service=ep) %{_bindir}/kube-apiserver %verify(not size mtime md5) %attr(755, kube,kube) %dir /run/%{name} -%license LICENSE -%doc *.md +############################################## %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 +%{_sysusersdir}/%{name}.conf %dir %{_sharedstatedir}/kubelet %dir %{_sysconfdir}/%{name} %dir %{_sysconfdir}/%{name}/manifests @@ -264,35 +322,65 @@ fi %config(noreplace) %{_sysconfdir}/%{name}/kubelet.kubeconfig %config(noreplace) %{_sysconfdir}/systemd/system.conf.d/kubernetes-accounting.conf %{_tmpfilesdir}/kubernetes.conf -%{_bindir}/kubelet -%{_bindir}/kube-proxy -%{_unitdir}/kube-proxy.service -%{_unitdir}/kubelet.service -%{_mandir}/man1/kubelet.1* -%{_mandir}/man1/kube-proxy.1* -%license LICENSE -%doc *.md %verify(not size mtime md5) %attr(755, kube,kube) %dir /run/%{name} +############################################## %files kubeadm -%config(noreplace) %{_sysconfdir}/systemd/system/kubelet.service.d/kubeadm.conf -%dir %{_sysconfdir}/systemd/system/kubelet.service.d -%{_bindir}/kubeadm -%{_mandir}/man1/kubeadm.1* -%{_mandir}/man1/kubeadm-* %license LICENSE %doc *.md +%{_mandir}/man1/kubeadm.1* +%{_mandir}/man1/kubeadm-* +%{_bindir}/kubeadm +%dir %{_sysconfdir}/systemd/system/kubelet.service.d +%config(noreplace) %{_sysconfdir}/systemd/system/kubelet.service.d/kubeadm.conf +############################################## %files client -%{_datadir}/bash-completion/completions/kubectl -%{_bindir}/kubectl -%{_mandir}/man1/kubectl.1* -%{_mandir}/man1/kubectl-* %license LICENSE %doc *.md +%{_mandir}/man1/kubectl.1* +%{_mandir}/man1/kubectl-* +%{_bindir}/kubectl +%{_datadir}/bash-completion/completions/kubectl +%{_datadir}/zsh-completion/completions/kubectl +%{_datadir}/fish-completion/completions/kubectl +############################################## +%pre master +%sysusers_create_compat %{SOURCE116} + +%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 +%sysusers_create_compat %{SOURCE116} + +%post node +%systemd_post kubelet kube-proxy +# If accounting is not currently enabled systemd reexec +if [[ `systemctl show 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 +* Fri May 26 2023 mgb01105731 - 1.27.2-1 +- Update version to 1.27.2 + * Tue Apr 11 2023 chen_yu_ao - 1.23.3-3 - change spec file format diff --git a/kubernetes.sysusers b/kubernetes.sysusers new file mode 100644 index 0000000000000000000000000000000000000000..dd6bc962f7d68e6fd2f0925f8179fbcd9c5325b4 --- /dev/null +++ b/kubernetes.sysusers @@ -0,0 +1,3 @@ +#Type Name ID GECOS Home directory Shell +u kube - "Kubernetes user" /var/lib/kubelet /sbin/nologin +