Использование --record в императивных командах kubectl в Kubernetes - PullRequest
3 голосов
/ 10 июля 2020

Я попытался найти полезную информацию, когда мне следует использовать --record. Я создал 3 команды:

  • k set image deployment web1 nginx=lfccncf/nginx:latest --record
  • k rollout undo deployment/web1 --record
  • k -n kdpd00202 edit deployment web1 --record

Может ли кто-нибудь сказать мне, если я нужно использовать --record в каждой из этих трех команд?

Когда необходимо использовать --record, а когда это бесполезно?

Ответы [ 2 ]

4 голосов
/ 10 июля 2020

Вы можете указать флаг --record для записи команды, выполняемой в аннотации ресурса kubernetes.io/change-cause. Записанное изменение полезно для будущего самоанализа. Например, чтобы увидеть команды, выполняемые в каждой версии развертывания.

kubectl rollout history deployment.v1.apps/nginx-deployment
The output is similar to this:

deployments "nginx-deployment"
REVISION    CHANGE-CAUSE
1           kubectl apply --filename=https://k8s.io/examples/controllers/nginx-deployment.yaml --record=true
2           kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.16.1 --record=true
3           kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.161 --record=true

Таким образом, это не обязательно для любой из команд, но рекомендуется для kubectl set image, потому что вы ничего не увидите в разделе CHANGE-CAUSE как указано выше, если вы пропустите --record

3 голосов
/ 10 июля 2020

Желаемое состояние Kubernetes может быть обновлено / изменено с помощью двух парадигм:

  1. Либо императивно с помощью команд kubectl adho c (k set, k create, k run, k rollout, ..)
  2. Или декларативно с использованием YAML-манифестов с одним k apply

Второй способ идеален для лечения ваших k8s проявляется как Код, затем вы можете поделиться этим Кодом с командой, отредактировать его, например, до Git, и продолжать отслеживать его историю, используя методы GitOps (модели ветвления, Проверка кода, CI / CD).

Однако , первый способ не может быть рассмотрен командой, так как эта adho c -команда будет выполняться одним человеком, и никто не может знать причину изменения .

Чтобы преодолеть проблема первого способа, опция --record заключается в том, чтобы связать причину root изменения как аннотацию с именем kubernetes.io/change-cause, и значение этой аннотации является самой императивной командой.

(примечание ниже это из официального делать c* 102 9 *)

Примечание: вы можете указать флаг --record, чтобы записать команду, выполняемую в аннотации ресурса kubernetes.io/change-cause. Записанное изменение полезно для будущего самоанализа. Например, чтобы увидеть команды, выполняемые в каждой версии развертывания.

В качестве вывода:

  • Теоретически --record не является обязательным
  • Практически, это обязательно для обеспечения надежных изменений и соответствия процессу SRE и культуре DevOps.
...