Команда: traffic 🚥
Использование
dodo app traffic [command]
Доступные команды:
disable- отключить трафикenable- включить трафикstatus- состояние трафика
Доступные параметры:
-c,--contextstring - контекст, в котором будет выполнена команда-d,--deploymentstring - название деплоймента-n,--namespacestring - название неймспейса-a,--allbool - применить ко всем деплойментам
Как работает
Данный код управляет ресурсами Dodoappservice, выставляя опцию disableTraffic в true или false.
{
"apiVersion": "k8s.paas.dodois.io/v1",
"kind": "DodoAppService",
"metadata": {
"name": "auth"
},
"spec": {
"workloads": {
"deployments": {
"web": {
"publicIngress": {
"disableTraffic": true,
"hosts": {
"app-sre.d.yandex.dodois.dev": [
"/"
]
}
}
}
}
}
}
}
Оператор при обнаружении этой опции добавляет в аннотацию nginx.ingress.kubernetes.io/server-snippet в ingress, которая возвращает HTTP статус код 503 при открытии любой страницы, не передавая траффик на под сервиса: location ~* ^/ { deny all; return 503; }. Обрабатывает запросы в этом случае ingress controller, трафик не доходит до подов.
Примеры
Разберем управление трафиком на примере, где namespace будет sre и приложение будет auth.
Включить трафик
-
на всех деплойментах
dodo app traffic enable auth -n --all sre -c d-yandex -
на конкретном деплойменте
dodo app traffic enable auth -n sre -d web -c d-yandex
Выключить трафик
-
на всех деплойментах
dodo app traffic disable auth -n --all sre -
на конкретном деплойменте
dodo app traffic disable auth -n sre -d web
Посмотреть текущее состояние трафика
-
на всех деплойментах
dodo app traffic status auth -n --all sre -
на конкретном деплойменте
dodo app traffic status auth -n sre -d web