diff --git a/hack/ensure-kubectl.sh b/hack/ensure-kubectl.sh index b14197e5cc..ec56a0734e 100755 --- a/hack/ensure-kubectl.sh +++ b/hack/ensure-kubectl.sh @@ -14,27 +14,38 @@ # See the License for the specific language governing permissions and # limitations under the License. +# This has been copied from https://github.com/kubernetes-sigs/cluster-api/blob/v1.6.0/hack/ensure-kubectl.sh + set -o errexit set -o nounset set -o pipefail +if [[ "${TRACE-0}" == "1" ]]; then + set -o xtrace +fi + + +# shellcheck source=./hack/utils.sh +source "$(dirname "${BASH_SOURCE[0]}")/utils.sh" + GOPATH_BIN="$(go env GOPATH)/bin/" -MINIMUM_KUBECTL_VERSION=v1.19.0 -GOARCH="$(go env GOARCH)" -GOOS="$(go env GOOS)" +MINIMUM_KUBECTL_VERSION=v1.28.0 +goarch="$(go env GOARCH)" +goos="$(go env GOOS)" # Ensure the kubectl tool exists and is a viable version, or installs it verify_kubectl_version() { # If kubectl is not available on the path, get it if ! [ -x "$(command -v kubectl)" ]; then - if [ "$GOOS" == "linux" ] || [ "$GOOS" == "darwin" ]; then + if [ "$goos" == "linux" ] || [ "$goos" == "darwin" ]; then if ! [ -d "${GOPATH_BIN}" ]; then mkdir -p "${GOPATH_BIN}" fi echo 'kubectl not found, installing' - curl -sLo "${GOPATH_BIN}/kubectl" "https://dl.k8s.io/release/${MINIMUM_KUBECTL_VERSION}/bin/${GOOS}/${GOARCH}/kubectl" + curl -sLo "${GOPATH_BIN}/kubectl" "https://dl.k8s.io/release/${MINIMUM_KUBECTL_VERSION}/bin/${goos}/${goarch}/kubectl" chmod +x "${GOPATH_BIN}/kubectl" + verify_gopath_bin else echo "Missing required binary in path: kubectl" return 2 @@ -42,7 +53,7 @@ verify_kubectl_version() { fi local kubectl_version - IFS=" " read -ra kubectl_version <<< "$(kubectl version --client --short 2>/dev/null `# "--short" was removed` || kubectl version --client)" + IFS=" " read -ra kubectl_version <<< "$(kubectl version --client)" if [[ "${MINIMUM_KUBECTL_VERSION}" != $(echo -e "${MINIMUM_KUBECTL_VERSION}\n${kubectl_version[2]}" | sort -s -t. -k 1,1 -k 2,2n -k 3,3n | head -n1) ]]; then cat <