Как редактировать все развертывания kubernetes за один раз - PullRequest
0 голосов
/ 29 августа 2018

У нас есть сотни развертываний, и в конфигурации у нас для imagePullPolicy установлено «ifnotpresent» для большинства из них, а для немногих установлено «всегда», теперь я хочу изменить все развертывания, которые имеют ifnotpresent до всегда .

Как мы можем достичь этого одним махом?

Ex:

kubectl get deployment -n test -o json | jq ‘.spec.template.spec.contianer[0].imagePullPolicy=“ifnotpresent”| kubectl -n test replace -f - 

Приведенная выше команда помогает сбросить ее для одного конкретного развертывания.

1 Ответ

0 голосов
/ 29 августа 2018

Kubernetes изначально не предлагает возможности массового обновления. Для этого вам придется использовать другие инструменты CLI. При этом для изменения существующих ресурсов вы также можете использовать функцию kubectl patch.

Сценарий, приведенный ниже, выглядит не очень красиво, но обновит все развертывания в пространстве имен.

kubectl get deployments -o name | sed -e 's/.*\///g' | xargs -I {} kubectl patch deployment {} --type=json -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/imagePullPolicy", "value": "Always"}]'

Примечание: я использовал sed, чтобы убрать тип ресурса из имени, поскольку kubectl не распознает операции, выполненные над ресурсами типа deployment.extensions (и, возможно, другие).

...