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