From 69afd75e9a09c61f24dee1d449795cf88a5a1925 Mon Sep 17 00:00:00 2001 From: irbekrm Date: Thu, 22 Jul 2021 16:08:22 +0100 Subject: [PATCH 1/7] Adds an option to build k8s 1.22 kind cluster Signed-off-by: irbekrm --- devel/cluster/create-kind.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/devel/cluster/create-kind.sh b/devel/cluster/create-kind.sh index e97ddc02f..4d7ba7659 100755 --- a/devel/cluster/create-kind.sh +++ b/devel/cluster/create-kind.sh @@ -47,6 +47,10 @@ elif [[ "$K8S_VERSION" =~ 1\.20 ]] ; then KIND_IMAGE_SHA="sha256:b40ecf8bcb188f6a0d0f5d406089c48588b75edc112c6f635d26be5de1c89040" elif [[ "$K8S_VERSION" =~ 1\.21 ]] ; then KIND_IMAGE_SHA="sha256:fae9a58f17f18f06aeac9772ca8b5ac680ebbed985e266f711d936e91d113bad" +elif [[ "$K8S_VERSION" =~ 1\.22 ]] ; then + KIND_IMAGE_SHA="sha256:0d32eba8eb762fde6e8e92dbb92811c327add2f7f3c8d6206f9f668a3ae1dee7" + # Override KIND_IMAGE_REPO set in devel/lib/lib.sh till there is a 1.22 image in kindest/node. + KIND_IMAGE_REPO="eu.gcr.io/jetstack-build-infra-images/kind" else echo "Unrecognised Kubernetes version '${K8S_VERSION}'! Aborting..." exit 1 From 00542dd7f6d9cac47327ad599458b5d9e251ffae Mon Sep 17 00:00:00 2001 From: irbekrm Date: Thu, 22 Jul 2021 17:19:27 +0100 Subject: [PATCH 2/7] Bump apiregistration API version to v1 Signed-off-by: irbekrm --- devel/addon/samplewebhook/chart/templates/apiservice.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devel/addon/samplewebhook/chart/templates/apiservice.yaml b/devel/addon/samplewebhook/chart/templates/apiservice.yaml index 5b67d2a1f..4f6d5ceb7 100644 --- a/devel/addon/samplewebhook/chart/templates/apiservice.yaml +++ b/devel/addon/samplewebhook/chart/templates/apiservice.yaml @@ -1,4 +1,4 @@ -apiVersion: apiregistration.k8s.io/v1beta1 +apiVersion: apiregistration.k8s.io/v1 kind: APIService metadata: name: v1alpha1.{{ .Values.groupName }} From 84f653f01fb874f9f5450fb4694818085e8353f3 Mon Sep 17 00:00:00 2001 From: irbekrm Date: Thu, 22 Jul 2021 19:29:34 +0100 Subject: [PATCH 3/7] e2e test setup installs a different version of Ingress depending on k8s version This is needed because there are no NGINX ingress release that would support work both on k8s v1.16-v1.18 as well as v1.22 Signed-off-by: irbekrm --- devel/addon/ingressnginx/BUILD.bazel | 14 ++++++++++++-- devel/addon/ingressnginx/install.sh | 14 +++++++++++++- test/e2e/images.bzl | 18 ++++++++++++++---- 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/devel/addon/ingressnginx/BUILD.bazel b/devel/addon/ingressnginx/BUILD.bazel index f6e48abb0..9a5fa0d29 100644 --- a/devel/addon/ingressnginx/BUILD.bazel +++ b/devel/addon/ingressnginx/BUILD.bazel @@ -1,9 +1,19 @@ load("@io_bazel_rules_docker//container:bundle.bzl", "container_bundle") +# Ingress image that works on Kubernetes v1.16 - v1.20 container_bundle( - name = "bundle", + name = "bundle_v0.48.1", images = { - "k8s.gcr.io/ingress-nginx/controller:v0.46.0": "@io_kubernetes_ingress-nginx//image", + "k8s.gcr.io/ingress-nginx/controller:v0.48.1": "@io_kubernetes_ingress-nginx_old//image", + }, + tags = ["manual"], +) + +# Ingress image that works on Kubernetes v1.19 -> (including v1.22) +container_bundle( + name = "bundle_v1.0.0-alpha.2", + images = { + "k8s.gcr.io/ingress-nginx/controller:v1.0.0-alpha.2": "@io_kubernetes_ingress-nginx_new//image", }, tags = ["manual"], ) diff --git a/devel/addon/ingressnginx/install.sh b/devel/addon/ingressnginx/install.sh index 896cf84ec..e3da1bc5f 100755 --- a/devel/addon/ingressnginx/install.sh +++ b/devel/addon/ingressnginx/install.sh @@ -34,11 +34,22 @@ if [[ "$IS_OPENSHIFT" == "true" ]] ; then fi # Release name to use with Helm RELEASE_NAME="${RELEASE_NAME:-ingress-nginx}" +IMAGE_TAG="" # Require helm available on PATH check_tool kubectl check_tool helm -require_image "k8s.gcr.io/ingress-nginx/controller:v0.46.0" "//devel/addon/ingressnginx:bundle" + +# We need to install different versions of Ingress depending on which version of +# Kubernetes we are running as the NGINX Ingress controller does not have a +# release where they would support both v1 and v1beta1 versions of networking API. +# TODO: Remove this once we no longer need to test against Kubernetes below v1.19. +if [[ $K8S_VERSION =~ 1\.22 ]]; then + IMAGE_TAG="v1.0.0-alpha.2" +else + IMAGE_TAG="v0.48.1" +fi +require_image "k8s.gcr.io/ingress-nginx/controller:${IMAGE_TAG}" "//devel/addon/ingressnginx:bundle_${IMAGE_TAG}" # Ensure the ingress-nginx namespace exists kubectl get namespace "${NAMESPACE}" || kubectl create namespace "${NAMESPACE}" @@ -54,6 +65,7 @@ helm upgrade \ --version 3.31.0 \ --namespace "${NAMESPACE}" \ --set controller.image.digest="" \ + --set controller.image.tag="${IMAGE_TAG}" \ --set controller.image.pullPolicy=Never \ --set "controller.service.clusterIP=${SERVICE_IP_PREFIX}.15"\ --set controller.service.type=ClusterIP \ diff --git a/test/e2e/images.bzl b/test/e2e/images.bzl index b531ac0d6..6f52cf430 100644 --- a/test/e2e/images.bzl +++ b/test/e2e/images.bzl @@ -35,13 +35,23 @@ def install(): ## Fetch nginx-ingress for use during e2e tests ## You can change the version of nginx-ingress used for tests by changing the - ## 'tag' field in this rule + ## 'tag' and 'digest' fields in these rules. + ## The digest here is the digest of a platform-specific image, so it will not + ## match the manifest list digest in ingress-nginx release notes- you will + ## have to find the value by other means. container_pull( - name = "io_kubernetes_ingress-nginx", + name = "io_kubernetes_ingress-nginx_old", registry = "k8s.gcr.io", repository = "ingress-nginx/controller", - tag = "v0.41.2", - digest = "sha256:e11b7d264cac4cfc7566b78bb150c94168ea4612a4e9769ca549eb03469db906", + tag = "v0.48.1", + digest = "sha256:dcc2d529a9cb95408ba9896639382793fb84361ef43cee9195f264c321e6b638", + ) + container_pull( + name = "io_kubernetes_ingress-nginx_new", + registry = "k8s.gcr.io", + repository = "ingress-nginx/controller", + tag = "v1.0.0-alpha.2", + digest = "sha256:90f417ffd979f6493ea302f6757763365263d2f8112447139dffa97d927f5dfb" ) ## Fetch vault for use during e2e tests From 5e83e35b7cb111d8b797d130d12b9fb3d36cfa03 Mon Sep 17 00:00:00 2001 From: irbekrm Date: Thu, 22 Jul 2021 20:07:37 +0100 Subject: [PATCH 4/7] Allow for ./setup-e2e-deps.sh script to be run locally against k8s v1.22 Without specifying Kubernetes version Signed-off-by: irbekrm --- devel/addon/ingressnginx/install.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/devel/addon/ingressnginx/install.sh b/devel/addon/ingressnginx/install.sh index e3da1bc5f..e8cda5efc 100755 --- a/devel/addon/ingressnginx/install.sh +++ b/devel/addon/ingressnginx/install.sh @@ -39,12 +39,19 @@ IMAGE_TAG="" # Require helm available on PATH check_tool kubectl check_tool helm +check_tool jq # We need to install different versions of Ingress depending on which version of # Kubernetes we are running as the NGINX Ingress controller does not have a # release where they would support both v1 and v1beta1 versions of networking API. +# If running the setup script locally against Kubernetes v1.22, make sure to pass K8S_VERSION +# K8S_VERSION=1.22 ./devel/setup-e2e-deps.sh for this to work. # TODO: Remove this once we no longer need to test against Kubernetes below v1.19. -if [[ $K8S_VERSION =~ 1\.22 ]]; then + +# This allows running ./devel/setup-e2e-deps.sh locally against Kubernetes v1.22 +# without passing the K8S_VERSION env var. +k8s_version=$(kubectl version -ojson | jq -r '.serverVersion | "\(.major).\(.minor)"') +if [[ $k8s_version =~ 1\.22 ]]; then IMAGE_TAG="v1.0.0-alpha.2" else IMAGE_TAG="v0.48.1" From 63873ab8a990a5e8ffdb79d3b030c6593dbcec2c Mon Sep 17 00:00:00 2001 From: irbekrm Date: Thu, 22 Jul 2021 20:08:05 +0100 Subject: [PATCH 5/7] Bump e2e test NGINX ingress Helm chart version Signed-off-by: irbekrm --- devel/addon/ingressnginx/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devel/addon/ingressnginx/install.sh b/devel/addon/ingressnginx/install.sh index e8cda5efc..f54f54b99 100755 --- a/devel/addon/ingressnginx/install.sh +++ b/devel/addon/ingressnginx/install.sh @@ -69,7 +69,7 @@ helm repo update helm upgrade \ --install \ --wait \ - --version 3.31.0 \ + --version 3.34.0 \ --namespace "${NAMESPACE}" \ --set controller.image.digest="" \ --set controller.image.tag="${IMAGE_TAG}" \ From 62bc8544673f7bce76288630cf8fdac4d7c2f191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Valais?= Date: Thu, 22 Jul 2021 20:52:08 +0200 Subject: [PATCH 6/7] e2e: sample-external-issuer v0.1.0 -> v0.1.1 (1.22 compatibility) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Maƫl Valais --- devel/addon/sample-external-issuer/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devel/addon/sample-external-issuer/install.sh b/devel/addon/sample-external-issuer/install.sh index a1988e278..62290fed4 100755 --- a/devel/addon/sample-external-issuer/install.sh +++ b/devel/addon/sample-external-issuer/install.sh @@ -21,7 +21,7 @@ set -o nounset set -o errexit set -o pipefail -SEI_VERSION="v0.1.0" +SEI_VERSION="v0.1.1" SCRIPT_ROOT=$(dirname "${BASH_SOURCE}") source "${SCRIPT_ROOT}/../../lib/lib.sh" From 5edad74e8a62353af5ba0dc735c4d12e705d3ad1 Mon Sep 17 00:00:00 2001 From: irbekrm Date: Thu, 22 Jul 2021 20:27:38 +0100 Subject: [PATCH 7/7] Ensure jq is available Signed-off-by: irbekrm --- devel/addon/ingressnginx/install.sh | 6 ++++-- devel/lib/lib.sh | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/devel/addon/ingressnginx/install.sh b/devel/addon/ingressnginx/install.sh index f54f54b99..31a60a661 100755 --- a/devel/addon/ingressnginx/install.sh +++ b/devel/addon/ingressnginx/install.sh @@ -36,10 +36,12 @@ fi RELEASE_NAME="${RELEASE_NAME:-ingress-nginx}" IMAGE_TAG="" -# Require helm available on PATH +# Require helm, kubectl and jq available on PATH check_tool kubectl check_tool helm -check_tool jq +bazel build //hack/bin:jq +bindir="$(bazel info bazel-bin)" +export PATH="${bindir}/hack/bin/:$PATH" # We need to install different versions of Ingress depending on which version of # Kubernetes we are running as the NGINX Ingress controller does not have a diff --git a/devel/lib/lib.sh b/devel/lib/lib.sh index 0f010ffdc..724fd55ec 100644 --- a/devel/lib/lib.sh +++ b/devel/lib/lib.sh @@ -39,7 +39,7 @@ export INGRESS_IP="${SERVICE_IP_PREFIX}.15" # versions of the tools required for development setup_tools() { check_bazel - bazel build //hack/bin:helm //hack/bin:kind //hack/bin:kubectl //devel/bin:ginkgo + bazel build //hack/bin:helm //hack/bin:kind //hack/bin:kubectl //hack/bin:jq //devel/bin:ginkgo if [[ "$IS_OPENSHIFT" == "true" ]] ; then bazel build //hack/bin:oc3 fi @@ -47,6 +47,7 @@ setup_tools() { export HELM="${bindir}/hack/bin/helm" export KIND="${bindir}/hack/bin/kind" export OC3="${bindir}/hack/bin/oc3" + export JQ="${bindir}/hack/bin/jq" export KUBECTL="${bindir}/hack/bin/kubectl" export KUSTOMIZE="${bindir}/hack/bin/kustomize" export GINKGO="${bindir}/devel/bin/ginkgo"