helm 升级:无法在 google 容器生成器上创建补丁
helm upgrade: failed to create patch on google container builder
我想做什么
我正在尝试使用 CI/CD 管道(google 容器构建器)在我的 k8s 集群 (GKE) 上部署对 helm chart 的升级,但出现错误。
我在用什么
Google 云 SDK 195.0.0
GKE集群版本:v1.9.6-gke.0
kubectl v1.8.6
我正在使用这个生成器:https://github.com/GoogleCloudPlatform/cloud-builders-community/tree/master/helm
我是这样触发构建的:
gcloud container builds submit . --config=cloudbuild.yaml --substitutions=TAG_NAME=v0.1.8
这是 cloudbuild.yaml 中导致此错误的部分:
- name: 'gcr.io/$PROJECT_ID/helm'
args:
- upgrade
- mmh-user
- ./mmh-users-0.1.7.tgz
- --reuse-values
- --set
- image.tag=${TAG_NAME}
env:
- 'CLOUDSDK_COMPUTE_ZONE=northamerica-northeast1-a'
- 'CLOUDSDK_CONTAINER_CLUSTER=mycluster'
我在那一步遇到的错误:
Starting Step #17
Step #17: Already have image (with digest): gcr.io/myproject-2018/helm
Step #17: Running: helm init --client-only
Step #17: $HELM_HOME has been configured at /builder/home/.helm.
Step #17: Not installing Tiller due to 'client-only' flag having been set
Step #17: Happy Helming!
Step #17: Running: helm repo update
Step #17: Hang tight while we grab the latest from your chart repositories...
Step #17: ...Skip local chart repository
Step #17: ...Successfully got an update from the "stable" chart repository
Step #17: Update Complete. ⎈ Happy Helming!⎈
Step #17: Running: helm upgrade mmh-user ./mmh-users-0.1.7.tgz --reuse-values --set image.tag=v0.1.8
Step #17: Error: UPGRADE FAILED: failed to create patch: failed to get versionedObject: unable to convert unstructured object to extensions/v1beta1, Kind=Ingress: unrecognized type: string
Finished Step #17
我试图找到一个 cause/solution:
- 当我从我的笔记本电脑 运行 这个命令 (
helm upgrade mmh-user ./mmh-users-0.1.7.tgz --reuse-values --set image.tag=v0.1.8
) 时,没有问题。
- 我尝试将 cloudbuild.yaml 减少为仅包含 helm 升级所需的步骤,同样的错误。
- ci/cd 可以 运行 helm lint 和 package 步骤就好了。只有升级步骤失败。
- 我检查了我的笔记本电脑和 ci/cd 上的 Helm 版本 2.8.2。
- 当我使用 --debug --dry-运行 时,它不会报告错误并显示看似有效的 yaml,即使在入口附近也是如此
关于我还能做些什么来找到 cause/solution 的任何线索?
感谢来自 Kubernetes #helm-users slack 频道的 juanchimienti,我能够解决这个问题。 Juanchimienti 建议它可能与 tls-acme 注释的值有关,该值显示为:
kubernetes.io/tls-acme: true
但应该显示为 "true"
。
我更改了构建步骤以包含如下注释:
- --set
- 'ingress.annotations.kubernetes\.io/tls-acme="true"'
现在可以正常使用了。
我认为这与 helm builder (https://github.com/GoogleCloudPlatform/cloud-builders-community/tree/master/helm) 中的 kubectl 版本有关,因为 运行 没有来自我的笔记本电脑的注释的相同命令工作得很好.我的笔记本电脑有更新版本的 kubectl。我没有确认这一点。
我想做什么
我正在尝试使用 CI/CD 管道(google 容器构建器)在我的 k8s 集群 (GKE) 上部署对 helm chart 的升级,但出现错误。
我在用什么
Google 云 SDK 195.0.0
GKE集群版本:v1.9.6-gke.0
kubectl v1.8.6
我正在使用这个生成器:https://github.com/GoogleCloudPlatform/cloud-builders-community/tree/master/helm
我是这样触发构建的:
gcloud container builds submit . --config=cloudbuild.yaml --substitutions=TAG_NAME=v0.1.8
这是 cloudbuild.yaml 中导致此错误的部分:
- name: 'gcr.io/$PROJECT_ID/helm'
args:
- upgrade
- mmh-user
- ./mmh-users-0.1.7.tgz
- --reuse-values
- --set
- image.tag=${TAG_NAME}
env:
- 'CLOUDSDK_COMPUTE_ZONE=northamerica-northeast1-a'
- 'CLOUDSDK_CONTAINER_CLUSTER=mycluster'
我在那一步遇到的错误:
Starting Step #17
Step #17: Already have image (with digest): gcr.io/myproject-2018/helm
Step #17: Running: helm init --client-only
Step #17: $HELM_HOME has been configured at /builder/home/.helm.
Step #17: Not installing Tiller due to 'client-only' flag having been set
Step #17: Happy Helming!
Step #17: Running: helm repo update
Step #17: Hang tight while we grab the latest from your chart repositories...
Step #17: ...Skip local chart repository
Step #17: ...Successfully got an update from the "stable" chart repository
Step #17: Update Complete. ⎈ Happy Helming!⎈
Step #17: Running: helm upgrade mmh-user ./mmh-users-0.1.7.tgz --reuse-values --set image.tag=v0.1.8
Step #17: Error: UPGRADE FAILED: failed to create patch: failed to get versionedObject: unable to convert unstructured object to extensions/v1beta1, Kind=Ingress: unrecognized type: string
Finished Step #17
我试图找到一个 cause/solution:
- 当我从我的笔记本电脑 运行 这个命令 (
helm upgrade mmh-user ./mmh-users-0.1.7.tgz --reuse-values --set image.tag=v0.1.8
) 时,没有问题。 - 我尝试将 cloudbuild.yaml 减少为仅包含 helm 升级所需的步骤,同样的错误。
- ci/cd 可以 运行 helm lint 和 package 步骤就好了。只有升级步骤失败。
- 我检查了我的笔记本电脑和 ci/cd 上的 Helm 版本 2.8.2。
- 当我使用 --debug --dry-运行 时,它不会报告错误并显示看似有效的 yaml,即使在入口附近也是如此
关于我还能做些什么来找到 cause/solution 的任何线索?
感谢来自 Kubernetes #helm-users slack 频道的 juanchimienti,我能够解决这个问题。 Juanchimienti 建议它可能与 tls-acme 注释的值有关,该值显示为:
kubernetes.io/tls-acme: true
但应该显示为 "true"
。
我更改了构建步骤以包含如下注释:
- --set
- 'ingress.annotations.kubernetes\.io/tls-acme="true"'
现在可以正常使用了。
我认为这与 helm builder (https://github.com/GoogleCloudPlatform/cloud-builders-community/tree/master/helm) 中的 kubectl 版本有关,因为 运行 没有来自我的笔记本电脑的注释的相同命令工作得很好.我的笔记本电脑有更新版本的 kubectl。我没有确认这一点。