Команды Dodo App Canary
Разберем использование канареечного релиза на примере, где 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",
},