Summary: Production-Grade Container Scheduling and Management Name: kubernetes Version: 1.12.4 Release: 1 License: ASL 2.0 URL: http://kubernetes.io Source: https://github.com/kubernetes/kubernetes/archive/v1.12.4.tar.gz Patch: kubernetes-1.12.4-aix.patch Group: Applications/System BuildRequires: golang %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 kubeadm Summary: Kubernetes kubeadm bootstrapping tool Requires: crictl = 1.11.1 Requires: kubelet = 1.12.4 Requires: kubernetes-node-img = 1.12.4 Conflicts: icp-worker %description -n kubeadm Kubeadm is a tool built to provide kubeadm init and kubeadm join as best-practice "fast path" for creating Kubernetes clusters. %package -n kubectl Summary: Command-line utility for interacting with a Kubernetes cluster. %description -n kubectl Command-line utility for interacting with a Kubernetes cluster. %package -n kubelet Summary: The node agent of Kubernetes, the container cluster manager. Requires: criwpar >= 0.2.0 %description -n kubelet The node agent of Kubernetes, the container cluster manager. %package -n kubernetes-master-img Summary: Images for Kubernetes master node. Requires: criwpar >= 0.2.0 Requires: etcd-img = 3.3.2 Requires: kubernetes-node-img = 1.12.4 %description -n kubernetes-master-img Images for Kubernetes master node. %package -n kubernetes-node-img Summary: Images for Kubernetes node. Requires: criwpar >= 0.2.0 %description -n kubernetes-node-img Images for Kubernetes master node. %pre -n kubectl # Processor Version: PV_8_Compat # Processor Version: PV_7_Compat # Processor Version: PV_6_Compat ProcVersion=`prtconf | grep "Processor Version:" | awk -F_ '{ print $2}'` #echo $ProcVersion if [ $ProcVersion -lt 8 ] then echo "This rpm won't work with Power $ProcVersion compatibiliy mode." echo "prtconf: " prtconf | grep "Processor Version:" exit 1 fi %post -n kubeadm mkssys -p /opt/freeware/bin/kubeletsrc -s kubelet -u 0 -e /dev/null -i /dev/null -o /dev/null -R -Q -S -f 9 -n 15 -E 20 -d -w 20 -G kube-system exit 0 %preun -n kubeadm stopsrc -s kubelet exit 0 %postun -n kubeadm rmssys -s kubelet exit 0 %postun -n kubelet ifconfig vi0 detach >/dev/null 2>&1 exit 0 %post -n kubernetes-master-img mkwpari -e PATH=/usr/bin:/etc:/usr/sbin:/sbin:/opt/freeware/bin -c /opt/freeware/bin/kube-apiserver -w /opt/freeware/bin /opt/freeware/share/kubernetes/kube-apiserver.bff k8s.gcr.io/kube-apiserver-ppc64:v1.12.4 >/dev/null rm -f /opt/freeware/share/kubernetes/kube-apiserver.bff mkwpari -e PATH=/usr/bin:/etc:/usr/sbin:/sbin:/opt/freeware/bin -c /opt/freeware/bin/kube-controller-manager -w /opt/freeware/bin /opt/freeware/share/kubernetes/kube-controller-manager.bff k8s.gcr.io/kube-controller-manager-ppc64:v1.12.4 >/dev/null rm -f /opt/freeware/share/kubernetes/kube-controller-manager.bff mkwpari -e PATH=/usr/bin:/etc:/usr/sbin:/sbin:/opt/freeware/bin -c /opt/freeware/bin/kube-scheduler -w /opt/freeware/bin /opt/freeware/share/kubernetes/kube-scheduler.bff k8s.gcr.io/kube-scheduler-ppc64:v1.12.4 >/dev/null rm -f /opt/freeware/share/kubernetes/kube-scheduler.bff exit 0 %postun -n kubernetes-master-img rmwpari k8s.gcr.io/kube-apiserver-ppc64:v1.12.4 >/dev/null 2>&1 rmwpari k8s.gcr.io/kube-controller-manager-ppc64:v1.12.4 >/dev/null 2>&1 rmwpari k8s.gcr.io/kube-scheduler-ppc64:v1.12.4 >/dev/null 2>&1 exit 0 %post -n kubernetes-node-img mkwpari -e PATH=/usr/bin:/etc:/usr/sbin:/sbin:/opt/freeware/bin -c /bin/sh -w / /opt/freeware/share/kubernetes/kube-proxy.bff k8s.gcr.io/kube-proxy-ppc64:v1.12.4 >/dev/null rm -f /opt/freeware/share/kubernetes/kube-proxy.bff mkwpari -T k8s.gcr.io/kube-proxy-ppc64:v1.12.4 ibmcom/hyperkube-aix:v1.12.4 >/dev/null exit 0 %postun -n kubernetes-node-img rmwpari k8s.gcr.io/kube-proxy-ppc64:v1.12.4 >/dev/null 2>&1 rmwpari ibmcom/hyperkube-aix:v1.12.4 >/dev/null 2>&1 exit 0 %prep %setup -q %patch -p1 -b .aix %build export PATH=/usr/bin:/etc:/usr/sbin:/sbin:/opt/freeware/lib/golang/bin:/opt/freeware/bin mkdir -p ./_build/src/k8s.io/ ln -s $(pwd) ./_build/src/k8s.io/kubernetes export GOPATH=$(pwd)/_build export GOFLAGS="-gcflags=all=-trimpath=$GOPATH" ulimit -d unlimited ulimit -m unlimited ulimit -s unlimited ulimit -f unlimited # Build go-bindata, this is needed by i18n go build -v -o dist/go-bindata k8s.io/kubernetes/vendor/github.com/jteeuwen/go-bindata/go-bindata dist/go-bindata -nometadata -nocompress -o pkg/generated/bindata.go.tmp -pkg generated -ignore .jpg -ignore .png -ignore .md -ignore 'BUILD(\.bazel)?' "translations/..." gofmt -s -w pkg/generated/bindata.go.tmp cat pkg/generated/bindata.go.tmp > pkg/generated/bindata.go rm -f pkg/generated/bindata.go.tmp # Build openapi-gen, this is needed by kube-apiserver and genman cd $GOPATH/src/k8s.io/kubernetes go build -v -o dist/openapi-gen k8s.io/kubernetes/vendor/k8s.io/kube-openapi/cmd/openapi-gen dist/openapi-gen --v 1 --logtostderr --go-header-file $GOPATH/src/k8s.io/kubernetes/hack/boilerplate/boilerplate.go.txt --output-file-base zz_generated.openapi --output-package k8s.io/kubernetes/pkg/generated/openapi --report-filename tmp_api_violations.report --input-dirs \ k8s.io/kubernetes/cmd/cloud-controller-manager/app/apis/config/v1alpha1,\ k8s.io/kubernetes/pkg/apis/abac/v0,\ k8s.io/kubernetes/pkg/apis/abac/v1beta1,\ k8s.io/kubernetes/pkg/version,\ k8s.io/kubernetes/vendor/k8s.io/api/admission/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1alpha1,\ k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/api/apps/v1,\ k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta2,\ k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1,\ k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1,\ k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v1,\ k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v2beta1,\ k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v2beta2,\ k8s.io/kubernetes/vendor/k8s.io/api/batch/v1,\ k8s.io/kubernetes/vendor/k8s.io/api/batch/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/api/batch/v2alpha1,\ k8s.io/kubernetes/vendor/k8s.io/api/certificates/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/api/coordination/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/api/core/v1,\ k8s.io/kubernetes/vendor/k8s.io/api/events/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/api/extensions/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/api/imagepolicy/v1alpha1,\ k8s.io/kubernetes/vendor/k8s.io/api/networking/v1,\ k8s.io/kubernetes/vendor/k8s.io/api/policy/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1,\ k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1alpha1,\ k8s.io/kubernetes/vendor/k8s.io/api/rbac/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/api/scheduling/v1alpha1,\ k8s.io/kubernetes/vendor/k8s.io/api/scheduling/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/api/settings/v1alpha1,\ k8s.io/kubernetes/vendor/k8s.io/api/storage/v1,\ k8s.io/kubernetes/vendor/k8s.io/api/storage/v1alpha1,\ k8s.io/kubernetes/vendor/k8s.io/api/storage/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/resource,\ k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1,\ k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1,\ k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime,\ k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/util/intstr,\ k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/version,\ k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/audit/v1,\ k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/audit/v1alpha1,\ k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/audit/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/example/v1,\ k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/example2/v1,\ k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1,\ k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/client-go/pkg/version,\ k8s.io/kubernetes/vendor/k8s.io/csi-api/pkg/apis/csi/v1alpha1,\ k8s.io/kubernetes/vendor/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1,\ k8s.io/kubernetes/vendor/k8s.io/kube-aggregator/pkg/apis/apiregistration/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/kube-controller-manager/config/v1alpha1,\ k8s.io/kubernetes/vendor/k8s.io/kube-proxy/config/v1alpha1,\ k8s.io/kubernetes/vendor/k8s.io/kube-scheduler/config/v1alpha1,\ k8s.io/kubernetes/vendor/k8s.io/kubelet/config/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/metrics/pkg/apis/custom_metrics/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/metrics/pkg/apis/custom_metrics/v1beta2,\ k8s.io/kubernetes/vendor/k8s.io/metrics/pkg/apis/external_metrics/v1beta1,\ k8s.io/kubernetes/vendor/k8s.io/metrics/pkg/apis/metrics/v1alpha1,\ k8s.io/kubernetes/vendor/k8s.io/metrics/pkg/apis/metrics/v1beta1 cd - # kubeadm go build -v -o dist/kubeadm k8s.io/kubernetes/cmd/kubeadm # kubectl go build -v -o dist/kubectl k8s.io/kubernetes/cmd/kubectl # kubelet go build -v -o dist/kubelet k8s.io/kubernetes/cmd/kubelet # man pages generator go build -v -o dist/genman k8s.io/kubernetes/cmd/genman # kube-proxy go build -v -o dist/kube-proxy k8s.io/kubernetes/cmd/kube-proxy # kube-apiserver go build -v -o dist/kube-apiserver k8s.io/kubernetes/cmd/kube-apiserver # kube-controller-manager go build -v -o dist/kube-controller-manager k8s.io/kubernetes/cmd/kube-controller-manager # kube-scheduler go build -v -o dist/kube-scheduler k8s.io/kubernetes/cmd/kube-scheduler # kube-proxy.bff rm -rf dist/kube-proxy-rootfs mkdir -p dist/kube-proxy-rootfs cd dist/kube-proxy-rootfs mkdir dev etc home tmp var mkdir -p opt/freeware/bin/ ln -s /usr/bin/ bin ln -s /usr/lib/ lib ln -s /usr/lib/boot/unix_64 unix mv ../kube-proxy ./opt/freeware/bin/ find . | backup -iqf ../kube-proxy.bff cd - # kube-apiserver.bff rm -rf dist/kube-apiserver-rootfs mkdir -p dist/kube-apiserver-rootfs cd dist/kube-apiserver-rootfs mkdir dev etc home tmp var mkdir -p opt/freeware/bin/ ln -s /usr/bin/ bin ln -s /usr/lib/ lib ln -s /usr/lib/boot/unix_64 unix mv ../kube-apiserver ./opt/freeware/bin/ find . | backup -iqf ../kube-apiserver.bff cd - # kube-controller-manager.bff rm -rf dist/kube-controller-manager-rootfs mkdir -p dist/kube-controller-manager-rootfs cd dist/kube-controller-manager-rootfs mkdir dev etc home tmp var mkdir -p opt/freeware/bin/ ln -s /usr/bin/ bin ln -s /usr/lib/ lib ln -s /usr/lib/boot/unix_64 unix mv ../kube-controller-manager ./opt/freeware/bin/ find . | backup -iqf ../kube-controller-manager.bff cd - # kube-scheduler.bff rm -rf dist/kube-scheduler-rootfs mkdir -p dist/kube-scheduler-rootfs cd dist/kube-scheduler-rootfs mkdir dev etc home tmp var mkdir -p opt/freeware/bin/ ln -s /usr/bin/ bin ln -s /usr/lib/ lib ln -s /usr/lib/boot/unix_64 unix mv ../kube-scheduler ./opt/freeware/bin/ find . | backup -iqf ../kube-scheduler.bff cd - # Create kubeletsrc script (derived from kubernetes/build/rpms/10-kubeadm.conf) cat > dist/kubeletsrc << 'EOF' #!/bin/sh # Note: This dropin only works with kubeadm and kubelet v1.11+ KUBELET_KUBECONFIG_ARGS="--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf" KUBELET_CONFIG_ARGS="--config=/var/lib/kubelet/config.yaml" # This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically if [ -f /var/lib/kubelet/kubeadm-flags.env ]; then KUBELET_KUBEADM_ARGS=$(grep ^KUBELET_KUBEADM_ARGS= /var/lib/kubelet/kubeadm-flags.env | cut -d= -f2-) fi # This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use # the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file. if [ -f /etc/sysconfig/kubelet ]; then KUBELET_EXTRA_ARGS=$(grep ^KUBELET_EXTRA_ARGS= /etc/sysconfig/kubelet | cut -d= -f2-) fi exec /opt/freeware/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS EOF mkdir -p dist/sysconfig cat > dist/sysconfig/kubelet << 'EOF' # Kubelet extra flags for AIX: # - use syslog for logging # - allow for longer container creation time KUBELET_EXTRA_ARGS=--logtostderr=false --logtosyslog=kubelet --runtime-request-timeout=10m EOF %install mkdir -p ${RPM_BUILD_ROOT}%{_bindir} strip -X64 -t dist/kubeadm /usr/bin/install -M 0755 -f ${RPM_BUILD_ROOT}%{_bindir} dist/kubeadm strip -X64 -t dist/kubectl /usr/bin/install -M 0755 -f ${RPM_BUILD_ROOT}%{_bindir} dist/kubectl strip -X64 -t dist/kubelet /usr/bin/install -M 0755 -f ${RPM_BUILD_ROOT}%{_bindir} dist/kubelet /usr/bin/install -M 0755 -f ${RPM_BUILD_ROOT}%{_bindir} dist/kubeletsrc mkdir -p ${RPM_BUILD_ROOT}/etc/sysconfig /usr/bin/install -M 0644 -f ${RPM_BUILD_ROOT}/etc/sysconfig dist/sysconfig/kubelet mkdir -p ${RPM_BUILD_ROOT}/etc/cni/net.d mkdir -p ${RPM_BUILD_ROOT}/opt/cni/bin mkdir -p ${RPM_BUILD_ROOT}/usr/libexec/kubernetes/kubelet-plugins/volume/exec mkdir -p ${RPM_BUILD_ROOT}/var/lib/calico mkdir -p ${RPM_BUILD_ROOT}/var/lib/etcd mkdir -p ${RPM_BUILD_ROOT}/var/lib/kubelet mkdir -p ${RPM_BUILD_ROOT}/var/run/calico mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/kubernetes /usr/bin/install -M 0644 -f ${RPM_BUILD_ROOT}%{_datadir}/kubernetes dist/kube-apiserver.bff /usr/bin/install -M 0644 -f ${RPM_BUILD_ROOT}%{_datadir}/kubernetes dist/kube-controller-manager.bff /usr/bin/install -M 0644 -f ${RPM_BUILD_ROOT}%{_datadir}/kubernetes dist/kube-proxy.bff /usr/bin/install -M 0644 -f ${RPM_BUILD_ROOT}%{_datadir}/kubernetes dist/kube-scheduler.bff # Calico files for kubeadm init/join /usr/bin/install -M 0644 -f ${RPM_BUILD_ROOT}%{_datadir}/kubernetes cluster/addons/calico-policy-controller/calico-aix.yaml /usr/bin/install -M 0644 -f ${RPM_BUILD_ROOT}%{_datadir}/kubernetes cluster/addons/calico-policy-controller/calico-node-aix.yaml mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/man1 dist/genman ${RPM_BUILD_ROOT}%{_mandir}/man1 kubeadm dist/genman ${RPM_BUILD_ROOT}%{_mandir}/man1 kubectl dist/genman ${RPM_BUILD_ROOT}%{_mandir}/man1 kubelet %clean rm -rf ${RPM_BUILD_ROOT} #%files -n kubeadm #%license LICENSE Godeps/LICENSES #%{_bindir}/kubeadm #%{_bindir}/kubeletsrc #%{_datadir}/kubernetes/calico-aix.yaml #%{_datadir}/kubernetes/calico-node-aix.yaml #%{_mandir}/man1/kubeadm*.1* #%dir /etc/sysconfig #/etc/sysconfig/kubelet #%dir /var/lib/calico #%dir /var/lib/etcd #%dir /var/run/calico %files -n kubectl %license LICENSE Godeps/LICENSES %{_bindir}/kubectl %{_mandir}/man1/kubectl*.1* %files -n kubelet %license LICENSE Godeps/LICENSES %{_bindir}/kubelet %{_mandir}/man1/kubelet*.1* %dir /etc/cni/net.d %dir /opt/cni/bin %dir /usr/libexec/kubernetes/kubelet-plugins/volume/exec %dir /var/lib/kubelet #%files -n kubernetes-master-img #%license LICENSE Godeps/LICENSES #%config(missingok) %{_datadir}/kubernetes/kube-apiserver.bff #%config(missingok) %{_datadir}/kubernetes/kube-controller-manager.bff #%config(missingok) %{_datadir}/kubernetes/kube-scheduler.bff %files -n kubernetes-node-img %license LICENSE Godeps/LICENSES %config(missingok) %{_datadir}/kubernetes/kube-proxy.bff %changelog * Wed Mar 20 2019 Ayappan P - 1.12.4-1 - AIX Toolbox build * Fri Mar 1 2019 Damien Bergamini - 1.12.4-1 - Initial port of Kubernetes 1.12.4 to AIX - Switch from gccgo compiler to golang * Tue Aug 21 2018 Damien Bergamini - 1.10.0-1 - Initial port of Kubernetes 1.10.0 to AIX