From fe1e51e5ef8f89758438920412658f787872dae2 Mon Sep 17 00:00:00 2001 From: yxxhero <11087727+yxxhero@users.noreply.github.com> Date: Fri, 30 May 2025 11:45:28 +0800 Subject: [PATCH] build: update Helm and plugin versions in CI and Dockerfiles (#2059) * build: update Helm and plugin versions in CI and Dockerfiles Signed-off-by: yxxhero --- .github/workflows/ci.yaml | 18 +- Dockerfile | 8 +- Dockerfile.debian-stable-slim | 8 +- Dockerfile.ubuntu | 8 +- go.mod | 6 +- go.sum | 12 +- pkg/app/init.go | 4 +- test/integration/run.sh | 2 +- test/integration/test-cases/chart-needs.sh | 3 +- .../test-cases/chart-needs/output/diff | 10 - .../test-cases/chart-needs/output/diff-live | 10 - .../test-cases/chartify-with-non-chart-dir.sh | 3 +- .../output/diff-result | 5 - .../output/diff-result-live | 5 - test/integration/test-cases/diff-args.sh | 6 +- .../test-cases/diff-args/output/apply | 5 - .../test-cases/diff-args/output/apply-live | 5 - .../test-cases/diff-args/output/diff | 5 - .../test-cases/diff-args/output/diff-live | 5 - test/integration/test-cases/postrender.sh | 3 +- .../test-cases/postrender/output/diff-result | 10 - .../postrender/output/diff-result-live | 10 - .../test-cases/skip-diff-output.sh | 3 +- .../skip-diff-output/output/diff-result | 5 - .../skip-diff-output/output/diff-result-live | 5 - .../test-cases/suppress-output-line-regex.sh | 4 + .../output/diff-after-helm-diff-3.11.0 | 530 ++++++++++++++++++ .../output/diff-live-after-helm-diff-3.11.0 | 530 ++++++++++++++++++ 28 files changed, 1110 insertions(+), 118 deletions(-) create mode 100644 test/integration/test-cases/suppress-output-line-regex/output/diff-after-helm-diff-3.11.0 create mode 100644 test/integration/test-cases/suppress-output-line-regex/output/diff-live-after-helm-diff-3.11.0 diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 351bc8e1..a4e16301 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -57,7 +57,7 @@ jobs: - helm-version: v3.17.3 kustomize-version: v5.2.1 plugin-secrets-version: 4.6.5 - plugin-diff-version: 3.10.0 + plugin-diff-version: 3.11.0 extra-helmfile-flags: '' - helm-version: v3.17.3 kustomize-version: v5.4.3 @@ -67,24 +67,24 @@ jobs: # we will mark this combination as failable, # and instruct users to upgrade helm and helm-secrets at once. plugin-secrets-version: 4.6.5 - plugin-diff-version: 3.11.0 + plugin-diff-version: 3.12.1 extra-helmfile-flags: '' - - helm-version: v3.18.0 + - helm-version: v3.18.1 kustomize-version: v5.2.1 plugin-secrets-version: 4.6.5 - plugin-diff-version: 3.10.0 + plugin-diff-version: 3.11.0 extra-helmfile-flags: '' - - helm-version: v3.18.0 + - helm-version: v3.18.1 kustomize-version: v5.4.3 plugin-secrets-version: 4.6.5 - plugin-diff-version: 3.11.0 + plugin-diff-version: 3.12.1 extra-helmfile-flags: '' # In case you need to test some optional helmfile features, # enable it via extra-helmfile-flags below. - - helm-version: v3.18.0 + - helm-version: v3.18.1 kustomize-version: v5.4.3 plugin-secrets-version: 4.6.5 - plugin-diff-version: 3.11.0 + plugin-diff-version: 3.12.1 extra-helmfile-flags: '--enable-live-output' steps: - uses: actions/checkout@v4 @@ -95,6 +95,8 @@ jobs: - uses: actions/download-artifact@v4 with: name: built-binaries-${{ github.run_id }} + - name: install semver + run: go install github.com/ffurrer2/semver/v2/cmd/semver@latest - name: Extract tar to get built binaries run: tar -xvf built-binaries.tar - name: Display built binaries diff --git a/Dockerfile b/Dockerfile index 3ade50f7..d5775b00 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,7 +30,7 @@ ENV HELM_CONFIG_HOME="${HELM_CONFIG_HOME}" ARG HELM_DATA_HOME="${HOME}/.local/share/helm" ENV HELM_DATA_HOME="${HELM_DATA_HOME}" -ARG HELM_VERSION="v3.18.0" +ARG HELM_VERSION="v3.18.1" ENV HELM_VERSION="${HELM_VERSION}" ARG HELM_LOCATION="https://get.helm.sh" ARG HELM_FILENAME="helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz" @@ -38,8 +38,8 @@ RUN set -x && \ curl --retry 5 --retry-connrefused -LO "${HELM_LOCATION}/${HELM_FILENAME}" && \ echo Verifying ${HELM_FILENAME}... && \ case ${TARGETPLATFORM} in \ - "linux/amd64") HELM_SHA256="961e587fc2c03807f8a99ac25ef063fa9e6915f1894729399cbb95d2a79af931" ;; \ - "linux/arm64") HELM_SHA256="489c9d2d3ea4e095331249d74b4407fb5ac1d338c28429d70cdedccfe6e2b029" ;; \ + "linux/amd64") HELM_SHA256="b1c7e8e261fd30f34c617282813ecafc63628fcd59a255a9fc51b1fe43394c05" ;; \ + "linux/arm64") HELM_SHA256="5ddc8fbd4b17857754a95be799543ceafa5aa9532b05f738ee590a76bb049988" ;; \ esac && \ echo "${HELM_SHA256} ${HELM_FILENAME}" | sha256sum -c && \ echo Extracting ${HELM_FILENAME}... && \ @@ -93,7 +93,7 @@ RUN set -x && \ [ "$(age --version)" = "${AGE_VERSION}" ] && \ [ "$(age-keygen --version)" = "${AGE_VERSION}" ] -RUN helm plugin install https://github.com/databus23/helm-diff --version v3.11.0 && \ +RUN helm plugin install https://github.com/databus23/helm-diff --version v3.12.1 && \ helm plugin install https://github.com/jkroepke/helm-secrets --version v4.6.5 && \ helm plugin install https://github.com/hypnoglow/helm-s3.git --version v0.16.3 && \ helm plugin install https://github.com/aslafy-z/helm-git.git --version v1.3.0 && \ diff --git a/Dockerfile.debian-stable-slim b/Dockerfile.debian-stable-slim index c17cb7eb..aeaa6826 100644 --- a/Dockerfile.debian-stable-slim +++ b/Dockerfile.debian-stable-slim @@ -35,7 +35,7 @@ ENV HELM_CONFIG_HOME="${HELM_CONFIG_HOME}" ARG HELM_DATA_HOME="${HOME}/.local/share/helm" ENV HELM_DATA_HOME="${HELM_DATA_HOME}" -ARG HELM_VERSION="v3.18.0" +ARG HELM_VERSION="v3.18.1" ENV HELM_VERSION="${HELM_VERSION}" ARG HELM_LOCATION="https://get.helm.sh" ARG HELM_FILENAME="helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz" @@ -43,8 +43,8 @@ RUN set -x && \ curl --retry 5 --retry-connrefused -LO "${HELM_LOCATION}/${HELM_FILENAME}" && \ echo Verifying ${HELM_FILENAME}... && \ case ${TARGETPLATFORM} in \ - "linux/amd64") HELM_SHA256="961e587fc2c03807f8a99ac25ef063fa9e6915f1894729399cbb95d2a79af931" ;; \ - "linux/arm64") HELM_SHA256="489c9d2d3ea4e095331249d74b4407fb5ac1d338c28429d70cdedccfe6e2b029" ;; \ + "linux/amd64") HELM_SHA256="b1c7e8e261fd30f34c617282813ecafc63628fcd59a255a9fc51b1fe43394c05" ;; \ + "linux/arm64") HELM_SHA256="5ddc8fbd4b17857754a95be799543ceafa5aa9532b05f738ee590a76bb049988" ;; \ esac && \ echo "${HELM_SHA256} ${HELM_FILENAME}" | sha256sum -c && \ echo Extracting ${HELM_FILENAME}... && \ @@ -99,7 +99,7 @@ RUN set -x && \ [ "$(age --version)" = "${AGE_VERSION}" ] && \ [ "$(age-keygen --version)" = "${AGE_VERSION}" ] -RUN helm plugin install https://github.com/databus23/helm-diff --version v3.11.0 && \ +RUN helm plugin install https://github.com/databus23/helm-diff --version v3.12.1 && \ helm plugin install https://github.com/jkroepke/helm-secrets --version v4.6.5 && \ helm plugin install https://github.com/hypnoglow/helm-s3.git --version v0.16.3 && \ helm plugin install https://github.com/aslafy-z/helm-git.git --version v1.3.0 && \ diff --git a/Dockerfile.ubuntu b/Dockerfile.ubuntu index b8374e9e..a9cb1276 100644 --- a/Dockerfile.ubuntu +++ b/Dockerfile.ubuntu @@ -35,7 +35,7 @@ ENV HELM_CONFIG_HOME="${HELM_CONFIG_HOME}" ARG HELM_DATA_HOME="${HOME}/.local/share/helm" ENV HELM_DATA_HOME="${HELM_DATA_HOME}" -ARG HELM_VERSION="v3.18.0" +ARG HELM_VERSION="v3.18.1" ENV HELM_VERSION="${HELM_VERSION}" ARG HELM_LOCATION="https://get.helm.sh" ARG HELM_FILENAME="helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz" @@ -43,8 +43,8 @@ RUN set -x && \ curl --retry 5 --retry-connrefused -LO "${HELM_LOCATION}/${HELM_FILENAME}" && \ echo Verifying ${HELM_FILENAME}... && \ case ${TARGETPLATFORM} in \ - "linux/amd64") HELM_SHA256="961e587fc2c03807f8a99ac25ef063fa9e6915f1894729399cbb95d2a79af931" ;; \ - "linux/arm64") HELM_SHA256="489c9d2d3ea4e095331249d74b4407fb5ac1d338c28429d70cdedccfe6e2b029" ;; \ + "linux/amd64") HELM_SHA256="b1c7e8e261fd30f34c617282813ecafc63628fcd59a255a9fc51b1fe43394c05" ;; \ + "linux/arm64") HELM_SHA256="5ddc8fbd4b17857754a95be799543ceafa5aa9532b05f738ee590a76bb049988" ;; \ esac && \ echo "${HELM_SHA256} ${HELM_FILENAME}" | sha256sum -c && \ echo Extracting ${HELM_FILENAME}... && \ @@ -99,7 +99,7 @@ RUN set -x && \ [ "$(age --version)" = "${AGE_VERSION}" ] && \ [ "$(age-keygen --version)" = "${AGE_VERSION}" ] -RUN helm plugin install https://github.com/databus23/helm-diff --version v3.11.0 && \ +RUN helm plugin install https://github.com/databus23/helm-diff --version v3.12.1 && \ helm plugin install https://github.com/jkroepke/helm-secrets --version v4.6.5 && \ helm plugin install https://github.com/hypnoglow/helm-s3.git --version v0.16.3 && \ helm plugin install https://github.com/aslafy-z/helm-git.git --version v1.3.0 && \ diff --git a/go.mod b/go.mod index b7db924b..522e8b20 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/gosuri/uitable v0.0.4 github.com/hashicorp/go-getter v1.7.8 github.com/hashicorp/hcl/v2 v2.23.0 - github.com/helmfile/chartify v0.24.1 + github.com/helmfile/chartify v0.24.2 github.com/helmfile/vals v0.41.1 github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.6 @@ -29,7 +29,7 @@ require ( golang.org/x/term v0.32.0 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 - helm.sh/helm/v3 v3.18.0 + helm.sh/helm/v3 v3.18.1 k8s.io/apimachinery v0.33.1 ) @@ -182,7 +182,7 @@ require ( github.com/danieljoos/wincred v1.2.2 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/dylibso/observe-sdk/go v0.0.0-20240819160327-2d926c5d788a // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect + github.com/emicklei/go-restful/v3 v3.12.1 // indirect github.com/envoyproxy/go-control-plane v0.13.1 // indirect github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect github.com/evanphx/json-patch v5.9.11+incompatible // indirect diff --git a/go.sum b/go.sum index 4c3dcff2..3c20771a 100644 --- a/go.sum +++ b/go.sum @@ -895,8 +895,8 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/dylibso/observe-sdk/go v0.0.0-20240819160327-2d926c5d788a h1:UwSIFv5g5lIvbGgtf3tVwC7Ky9rmMFBp0RMs+6f6YqE= github.com/dylibso/observe-sdk/go v0.0.0-20240819160327-2d926c5d788a/go.mod h1:C8DzXehI4zAbrdlbtOByKX6pfivJTBiV9Jjqv56Yd9Q= -github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.12.1 h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU= +github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -1203,8 +1203,8 @@ github.com/hashicorp/jsonapi v1.3.1 h1:GtPvnmcWgYwCuDGvYT5VZBHcUyFdq9lSyCzDjn1Dd github.com/hashicorp/jsonapi v1.3.1/go.mod h1:kWfdn49yCjQvbpnvY1dxxAuAFzISwrrMDQOcu6NsFoM= github.com/hashicorp/vault/api v1.16.0 h1:nbEYGJiAPGzT9U4oWgaaB0g+Rj8E59QuHKyA5LhwQN4= github.com/hashicorp/vault/api v1.16.0/go.mod h1:KhuUhzOD8lDSk29AtzNjgAu2kxRA9jL9NAbkFlqvkBA= -github.com/helmfile/chartify v0.24.1 h1:Ejif7pRkuOI8xf0wt8tVwZLR2FYVUrdw52+FfuS0ZUY= -github.com/helmfile/chartify v0.24.1/go.mod h1:ry7KM6350oLff7GnjmskvRNsyMaOoci552c9z9voyLE= +github.com/helmfile/chartify v0.24.2 h1:tEM+ohiQewQFVqdetHEKegK6Nyh08MuHs0TFB5ScC8k= +github.com/helmfile/chartify v0.24.2/go.mod h1:zyckAr5KGQQiTTFPTLP2DzAJ4dvaUcE6/pfkY/6demU= github.com/helmfile/vals v0.41.1 h1:8vQQETrqaCjondpqsoVgOLT69Gy6r2BWttEOiOj3bnQ= github.com/helmfile/vals v0.41.1/go.mod h1:mmfj2R731IR0iuRt/owyt9yOUjHZqf7kx9OlWH9EYZo= github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec h1:qv2VnGeEQHchGaZ/u7lxST/RaJw+cv273q79D81Xbog= @@ -2284,8 +2284,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -helm.sh/helm/v3 v3.18.0 h1:ItOAm3Quo0dus3NUHjs+lluqWWEIO7xrSW+zKWCrvlw= -helm.sh/helm/v3 v3.18.0/go.mod h1:43QHS1W97RcoFJRk36ZBhHdTfykqBlJdsWp3yhzdq8w= +helm.sh/helm/v3 v3.18.1 h1:qLhXmtqXOHQb0Xv9HJolOLlah8RWbgyzt50xrtTWAlg= +helm.sh/helm/v3 v3.18.1/go.mod h1:43QHS1W97RcoFJRk36ZBhHdTfykqBlJdsWp3yhzdq8w= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/pkg/app/init.go b/pkg/app/init.go index 14c00dac..368ac27f 100644 --- a/pkg/app/init.go +++ b/pkg/app/init.go @@ -18,8 +18,8 @@ import ( const ( HelmRequiredVersion = "v3.17.3" - HelmRecommendedVersion = "v3.18.0" - HelmDiffRecommendedVersion = "v3.11.0" + HelmRecommendedVersion = "v3.18.1" + HelmDiffRecommendedVersion = "v3.12.1" HelmSecretsRecommendedVersion = "v4.6.5" HelmGitRecommendedVersion = "v1.3.0" HelmS3RecommendedVersion = "v0.16.3" diff --git a/test/integration/run.sh b/test/integration/run.sh index a2bc2708..c9e9bc6a 100755 --- a/test/integration/run.sh +++ b/test/integration/run.sh @@ -27,7 +27,7 @@ export HELM_DATA_HOME="${helm_dir}/data" export HELM_HOME="${HELM_DATA_HOME}" export HELM_PLUGINS="${HELM_DATA_HOME}/plugins" export HELM_CONFIG_HOME="${helm_dir}/config" -HELM_DIFF_VERSION="${HELM_DIFF_VERSION:-3.11.0}" +HELM_DIFF_VERSION="${HELM_DIFF_VERSION:-3.12.1}" HELM_GIT_VERSION="${HELM_GIT_VERSION:-1.3.0}" HELM_SECRETS_VERSION="${HELM_SECRETS_VERSION:-3.15.0}" export GNUPGHOME="${PWD}/${dir}/.gnupg" diff --git a/test/integration/test-cases/chart-needs.sh b/test/integration/test-cases/chart-needs.sh index 2ce8e63d..28c921d1 100644 --- a/test/integration/test-cases/chart-needs.sh +++ b/test/integration/test-cases/chart-needs.sh @@ -34,7 +34,8 @@ done for i in $(seq 10); do info "Comparing diff/chart-needs #$i" - ${helmfile} -f ${chart_need_case_input_dir}/${config_file} diff --include-needs | grep -Ev "Comparing release=azuredisk-csi-storageclass, chart=/tmp/.*/azuredisk-csi-storageclass" > ${chart_needs_diff_reverse} || fail "\"helmfile diff\" shouldn't fail" + ${helmfile} -f ${chart_need_case_input_dir}/${config_file} diff --include-needs | grep -Ev "Comparing release=azuredisk-csi-storageclass, chart=/tmp/.*/azuredisk-csi-storageclass" > ${chart_needs_diff_reverse}.tmp || fail "\"helmfile diff\" shouldn't fail" + cat ${chart_needs_diff_reverse}.tmp | sed -E '/\*{20}/,/\*{20}/d' > ${chart_needs_diff_reverse} diff -u ${diff_out_file} ${chart_needs_diff_reverse} || fail "\"helmfile diff\" should be consistent" echo code=$? done diff --git a/test/integration/test-cases/chart-needs/output/diff b/test/integration/test-cases/chart-needs/output/diff index eee980cf..18000beb 100644 --- a/test/integration/test-cases/chart-needs/output/diff +++ b/test/integration/test-cases/chart-needs/output/diff @@ -1,8 +1,3 @@ -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, managed-csi, StorageClass (storage.k8s.io) has been added: - + # Source: azuredisk-csi-storageclass/templates/azuredisk-csi-storageclass.yaml @@ -20,11 +15,6 @@ helmfile-tests, managed-csi, StorageClass (storage.k8s.io) has been added: + allowVolumeExpansion: true Comparing release=azuredisk-csi-driver, chart=azuredisk-csi-driver/azuredisk-csi-driver, namespace=helmfile-tests -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, azuredisk-csi-attacher-binding, ClusterRoleBinding (rbac.authorization.k8s.io) has been added: - + # Source: azuredisk-csi-driver/templates/rbac-csi-azuredisk-controller.yaml diff --git a/test/integration/test-cases/chart-needs/output/diff-live b/test/integration/test-cases/chart-needs/output/diff-live index 17a91c52..e954a28a 100644 --- a/test/integration/test-cases/chart-needs/output/diff-live +++ b/test/integration/test-cases/chart-needs/output/diff-live @@ -1,14 +1,4 @@ "azuredisk-csi-driver" has been added to your repositories -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, managed-csi, StorageClass (storage.k8s.io) has been added: - + # Source: azuredisk-csi-storageclass/templates/azuredisk-csi-storageclass.yaml diff --git a/test/integration/test-cases/chartify-with-non-chart-dir.sh b/test/integration/test-cases/chartify-with-non-chart-dir.sh index 7bdefed6..0e43fe2a 100644 --- a/test/integration/test-cases/chartify-with-non-chart-dir.sh +++ b/test/integration/test-cases/chartify-with-non-chart-dir.sh @@ -17,7 +17,8 @@ test_start "$case_title" info "Comparing ${case_title} diff for output ${chartify_with_non_chart_dirt_reverse} with ${diff_out_file}" for i in $(seq 10); do info "Comparing chartify-with-non-chart-dir diff log #$i" - ${helmfile} -f ${chartify_with_non_chart_dirt_input_dir}/helmfiles/helmfile.yaml diff | grep -v "^Comparing release" > ${chartify_with_non_chart_dirt_reverse} || fail "\"helmfile diff\" shouldn't fail" + ${helmfile} -f ${chartify_with_non_chart_dirt_input_dir}/helmfiles/helmfile.yaml diff | grep -v "^Comparing release" > ${chartify_with_non_chart_dirt_reverse}.tmp || fail "\"helmfile diff\" shouldn't fail" + cat ${chartify_with_non_chart_dirt_reverse}.tmp | sed -E '/\*{20}/,/\*{20}/d' > ${chartify_with_non_chart_dirt_reverse} diff -u ${diff_out_file} ${chartify_with_non_chart_dirt_reverse} || fail "\"helmfile diff\" should be consistent" echo code=$? done diff --git a/test/integration/test-cases/chartify-with-non-chart-dir/output/diff-result b/test/integration/test-cases/chartify-with-non-chart-dir/output/diff-result index 1830d9fa..f3244520 100644 --- a/test/integration/test-cases/chartify-with-non-chart-dir/output/diff-result +++ b/test/integration/test-cases/chartify-with-non-chart-dir/output/diff-result @@ -1,8 +1,3 @@ -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, configmap, ConfigMap (v1) has been added: - + # Source: manifests/templates/configmap.yaml diff --git a/test/integration/test-cases/chartify-with-non-chart-dir/output/diff-result-live b/test/integration/test-cases/chartify-with-non-chart-dir/output/diff-result-live index 36739a12..70f24f55 100644 --- a/test/integration/test-cases/chartify-with-non-chart-dir/output/diff-result-live +++ b/test/integration/test-cases/chartify-with-non-chart-dir/output/diff-result-live @@ -1,8 +1,3 @@ -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, configmap, ConfigMap (v1) has been added: - + # Source: manifests/templates/configmap.yaml diff --git a/test/integration/test-cases/diff-args.sh b/test/integration/test-cases/diff-args.sh index a0189898..98d54ee5 100644 --- a/test/integration/test-cases/diff-args.sh +++ b/test/integration/test-cases/diff-args.sh @@ -22,14 +22,16 @@ info "Comparing ${case_title} diff for output ${diff_args_reverse} with ${diff_o info "Comparing ${case_title} diff for output ${diff_args_reverse_stderr} with ${diff_out_stderr_file}" for i in $(seq 10); do info "Comparing diff-args diff log #$i" - ${helmfile} -f ${diff_args_input_dir}/helmfile.yaml diff 1> ${diff_args_reverse} 2> ${diff_args_reverse_stderr} || fail "\"helmfile diff\" shouldn't fail" + ${helmfile} -f ${diff_args_input_dir}/helmfile.yaml diff 1> ${diff_args_reverse}.tmp 2> ${diff_args_reverse_stderr} || fail "\"helmfile diff\" shouldn't fail" + cat ${diff_args_reverse}.tmp | sed -E '/\*{20}/,/\*{20}/d' > ${diff_args_reverse} diff -u ${diff_out_file} ${diff_args_reverse} || fail "\"helmfile diff\" should be consistent" diff -u ${diff_out_stderr_file} ${diff_args_reverse_stderr} || fail "\"helmfile diff\" should be consistent (stderr)" echo code=$? done info "Comparing ${case_title} apply for output ${diff_args_reverse} with ${apply_out_file}" info "Comparing ${case_title} apply for stdout ${diff_args_reverse_stderr} with ${apply_out_stderr_file}" -${helmfile} -f ${diff_args_input_dir}/helmfile.yaml apply 1> ${diff_args_reverse} 2> ${diff_args_reverse_stderr} || fail "\"helmfile apply\" shouldn't fail" +${helmfile} -f ${diff_args_input_dir}/helmfile.yaml apply 1> ${diff_args_reverse}.tmp 2> ${diff_args_reverse_stderr} || fail "\"helmfile apply\" shouldn't fail" +cat ${diff_args_reverse}.tmp | sed -E '/\*{20}/,/\*{20}/d' > ${diff_args_reverse} diff -u ${apply_out_file} <(grep -vE "^(LAST DEPLOYED|installed)" ${diff_args_reverse}) || fail "\"helmfile apply\" should be consistent" diff -u ${apply_out_stderr_file} <(grep -vE "^(LAST DEPLOYED|installed)" ${diff_args_reverse_stderr}) || fail "\"helmfile apply\" should be consistent (stderr)" echo "clean up diff args resources" diff --git a/test/integration/test-cases/diff-args/output/apply b/test/integration/test-cases/diff-args/output/apply index ad082025..e326cb93 100644 --- a/test/integration/test-cases/diff-args/output/apply +++ b/test/integration/test-cases/diff-args/output/apply @@ -1,9 +1,4 @@ Comparing release=installed, chart=../../../charts/httpbin, namespace=helmfile-tests -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, installed-httpbin, Deployment (apps) has been added: - + apiVersion: apps/v1 diff --git a/test/integration/test-cases/diff-args/output/apply-live b/test/integration/test-cases/diff-args/output/apply-live index 14e1c5c4..b4a8d0e4 100644 --- a/test/integration/test-cases/diff-args/output/apply-live +++ b/test/integration/test-cases/diff-args/output/apply-live @@ -1,8 +1,3 @@ -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, installed-httpbin, Deployment (apps) has been added: - + apiVersion: apps/v1 diff --git a/test/integration/test-cases/diff-args/output/diff b/test/integration/test-cases/diff-args/output/diff index ad082025..e326cb93 100644 --- a/test/integration/test-cases/diff-args/output/diff +++ b/test/integration/test-cases/diff-args/output/diff @@ -1,9 +1,4 @@ Comparing release=installed, chart=../../../charts/httpbin, namespace=helmfile-tests -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, installed-httpbin, Deployment (apps) has been added: - + apiVersion: apps/v1 diff --git a/test/integration/test-cases/diff-args/output/diff-live b/test/integration/test-cases/diff-args/output/diff-live index 9e029b1a..eaf2d4ea 100644 --- a/test/integration/test-cases/diff-args/output/diff-live +++ b/test/integration/test-cases/diff-args/output/diff-live @@ -1,8 +1,3 @@ -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, installed-httpbin, Deployment (apps) has been added: - + apiVersion: apps/v1 diff --git a/test/integration/test-cases/postrender.sh b/test/integration/test-cases/postrender.sh index dfeab508..9ac4da32 100644 --- a/test/integration/test-cases/postrender.sh +++ b/test/integration/test-cases/postrender.sh @@ -20,7 +20,8 @@ test_start "postrender diff" info "Comparing postrender diff output ${postrender_diff_reverse} with ${postrender_case_output_dir}/result.yaml" for i in $(seq 10); do info "Comparing build/postrender-diff #$i" - ${helmfile} -f ${postrender_case_input_dir}/${config_file} diff --concurrency 1 --post-renderer ./add-cm.bash --post-renderer-args cm1 &> ${postrender_diff_reverse} || fail "\"helmfile diff\" shouldn't fail" + ${helmfile} -f ${postrender_case_input_dir}/${config_file} diff --concurrency 1 --post-renderer ./add-cm.bash --post-renderer-args cm1 &> ${postrender_diff_reverse}.tmp || fail "\"helmfile diff\" shouldn't fail" + cat ${postrender_diff_reverse}.tmp | sed -E '/\*{20}/,/\*{20}/d' > ${postrender_diff_reverse} diff -u ${postrender_diff_out_file} ${postrender_diff_reverse} || fail "\"helmfile diff\" should be consistent" echo code=$? done diff --git a/test/integration/test-cases/postrender/output/diff-result b/test/integration/test-cases/postrender/output/diff-result index 590434ba..1d63c3dd 100644 --- a/test/integration/test-cases/postrender/output/diff-result +++ b/test/integration/test-cases/postrender/output/diff-result @@ -1,11 +1,6 @@ Building dependency release=foo, chart=../../../charts/raw Building dependency release=baz, chart=../../../charts/raw Comparing release=foo, chart=../../../charts/raw, namespace=helmfile-tests -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, cm2, ConfigMap (v1) has been added: - + apiVersion: v1 @@ -26,11 +21,6 @@ helmfile-tests, foo-1, ConfigMap (v1) has been added: + foo: FOO Comparing release=baz, chart=../../../charts/raw, namespace=helmfile-tests -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, baz-3, ConfigMap (v1) has been added: - + # Source: raw/templates/resources.yaml diff --git a/test/integration/test-cases/postrender/output/diff-result-live b/test/integration/test-cases/postrender/output/diff-result-live index c3997cd9..f74d5c8d 100644 --- a/test/integration/test-cases/postrender/output/diff-result-live +++ b/test/integration/test-cases/postrender/output/diff-result-live @@ -1,11 +1,6 @@ Live output is enabled Building dependency release=foo, chart=../../../charts/raw Building dependency release=baz, chart=../../../charts/raw -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, cm2, ConfigMap (v1) has been added: - + apiVersion: v1 @@ -24,11 +19,6 @@ helmfile-tests, foo-1, ConfigMap (v1) has been added: + namespace: helmfile-tests + data: + foo: FOO -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, baz-3, ConfigMap (v1) has been added: - + # Source: raw/templates/resources.yaml diff --git a/test/integration/test-cases/skip-diff-output.sh b/test/integration/test-cases/skip-diff-output.sh index 79d335b0..ba125aad 100644 --- a/test/integration/test-cases/skip-diff-output.sh +++ b/test/integration/test-cases/skip-diff-output.sh @@ -17,7 +17,8 @@ test_start "$case_title" info "Comparing ${case_title} diff for output ${skip_diff_output_reverse} with ${diff_out_file}" for i in $(seq 10); do info "Comparing skip-diff-output diff log #$i" - ${helmfile} -f ${skip_diff_output_input_dir}/helmfile.yaml.gotmpl diff > ${skip_diff_output_reverse} || fail "\"helmfile diff\" shouldn't fail" + ${helmfile} -f ${skip_diff_output_input_dir}/helmfile.yaml.gotmpl diff > ${skip_diff_output_reverse}.tmp || fail "\"helmfile diff\" shouldn't fail" + cat ${skip_diff_output_reverse}.tmp | sed -E '/\*{20}/,/\*{20}/d' > ${skip_diff_output_reverse} diff -u ${diff_out_file} ${skip_diff_output_reverse} || fail "\"helmfile diff\" should be consistent" echo code=$? done diff --git a/test/integration/test-cases/skip-diff-output/output/diff-result b/test/integration/test-cases/skip-diff-output/output/diff-result index e245ea80..40cebff0 100644 --- a/test/integration/test-cases/skip-diff-output/output/diff-result +++ b/test/integration/test-cases/skip-diff-output/output/diff-result @@ -1,9 +1,4 @@ Comparing release=baz, chart=../../../charts/raw, namespace=helmfile-tests -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, baz-2, ConfigMap (v1) has been added: - + # Source: raw/templates/resources.yaml diff --git a/test/integration/test-cases/skip-diff-output/output/diff-result-live b/test/integration/test-cases/skip-diff-output/output/diff-result-live index 1497e030..3d6fec57 100644 --- a/test/integration/test-cases/skip-diff-output/output/diff-result-live +++ b/test/integration/test-cases/skip-diff-output/output/diff-result-live @@ -1,8 +1,3 @@ -******************** - - Release was not present in Helm. Diff will show entire contents as new. - -******************** helmfile-tests, baz-2, ConfigMap (v1) has been added: - + # Source: raw/templates/resources.yaml diff --git a/test/integration/test-cases/suppress-output-line-regex.sh b/test/integration/test-cases/suppress-output-line-regex.sh index e7ebdb62..82371d73 100644 --- a/test/integration/test-cases/suppress-output-line-regex.sh +++ b/test/integration/test-cases/suppress-output-line-regex.sh @@ -10,6 +10,10 @@ if [[ $EXTRA_HELMFILE_FLAGS == *--enable-live-output* ]]; then diff_out_file=${suppress_output_line_regex_output_dir}/diff-live fi +if [[ $(semver compare $HELM_DIFF_VERSION "3.11.0") == "1" ]]; then + diff_out_file=${diff_out_file}-after-helm-diff-3.11.0 +fi + if version_lt $HELM_DIFF_VERSION "3.9.0"; then echo "Skipping ${case_title} because helm-diff version is less than 3.9.0" else diff --git a/test/integration/test-cases/suppress-output-line-regex/output/diff-after-helm-diff-3.11.0 b/test/integration/test-cases/suppress-output-line-regex/output/diff-after-helm-diff-3.11.0 new file mode 100644 index 00000000..b9927c25 --- /dev/null +++ b/test/integration/test-cases/suppress-output-line-regex/output/diff-after-helm-diff-3.11.0 @@ -0,0 +1,530 @@ +Comparing release=ingress-nginx, chart=ingress-nginx/ingress-nginx, namespace=helmfile-tests +helmfile-tests, ingress-nginx, ClusterRole (rbac.authorization.k8s.io) has changed, but diff is empty after suppression. +helmfile-tests, ingress-nginx, ClusterRoleBinding (rbac.authorization.k8s.io) has changed: + # Source: ingress-nginx/templates/clusterrolebinding.yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRoleBinding + metadata: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + name: ingress-nginx + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: ingress-nginx + subjects: + - kind: ServiceAccount + name: ingress-nginx +- namespace: "helmfile-tests" ++ namespace: helmfile-tests +helmfile-tests, ingress-nginx, Role (rbac.authorization.k8s.io) has changed: + # Source: ingress-nginx/templates/controller-role.yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: Role + metadata: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: controller + name: ingress-nginx + namespace: helmfile-tests + rules: + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - apiGroups: + - "" + resources: + - configmaps + - pods + - secrets + - endpoints + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - services + verbs: + - get + - list + - watch + - apiGroups: + - networking.k8s.io + resources: + - ingresses + verbs: + - get + - list + - watch ++ # Omit Ingress status permissions if `--update-status` is disabled. + - apiGroups: + - networking.k8s.io + resources: + - ingresses/status + verbs: + - update + - apiGroups: + - networking.k8s.io + resources: + - ingressclasses + verbs: + - get + - list + - watch + - apiGroups: + - coordination.k8s.io + resources: + - leases + resourceNames: + - ingress-nginx-leader + verbs: + - get + - update + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - create + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - apiGroups: + - discovery.k8s.io + resources: + - endpointslices + verbs: + - list + - watch + - get +helmfile-tests, ingress-nginx, RoleBinding (rbac.authorization.k8s.io) has changed: + # Source: ingress-nginx/templates/controller-rolebinding.yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: RoleBinding + metadata: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: controller + name: ingress-nginx + namespace: helmfile-tests + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: ingress-nginx + subjects: + - kind: ServiceAccount + name: ingress-nginx +- namespace: "helmfile-tests" ++ namespace: helmfile-tests +helmfile-tests, ingress-nginx, ServiceAccount (v1) has changed, but diff is empty after suppression. +helmfile-tests, ingress-nginx-admission, ClusterRole (rbac.authorization.k8s.io) has changed, but diff is empty after suppression. +helmfile-tests, ingress-nginx-admission, ClusterRoleBinding (rbac.authorization.k8s.io) has changed: + # Source: ingress-nginx/templates/admission-webhooks/job-patch/clusterrolebinding.yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRoleBinding + metadata: + name: ingress-nginx-admission + annotations: + "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: ingress-nginx-admission + subjects: + - kind: ServiceAccount + name: ingress-nginx-admission +- namespace: "helmfile-tests" ++ namespace: helmfile-tests +helmfile-tests, ingress-nginx-admission, Role (rbac.authorization.k8s.io) has changed: + # Source: ingress-nginx/templates/admission-webhooks/job-patch/role.yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: Role + metadata: +- name: ingress-nginx-admission ++ name: ingress-nginx-admission + namespace: helmfile-tests + annotations: + "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + rules: + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - create +helmfile-tests, ingress-nginx-admission, RoleBinding (rbac.authorization.k8s.io) has changed: + # Source: ingress-nginx/templates/admission-webhooks/job-patch/rolebinding.yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: RoleBinding + metadata: + name: ingress-nginx-admission + namespace: helmfile-tests + annotations: + "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: ingress-nginx-admission + subjects: + - kind: ServiceAccount + name: ingress-nginx-admission +- namespace: "helmfile-tests" ++ namespace: helmfile-tests +helmfile-tests, ingress-nginx-admission, ServiceAccount (v1) has changed, but diff is empty after suppression. +helmfile-tests, ingress-nginx-admission, ValidatingWebhookConfiguration (admissionregistration.k8s.io) has changed: + # Source: ingress-nginx/templates/admission-webhooks/validating-webhook.yaml + # before changing this value, check the required kubernetes version + # https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#prerequisites + apiVersion: admissionregistration.k8s.io/v1 + kind: ValidatingWebhookConfiguration + metadata: + annotations: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + name: ingress-nginx-admission + webhooks: + - name: validate.nginx.ingress.kubernetes.io + matchPolicy: Equivalent + rules: + - apiGroups: + - networking.k8s.io + apiVersions: + - v1 + operations: + - CREATE + - UPDATE + resources: + - ingresses + failurePolicy: Fail + sideEffects: None + admissionReviewVersions: + - v1 + clientConfig: + service: +- namespace: "helmfile-tests" + name: ingress-nginx-controller-admission ++ namespace: helmfile-tests + path: /networking/v1/ingresses +helmfile-tests, ingress-nginx-admission-create, Job (batch) has changed: + # Source: ingress-nginx/templates/admission-webhooks/job-patch/job-createSecret.yaml + apiVersion: batch/v1 + kind: Job + metadata: + name: ingress-nginx-admission-create + namespace: helmfile-tests + annotations: + "helm.sh/hook": pre-install,pre-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + spec: + template: + metadata: + name: ingress-nginx-admission-create + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + spec: + containers: + - name: create +- image: "registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0@sha256:a7943503b45d552785aa3b5e457f169a5661fb94d82b8a3373bcd9ebaf9aac80" ++ image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0@sha256:a7943503b45d552785aa3b5e457f169a5661fb94d82b8a3373bcd9ebaf9aac80 + imagePullPolicy: IfNotPresent + args: + - create + - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc + - --namespace=$(POD_NAMESPACE) + - --secret-name=ingress-nginx-admission + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + securityContext: + allowPrivilegeEscalation: false ++ capabilities: ++ drop: ++ - ALL ++ readOnlyRootFilesystem: true ++ runAsNonRoot: true ++ runAsUser: 65532 ++ seccompProfile: ++ type: RuntimeDefault + restartPolicy: OnFailure + serviceAccountName: ingress-nginx-admission + nodeSelector: + kubernetes.io/os: linux +- securityContext: +- fsGroup: 2000 +- runAsNonRoot: true +- runAsUser: 2000 +helmfile-tests, ingress-nginx-admission-patch, Job (batch) has changed: + # Source: ingress-nginx/templates/admission-webhooks/job-patch/job-patchWebhook.yaml + apiVersion: batch/v1 + kind: Job + metadata: + name: ingress-nginx-admission-patch + namespace: helmfile-tests + annotations: + "helm.sh/hook": post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + spec: + template: + metadata: + name: ingress-nginx-admission-patch + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + spec: + containers: + - name: patch +- image: "registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0@sha256:a7943503b45d552785aa3b5e457f169a5661fb94d82b8a3373bcd9ebaf9aac80" ++ image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0@sha256:a7943503b45d552785aa3b5e457f169a5661fb94d82b8a3373bcd9ebaf9aac80 + imagePullPolicy: IfNotPresent + args: + - patch + - --webhook-name=ingress-nginx-admission + - --namespace=$(POD_NAMESPACE) + - --patch-mutating=false + - --secret-name=ingress-nginx-admission + - --patch-failure-policy=Fail + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + securityContext: + allowPrivilegeEscalation: false ++ capabilities: ++ drop: ++ - ALL ++ readOnlyRootFilesystem: true ++ runAsNonRoot: true ++ runAsUser: 65532 ++ seccompProfile: ++ type: RuntimeDefault + restartPolicy: OnFailure + serviceAccountName: ingress-nginx-admission + nodeSelector: + kubernetes.io/os: linux +- securityContext: +- fsGroup: 2000 +- runAsNonRoot: true +- runAsUser: 2000 +helmfile-tests, ingress-nginx-controller, ConfigMap (v1) has changed, but diff is empty after suppression. +helmfile-tests, ingress-nginx-controller, Deployment (apps) has changed: + # Source: ingress-nginx/templates/controller-deployment.yaml + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: controller + name: ingress-nginx-controller + namespace: helmfile-tests + spec: + selector: + matchLabels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/component: controller + replicas: 1 + revisionHistoryLimit: 10 + minReadySeconds: 0 + template: + metadata: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: controller + spec: + dnsPolicy: ClusterFirst + containers: + - name: controller +- image: "registry.k8s.io/ingress-nginx/controller:v1.9.4@sha256:5b161f051d017e55d358435f295f5e9a297e66158f136321d9b04520ec6c48a3" ++ image: registry.k8s.io/ingress-nginx/controller:v1.9.5@sha256:b3aba22b1da80e7acfc52b115cae1d4c687172cbf2b742d5b502419c25ff340e + imagePullPolicy: IfNotPresent + lifecycle: + preStop: + exec: + command: + - /wait-shutdown +- args: ++ args: + - /nginx-ingress-controller + - --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller + - --election-id=ingress-nginx-leader + - --controller-class=k8s.io/ingress-nginx + - --ingress-class=nginx + - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller + - --validating-webhook=:8443 + - --validating-webhook-certificate=/usr/local/certificates/cert + - --validating-webhook-key=/usr/local/certificates/key + securityContext: ++ runAsNonRoot: true ++ runAsUser: 101 ++ allowPrivilegeEscalation: false ++ seccompProfile: ++ type: RuntimeDefault + capabilities: + drop: + - ALL + add: + - NET_BIND_SERVICE +- runAsUser: 101 +- allowPrivilegeEscalation: true ++ readOnlyRootFilesystem: false + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: LD_PRELOAD + value: /usr/local/lib/libmimalloc.so + livenessProbe: + failureThreshold: 5 + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + readinessProbe: + failureThreshold: 3 + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ports: + - name: http + containerPort: 80 + protocol: TCP + - name: https + containerPort: 443 + protocol: TCP + - name: webhook + containerPort: 8443 + protocol: TCP + volumeMounts: + - name: webhook-cert + mountPath: /usr/local/certificates/ + readOnly: true + resources: + requests: + cpu: 100m + memory: 90Mi + nodeSelector: + kubernetes.io/os: linux + serviceAccountName: ingress-nginx + terminationGracePeriodSeconds: 300 + volumes: + - name: webhook-cert + secret: + secretName: ingress-nginx-admission +helmfile-tests, ingress-nginx-controller, Service (v1) has changed, but diff is empty after suppression. +helmfile-tests, ingress-nginx-controller-admission, Service (v1) has changed, but diff is empty after suppression. +helmfile-tests, nginx, IngressClass (networking.k8s.io) has changed, but diff is empty after suppression. +helmfile-tests, ingress-nginx-admission, NetworkPolicy (networking.k8s.io) has been removed: +- # Source: ingress-nginx/templates/admission-webhooks/job-patch/networkpolicy.yaml +- apiVersion: networking.k8s.io/v1 +- kind: NetworkPolicy +- metadata: +- name: ingress-nginx-admission +- namespace: helmfile-tests +- annotations: +- "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade +- "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded +- labels: +- app.kubernetes.io/name: ingress-nginx +- app.kubernetes.io/instance: ingress-nginx +- app.kubernetes.io/part-of: ingress-nginx +- app.kubernetes.io/managed-by: Helm +- app.kubernetes.io/component: admission-webhook +- spec: +- podSelector: +- matchLabels: +- app.kubernetes.io/name: ingress-nginx +- app.kubernetes.io/instance: ingress-nginx +- app.kubernetes.io/component: admission-webhook +- policyTypes: +- - Ingress +- - Egress +- egress: +- - {} ++ + diff --git a/test/integration/test-cases/suppress-output-line-regex/output/diff-live-after-helm-diff-3.11.0 b/test/integration/test-cases/suppress-output-line-regex/output/diff-live-after-helm-diff-3.11.0 new file mode 100644 index 00000000..1eab0c03 --- /dev/null +++ b/test/integration/test-cases/suppress-output-line-regex/output/diff-live-after-helm-diff-3.11.0 @@ -0,0 +1,530 @@ +"ingress-nginx" has been added to your repositories +helmfile-tests, ingress-nginx, ClusterRole (rbac.authorization.k8s.io) has changed, but diff is empty after suppression. +helmfile-tests, ingress-nginx, ClusterRoleBinding (rbac.authorization.k8s.io) has changed: + # Source: ingress-nginx/templates/clusterrolebinding.yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRoleBinding + metadata: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + name: ingress-nginx + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: ingress-nginx + subjects: + - kind: ServiceAccount + name: ingress-nginx +- namespace: "helmfile-tests" ++ namespace: helmfile-tests +helmfile-tests, ingress-nginx, Role (rbac.authorization.k8s.io) has changed: + # Source: ingress-nginx/templates/controller-role.yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: Role + metadata: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: controller + name: ingress-nginx + namespace: helmfile-tests + rules: + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - apiGroups: + - "" + resources: + - configmaps + - pods + - secrets + - endpoints + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - services + verbs: + - get + - list + - watch + - apiGroups: + - networking.k8s.io + resources: + - ingresses + verbs: + - get + - list + - watch ++ # Omit Ingress status permissions if `--update-status` is disabled. + - apiGroups: + - networking.k8s.io + resources: + - ingresses/status + verbs: + - update + - apiGroups: + - networking.k8s.io + resources: + - ingressclasses + verbs: + - get + - list + - watch + - apiGroups: + - coordination.k8s.io + resources: + - leases + resourceNames: + - ingress-nginx-leader + verbs: + - get + - update + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - create + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - apiGroups: + - discovery.k8s.io + resources: + - endpointslices + verbs: + - list + - watch + - get +helmfile-tests, ingress-nginx, RoleBinding (rbac.authorization.k8s.io) has changed: + # Source: ingress-nginx/templates/controller-rolebinding.yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: RoleBinding + metadata: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: controller + name: ingress-nginx + namespace: helmfile-tests + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: ingress-nginx + subjects: + - kind: ServiceAccount + name: ingress-nginx +- namespace: "helmfile-tests" ++ namespace: helmfile-tests +helmfile-tests, ingress-nginx, ServiceAccount (v1) has changed, but diff is empty after suppression. +helmfile-tests, ingress-nginx-admission, ClusterRole (rbac.authorization.k8s.io) has changed, but diff is empty after suppression. +helmfile-tests, ingress-nginx-admission, ClusterRoleBinding (rbac.authorization.k8s.io) has changed: + # Source: ingress-nginx/templates/admission-webhooks/job-patch/clusterrolebinding.yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: ClusterRoleBinding + metadata: + name: ingress-nginx-admission + annotations: + "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: ingress-nginx-admission + subjects: + - kind: ServiceAccount + name: ingress-nginx-admission +- namespace: "helmfile-tests" ++ namespace: helmfile-tests +helmfile-tests, ingress-nginx-admission, Role (rbac.authorization.k8s.io) has changed: + # Source: ingress-nginx/templates/admission-webhooks/job-patch/role.yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: Role + metadata: +- name: ingress-nginx-admission ++ name: ingress-nginx-admission + namespace: helmfile-tests + annotations: + "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + rules: + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - create +helmfile-tests, ingress-nginx-admission, RoleBinding (rbac.authorization.k8s.io) has changed: + # Source: ingress-nginx/templates/admission-webhooks/job-patch/rolebinding.yaml + apiVersion: rbac.authorization.k8s.io/v1 + kind: RoleBinding + metadata: + name: ingress-nginx-admission + namespace: helmfile-tests + annotations: + "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: ingress-nginx-admission + subjects: + - kind: ServiceAccount + name: ingress-nginx-admission +- namespace: "helmfile-tests" ++ namespace: helmfile-tests +helmfile-tests, ingress-nginx-admission, ServiceAccount (v1) has changed, but diff is empty after suppression. +helmfile-tests, ingress-nginx-admission, ValidatingWebhookConfiguration (admissionregistration.k8s.io) has changed: + # Source: ingress-nginx/templates/admission-webhooks/validating-webhook.yaml + # before changing this value, check the required kubernetes version + # https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#prerequisites + apiVersion: admissionregistration.k8s.io/v1 + kind: ValidatingWebhookConfiguration + metadata: + annotations: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + name: ingress-nginx-admission + webhooks: + - name: validate.nginx.ingress.kubernetes.io + matchPolicy: Equivalent + rules: + - apiGroups: + - networking.k8s.io + apiVersions: + - v1 + operations: + - CREATE + - UPDATE + resources: + - ingresses + failurePolicy: Fail + sideEffects: None + admissionReviewVersions: + - v1 + clientConfig: + service: +- namespace: "helmfile-tests" + name: ingress-nginx-controller-admission ++ namespace: helmfile-tests + path: /networking/v1/ingresses +helmfile-tests, ingress-nginx-admission-create, Job (batch) has changed: + # Source: ingress-nginx/templates/admission-webhooks/job-patch/job-createSecret.yaml + apiVersion: batch/v1 + kind: Job + metadata: + name: ingress-nginx-admission-create + namespace: helmfile-tests + annotations: + "helm.sh/hook": pre-install,pre-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + spec: + template: + metadata: + name: ingress-nginx-admission-create + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + spec: + containers: + - name: create +- image: "registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0@sha256:a7943503b45d552785aa3b5e457f169a5661fb94d82b8a3373bcd9ebaf9aac80" ++ image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0@sha256:a7943503b45d552785aa3b5e457f169a5661fb94d82b8a3373bcd9ebaf9aac80 + imagePullPolicy: IfNotPresent + args: + - create + - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc + - --namespace=$(POD_NAMESPACE) + - --secret-name=ingress-nginx-admission + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + securityContext: + allowPrivilegeEscalation: false ++ capabilities: ++ drop: ++ - ALL ++ readOnlyRootFilesystem: true ++ runAsNonRoot: true ++ runAsUser: 65532 ++ seccompProfile: ++ type: RuntimeDefault + restartPolicy: OnFailure + serviceAccountName: ingress-nginx-admission + nodeSelector: + kubernetes.io/os: linux +- securityContext: +- fsGroup: 2000 +- runAsNonRoot: true +- runAsUser: 2000 +helmfile-tests, ingress-nginx-admission-patch, Job (batch) has changed: + # Source: ingress-nginx/templates/admission-webhooks/job-patch/job-patchWebhook.yaml + apiVersion: batch/v1 + kind: Job + metadata: + name: ingress-nginx-admission-patch + namespace: helmfile-tests + annotations: + "helm.sh/hook": post-install,post-upgrade + "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + spec: + template: + metadata: + name: ingress-nginx-admission-patch + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: admission-webhook + spec: + containers: + - name: patch +- image: "registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0@sha256:a7943503b45d552785aa3b5e457f169a5661fb94d82b8a3373bcd9ebaf9aac80" ++ image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20231011-8b53cabe0@sha256:a7943503b45d552785aa3b5e457f169a5661fb94d82b8a3373bcd9ebaf9aac80 + imagePullPolicy: IfNotPresent + args: + - patch + - --webhook-name=ingress-nginx-admission + - --namespace=$(POD_NAMESPACE) + - --patch-mutating=false + - --secret-name=ingress-nginx-admission + - --patch-failure-policy=Fail + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + securityContext: + allowPrivilegeEscalation: false ++ capabilities: ++ drop: ++ - ALL ++ readOnlyRootFilesystem: true ++ runAsNonRoot: true ++ runAsUser: 65532 ++ seccompProfile: ++ type: RuntimeDefault + restartPolicy: OnFailure + serviceAccountName: ingress-nginx-admission + nodeSelector: + kubernetes.io/os: linux +- securityContext: +- fsGroup: 2000 +- runAsNonRoot: true +- runAsUser: 2000 +helmfile-tests, ingress-nginx-controller, ConfigMap (v1) has changed, but diff is empty after suppression. +helmfile-tests, ingress-nginx-controller, Deployment (apps) has changed: + # Source: ingress-nginx/templates/controller-deployment.yaml + apiVersion: apps/v1 + kind: Deployment + metadata: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: controller + name: ingress-nginx-controller + namespace: helmfile-tests + spec: + selector: + matchLabels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/component: controller + replicas: 1 + revisionHistoryLimit: 10 + minReadySeconds: 0 + template: + metadata: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/instance: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/component: controller + spec: + dnsPolicy: ClusterFirst + containers: + - name: controller +- image: "registry.k8s.io/ingress-nginx/controller:v1.9.4@sha256:5b161f051d017e55d358435f295f5e9a297e66158f136321d9b04520ec6c48a3" ++ image: registry.k8s.io/ingress-nginx/controller:v1.9.5@sha256:b3aba22b1da80e7acfc52b115cae1d4c687172cbf2b742d5b502419c25ff340e + imagePullPolicy: IfNotPresent + lifecycle: + preStop: + exec: + command: + - /wait-shutdown +- args: ++ args: + - /nginx-ingress-controller + - --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller + - --election-id=ingress-nginx-leader + - --controller-class=k8s.io/ingress-nginx + - --ingress-class=nginx + - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller + - --validating-webhook=:8443 + - --validating-webhook-certificate=/usr/local/certificates/cert + - --validating-webhook-key=/usr/local/certificates/key + securityContext: ++ runAsNonRoot: true ++ runAsUser: 101 ++ allowPrivilegeEscalation: false ++ seccompProfile: ++ type: RuntimeDefault + capabilities: + drop: + - ALL + add: + - NET_BIND_SERVICE +- runAsUser: 101 +- allowPrivilegeEscalation: true ++ readOnlyRootFilesystem: false + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: LD_PRELOAD + value: /usr/local/lib/libmimalloc.so + livenessProbe: + failureThreshold: 5 + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + readinessProbe: + failureThreshold: 3 + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + ports: + - name: http + containerPort: 80 + protocol: TCP + - name: https + containerPort: 443 + protocol: TCP + - name: webhook + containerPort: 8443 + protocol: TCP + volumeMounts: + - name: webhook-cert + mountPath: /usr/local/certificates/ + readOnly: true + resources: + requests: + cpu: 100m + memory: 90Mi + nodeSelector: + kubernetes.io/os: linux + serviceAccountName: ingress-nginx + terminationGracePeriodSeconds: 300 + volumes: + - name: webhook-cert + secret: + secretName: ingress-nginx-admission +helmfile-tests, ingress-nginx-controller, Service (v1) has changed, but diff is empty after suppression. +helmfile-tests, ingress-nginx-controller-admission, Service (v1) has changed, but diff is empty after suppression. +helmfile-tests, nginx, IngressClass (networking.k8s.io) has changed, but diff is empty after suppression. +helmfile-tests, ingress-nginx-admission, NetworkPolicy (networking.k8s.io) has been removed: +- # Source: ingress-nginx/templates/admission-webhooks/job-patch/networkpolicy.yaml +- apiVersion: networking.k8s.io/v1 +- kind: NetworkPolicy +- metadata: +- name: ingress-nginx-admission +- namespace: helmfile-tests +- annotations: +- "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade +- "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded +- labels: +- app.kubernetes.io/name: ingress-nginx +- app.kubernetes.io/instance: ingress-nginx +- app.kubernetes.io/part-of: ingress-nginx +- app.kubernetes.io/managed-by: Helm +- app.kubernetes.io/component: admission-webhook +- spec: +- podSelector: +- matchLabels: +- app.kubernetes.io/name: ingress-nginx +- app.kubernetes.io/instance: ingress-nginx +- app.kubernetes.io/component: admission-webhook +- policyTypes: +- - Ingress +- - Egress +- egress: +- - {} ++ +Comparing release=ingress-nginx, chart=ingress-nginx/ingress-nginx, namespace=helmfile-tests