Симтон
Когда вы пытаетесь применить файл 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»