Рубрики
Uncategorized

Как разрешить `kubectl применить ошибку конфликта

Symton Когда вы пытаетесь применить файл развертывания YAML в кластер Kubernetes, вы получаете ошибку … Помечено K8s, Kubernetes, DevOps, развертывание.

Симтон

Когда вы пытаетесь применить файл yaml развертывания в кластере Kubernetes, вы получаете ошибку:

kubectl apply -f tmp.yaml

The Deployment "xxx" is invalid:
* spec.template.spec.containers[0].env[53].valueFrom: Invalid value: "": may not be specified when `value` is not empty

Анализ

API Kubernetes выполнил некоторые проблемы, когда Diff Your tmp.yaml с текущим запущенным развертыванием.

Например, ваш текущий файл развертывания имеет жесткую среду, и ваш новый TMP.yaml имеет среду, ценность которой читается из других источников:

# current running deployment
- name: EXPRESS_LOG_LEVEL
  value: debug

# You are trying to update to
- name: EXPRESS_LOG_LEVEL
  valueFrom:
    configMapKeyRef:
      name: xxx-configmap
      key: EXPRESS_LOG_LEVEL

Как мне вручную расти?

Вы можете экспортировать текущее развертывание YAML с помощью:

kubectl get deploy/your-current-deploy -o yaml | pbcopy

Тогда вы можете различить их через https://www.diffchecker.com/diff Анкет

Решение

Удалите конфликтные среды, а затем примените снова:

KUBE_EDITOR="vim" kubectl edit deploy/your-current-deploy

kubectl apply -f tmp.yaml

# Now you get the success message!
deployment.apps/xxx-app configured

Оригинал: «https://dev.to/jefftian/how-to-resolve-kubectrl-apply-deployment-conflict-error-3cf»