Разберем использование канареечного релиза на примере, где namespace будет sre и приложение будет auth.
Чтобы установить канарейку для всех deployment в определенном пространстве имен, используйте следующие команды:
dodo app canary set auth -n sre --image acrdodo/auth:latest --weight 10
dodo app canary set auth -n sre --image acrdodo/auth:latest --header x-canary:v2
Чтобы установить канарейку для конкретного deployment, используйте следующую команду:
dodo app canary set auth -n sre --deployment web --image acrdodo/auth:latest --header x-canary:v2
Чтобы установить канарейку для конкретного deployment, но только поднять версию имаджа:
dodo app canary set auth -n sre --deployment web --tag 2.0.5 --weight 10
setКоманда set поддерживает следующие параметры:
--context, -c: Укажите контекст (context), в котором будет выполнена команда.--namespace, -n: Укажите пространство имен (Namespace), в котором будет выполнена команда.--deployment, -d: Укажите конкретное развертывание (Deployment), к которому применяется команда.--image, -i: Укажите образ (Image), который будет использоваться для канарейки.--tag, -t: Укажите тег (Tag) образа, если необходимо.--header, -v: Укажите заголовок (Header), который будет использоваться для канарейки (игнорирует –weight).--weight, -w: Укажите вес (Weight) канарейки.Чтобы удалить канарейку, используйте следующие команды:
Для всех deployment:
dodo app canary delete auth -n sre -c d-yandex
Либо для конкретного deployment:
dodo app canary delete auth -n sre --deployment web
deleteКоманда delete поддерживает следующие параметры:
--context, -c: Укажите контекст (context), в котором будет выполнена команда.--namespace, -n: Укажите пространство имен (Namespace), в котором будет выполнена команда.--deployment, -d: Укажите конкретное развертывание (Deployment), к которому применяется команда.
Чтобы узнать статус канарейки, используйте следующие команды:
Для всех deployment:
dodo app canary status auth -n sre -c d-yandex
Либо для конкретного deployment:
dodo app canary status auth -n sre --deployment web
statusКоманда status поддерживает следующие параметры:
--context, -c: Укажите контекст (context), в котором будет выполнена команда.--namespace, -n: Укажите пространство имен (Namespace), в котором будет выполнена команда.--deployment, -d: Укажите конкретное развертывание (Deployment), к которому применяется команда.--output, -o: Укажите формат вывода, в котором вернется результат (json, text).Чтобы применить канарейку как базовую конфигурацию, используйте следующие команды:
dodo app canary apply -n sre -c d-yandex
dodo app canary apply -n sre --deployment web
applyКоманда apply поддерживает следующие параметры:
--context, -c: Укажите контекст (context), в котором будет выполнена команда.--namespace, -n: Укажите пространство имен (Namespace), в котором будет выполнена команда.--deployment, -d: Укажите конкретное развертывание (Deployment), к которому применяется команда.Данный код ходит в нужный неймспейс и в нужный dodoappservice ресурс, где для каждого deployment (или конкретного) создаёт копию
и добавляет к её имени приставку --canary. Далее, для самой этой копии дописывает в свойства publicIngress, internalIngress и privateIngress дополнительное свойство
extraAnnotations с разными значениями, в зависимости от параметров команды. После чего просто применяет изменения в кластере.
К примеру:
"publicIngress": {
"extraAnnotations": {
"nginx.ingress.kubernetes.io/canary": "true",
"nginx.ingress.kubernetes.io/canary-by-header": "always",
"nginx.ingress.kubernetes.io/canary-by-header-value": "byHeaderValue",
},