обновление helm: не удалось создать патч на Google Container Builder - PullRequest
0 голосов
/ 28 апреля 2018

Что я пытаюсь сделать

Я пытаюсь развернуть обновление для рулевой диаграммы на моем кластере k8s (GKE) с использованием конвейера CI / CD (Google Container Builder), но получаю ошибку.

Что я использую

Google Cloud 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

Что я пытался сделать, чтобы найти причину / решение:

  • Когда я запускаю эту команду (helm upgrade mmh-user ./mmh-users-0.1.7.tgz --reuse-values --set image.tag=v0.1.8) с моего ноутбука, никаких проблем.
  • Я попытался уменьшить cloudbuild.yaml, чтобы он содержал только шаги, необходимые для обновления руля, та же ошибка.
  • Ci / cd может нормально выполнять шаги helm lint и package. Не удалось выполнить только шаг обновления.
  • Я проверил версию Helm 2.8.2 как на моем ноутбуке, так и на ci / cd.
  • Когда я использую --debug --dry-run, он не сообщает об ошибках и показывает то, что кажется допустимым yaml, даже вблизи входа

Какие-нибудь подсказки относительно того, что еще я мог сделать, чтобы найти причину / решение?

1 Ответ

0 голосов
/ 01 мая 2018

Благодаря juanchimienti из слабого канала Kubernetes # helm-users я смог решить эту проблему. Juanchimienti предположил, что это может иметь какое-то отношение к значению аннотации tls-acme, которое показывалось как:

kubernetes.io/tls-acme: true

, но должен был отображаться как "true".

Я изменил свой шаг сборки, добавив аннотацию, подобную этой:

  - --set
  - 'ingress.annotations.kubernetes\.io/tls-acme="true"'

и теперь он работает.

Я предполагаю, что это как-то связано с версией kubectl, которая находится в компоновщике руля (https://github.com/GoogleCloudPlatform/cloud-builders-community/tree/master/helm), потому что выполнение той же команды без аннотации на моем ноутбуке работало просто отлично. У моего ноутбука было больше последняя версия kubectl. Я не подтвердил это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...