Skip to content

Commit

Permalink
adds a custom hyperkube script and fixes the build scripts and rpms
Browse files Browse the repository at this point in the history
  • Loading branch information
p0lyn0mial committed Dec 11, 2019
1 parent 621249b commit f268ebf
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 14 deletions.
3 changes: 2 additions & 1 deletion Makefile
Expand Up @@ -44,7 +44,8 @@ all build:
# Example:
# make build-all
build-all:
hack/build-go.sh vendor/k8s.io/kubernetes/cmd/hyperkube cmd/openshift-tests
hack/build-go.sh
hack/build-go.sh cmd/openshift-tests
.PHONY: build-all

# Build the test binaries.
Expand Down
9 changes: 4 additions & 5 deletions hack/build-go.sh
Expand Up @@ -14,11 +14,10 @@ platform="$(os::build::host_platform)"

build_targets=("$@")
if [[ -z "$@" ]]; then
if [[ "${platform}" == linux/* ]]; then
build_targets=(vendor/k8s.io/kubernetes/cmd/hyperkube)
else
build_targets=(vendor/k8s.io/kubernetes/cmd/hyperkube)
fi
build_targets=(vendor/k8s.io/kubernetes/cmd/kube-apiserver
vendor/k8s.io/kubernetes/cmd/kube-controller-manager
vendor/k8s.io/kubernetes/cmd/kube-scheduler
vendor/k8s.io/kubernetes/cmd/kubelet)
fi

OS_BUILD_PLATFORMS=("${OS_BUILD_PLATFORMS[@]:-${platform}}")
Expand Down
7 changes: 5 additions & 2 deletions hack/build-local-images.py
Expand Up @@ -67,9 +67,12 @@
"tag": "latest",
"directory": "hyperkube",
"binaries": {
"hyperkube": "/usr/bin/hyperkube",
"kube-apiserver": "/usr/bin/kube-apiserver",
"kube-controller-manager": "/usr/bin/kube-controller-manager",
"kube-scheduler": "/usr/bin/kube-scheduler",
"kubelet": "/usr/bin/kubelet",
},
"files": {}
"files": {"hyperkube" : "/usr/bin/hyperkube"}
}
}

Expand Down
5 changes: 4 additions & 1 deletion hack/lib/constants.sh
Expand Up @@ -28,7 +28,10 @@ readonly OS_OUTPUT_BINPATH="${OS_OUTPUT}/bin"
readonly OS_OUTPUT_PKGDIR="${OS_OUTPUT}/pkgdir"

readonly OS_IMAGE_COMPILE_TARGETS_LINUX=(
vendor/k8s.io/kubernetes/cmd/hyperkube
vendor/k8s.io/kubernetes/cmd/kube-apiserver
vendor/k8s.io/kubernetes/cmd/kube-controller-manager
vendor/k8s.io/kubernetes/cmd/kube-scheduler
vendor/k8s.io/kubernetes/cmd/kubelet
)
readonly OS_SCRATCH_IMAGE_COMPILE_TARGETS_LINUX=(
""
Expand Down
11 changes: 7 additions & 4 deletions images/hyperkube/Dockerfile.rhel
@@ -1,12 +1,15 @@
FROM registry.svc.ci.openshift.org/ocp/builder:golang-1.12 AS builder
WORKDIR /go/src/github.com/openshift/origin
COPY . .
RUN make build WHAT=vendor/k8s.io/kubernetes/cmd/hyperkube; \
mkdir -p /tmp/build; \
cp /go/src/github.com/openshift/origin/_output/local/bin/linux/$(go env GOARCH)/hyperkube /tmp/build/hyperkube
RUN for p in vendor/k8s.io/kubernetes/cmd/kube-apiserver vendor/k8s.io/kubernetes/cmd/kube-controller-manager \
vendor/k8s.io/kubernetes/cmd/kube-scheduler vendor/k8s.io/kubernetes/cmd/kubelet; do make build WHAT=$p; done && \
mkdir -p /tmp/build && \
cp images/hyperkube/hyperkube /tmp/build && \
cp /go/src/github.com/openshift/origin/_output/local/bin/linux/$(go env GOARCH)/{kube-apiserver,kube-controller-manager,kube-scheduler,kubelet} \
/tmp/build

FROM registry.svc.ci.openshift.org/ocp/4.2:base
COPY --from=builder /tmp/build/hyperkube /usr/bin/
COPY --from=builder /tmp/build/* /usr/bin/
LABEL io.k8s.display-name="OpenShift Kubernetes Server Commands" \
io.k8s.description="OpenShift is a platform for developing, building, and deploying containerized applications." \
io.openshift.tags="openshift,hyperkube" \
Expand Down
59 changes: 59 additions & 0 deletions images/hyperkube/hyperkube
@@ -0,0 +1,59 @@
#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail

BINS=(
kube-apiserver
kube-controller-manager
kube-scheduler
kubelet
)

function array_contains() {
local search="$1"
local element
shift
for element; do
if [[ "${element}" == "${search}" ]]; then
return 0
fi
done
return 1
}

function print_usage() {
cat <<EOF
Usage:
$(basename "$0") [command]
Available Commands:
help Help about any command
kube-apiserver
kube-controller-manager
kube-proxy
kube-scheduler
kubectl kubectl controls the Kubernetes cluster manager
kubelet
EOF
exit 0
}

function main() {
if [[ "$#" -lt 1 || "${1:-}" == "--help" || "${1:-}" == "help" ]]; then
print_usage
fi
if ! array_contains "$1" "${BINS[@]}"; then
echo "$1: command not supported"
print_usage
fi
command=${1}
shift
if ! command -v "${command}" &>/dev/null; then
echo "${command}: command not found"
exit 1
fi
exec "${command}" "${@}"
}

main "${@}"
8 changes: 7 additions & 1 deletion origin.spec
Expand Up @@ -139,15 +139,21 @@ PLATFORM="$(go env GOHOSTOS)/$(go env GOHOSTARCH)"
install -d %{buildroot}%{_bindir}

# Install linux components
for bin in hyperkube
for bin in kube-apiserver kube-controller-manager kube-scheduler kubelet
do
echo "+++ INSTALLING ${bin}"
install -p -m 755 _output/local/bin/${PLATFORM}/${bin} %{buildroot}%{_bindir}/${bin}
done

install -p -m 755 images/hyperkube/hyperkube %{buildroot}%{_bindir}/hyperkube

%files hyperkube
%license LICENSE
%{_bindir}/hyperkube
%{_bindir}/kube-apiserver
%{_bindir}/kube-controller-manager
%{_bindir}/kube-scheduler
%{_bindir}/kubelet
%defattr(-,root,root,0700)

%changelog

0 comments on commit f268ebf

Please sign in to comment.