Andor
но выглядит код моего коллеги
Andor
(дерьмово)
Andor
@alexesDev спасибо, я попробую так сделать
Rainbow
Ну на любом функциональном языке без path оно так и выглядит плюс минус
Andor
у меня тут демонсет не задеплоился потому что в лимиты не влез :)
Andor
на одном хосте
Rainbow
Только там ещё лучше опираться на name контейнера (function(index, item) config.containers[index] + if item.name == "two" then { resources: {} } else {}),
Rainbow
И patch вынести в локальную переменную (function(index, item) config.containers[index] + if item.name == "two" then patchResources else {}), Вчера ты ужасы рассказывал, а так мне нравится 😁
Andor
а ты молодец
Andor
ты внимательнее прочитал доку
Rainbow
Я на js пишу часто 🤦‍♂️
Andor
но просто +: по индексу массива было бы намного проще
G72K
можно containers: [super.containers[0] + { resources: {} }] + super.containers[1:] Но а вообще для этого есть mapContainersByName :)
Andor
> Но а вообще для этого есть mapContainersByName :) не в голом jsonnet
G72K
А не, extendContainerWithName у меня. Т.е. выглядит так: extendContainerWithName(config, "default", { resources: {}})
Andor
шикарно, то что надо
Andor
но в голом жсоннет этого всё равно нет
Andor
вот ещё один повод почему ты не хочешь с ксоннет съезжать
G72K
> Но а вообще для этого есть mapContainersByName :) не в голом jsonnet
Неизбежно появляется helpers.libsonnet , написать такие хелперы не сложно
Andor
Неизбежно появляется helpers.libsonnet , написать такие хелперы не сложно
ну вот у меня опыта с жсоннет три дня и мне было сложно :)
G72K
ну вот у меня опыта с жсоннет три дня и мне было сложно :)
Через три дня ещё менее сложно будет :)
Andor
через три дня я планирую уже в потолок плевать :)
G72K
Это дело такое, если затянуть, надо следить чтобы потолок не начал плевать обратно.
Andor
ничо, в феврале мне будет не до вот этого вот всего уеж
Rainbow
ничо, в феврале мне будет не до вот этого вот всего уеж
Будешь прометей руками катить и дисковерить?
Andor
не знаю пока
Etki
- куда ты катишь этот прометей? - в прод
Andor
lol
Andor
- всё равно надо катить
Andor
интересно, что это я у себя сломал, что у меня не работает импорт couldn't open import "kubecfg.libsonnet": no match locally or in the Jsonnet library paths
Rainbow
а покаж
да тоже самое, что у меня, только заранее знает структуру.
Andor
не, я всё равно не врубаюсь как это использовать
Andor
вот вроде код понятный
Andor
но куда его сунуть - непонятно
Михаил
обновилось!
Rainbow
но куда его сунуть - непонятно
https://gist.github.com/alexesDev/fecc1d971c1b9e0ec1e0e040a56f721a local extendArrayByName(list, name, patch) = std.mapWithIndex( (function(index, item) list[index] + if item.name == name then patch else {}), list );
Andor
это нормально что я хочу на это юнит-тесты?
Etki
это нормально что я хочу на это юнит-тесты?
меня ей-богу здесь однажды забанят
a1eXei
но когда будут банить, думай о юнит-тестах :))
Михаил
меня ей-богу здесь однажды забанят
Иди пиши юнит тесты на деплой кластера куба
Rainbow
это нормально что я хочу на это юнит-тесты?
Мне кажется они старались сделать так, чтобы они были не нужны 😁 На деле вышло круче чем патч по индексу.
Rainbow
https://gist.github.com/alexesDev/77f1853e82c072ea18fc8c389271a229 Во, вот так максимально нормально и обобщённо config + { containers: patchArrayItemBy(config.containers, "name", "two", { resources: { limit: { cpu: 3, }, }, }), }
Vadim
Иди пиши юнит тесты на деплой кластера куба
не пешы, подумой. Уже есть кубовские integration tests
Михаил
не пешы, подумой. Уже есть кубовские integration tests
Я думаю нет тестов - нет проблем
Vadim
а вот еще хорошее https://awesome-prometheus-alerts.grep.to/
Andor
@alexesDev записываю тебя в жаваскриптеры :(
Andor
но спасибо за помощь, сразу пригодилось в другом месте тоже
G72K
это нормально что я хочу на это юнит-тесты?
Да :) у нас тестов больше чем кода :)
Rainbow
Что такое "two"?
имя контейнера в примере
Rainbow
name: "two"
G72K
А ) тогда уж patchArrayItems(arr, f, ext) которая делает arr[i] + ext if f(arr[i]) но такое нельзя пользователям давать, оставлять в кишках своих либ для реализации patchContainerByName()
Rainbow
Там есть по ссылке целиковый пример. Имя можно дать любое pathArrayItemByProperty если полность, но длинное слишком ext это что?
G72K
Это как модифицировать
G72K
{ resources: ... }
Rainbow
Ты так предлагаешь писать? containers: patchArrayItems(config.containers, (function(item) item.name == "nginx"), { resources {}, });
Rainbow
containers: patchArrayItems(config.containers, "name", "nginx", { resources {}, }); это просто короче, в любом случае это 1 строчка кода, на вкус.
Andor
+ это не дип мёрж что ли блин!
Andor
local patchArrayItemByKey(list, key, value, patch) = std.mapWithIndex( (function(index, item) std.mergePatch(list[index], if item[key] == value then patch else {} )), list );
Rainbow
Видел там ещё :+ и std.mergePatch
Andor
containers: patchArrayItemByKey(super.containers, 'name', 'node-exporter', { resources: { requests: { cpu: '50m' } } })
Andor
Видел там ещё :+ и std.mergePatch
:+ это для другого немношк
Andor
карочи вот так работает
Rainbow
containers: patchArrayItemByKey(super.containers, 'name', 'node-exporter', { resources: { requests: { cpu: '50m' } } })
super.containers о, круто. Теперь 100% нужно пробовать на выкатывать так
G72K
Ты так предлагаешь писать? containers: patchArrayItems(config.containers, (function(item) item.name == "nginx"), { resources {}, });
Если хочется универсальности :) но мне ее как раз не хочется. Вот щаз так конкретно эта проблема решается : v1.with("component").deployment.resourcesFor("main").requests({ cpu: "500m", memory: "4Gi" }) .resourcesFor("main").limits({ cpu: "3", memory: "6Gi"})
Rainbow
Если хочется универсальности :) но мне ее как раз не хочется. Вот щаз так конкретно эта проблема решается : v1.with("component").deployment.resourcesFor("main").requests({ cpu: "500m", memory: "4Gi" }) .resourcesFor("main").limits({ cpu: "3", memory: "6Gi"})
Интересный код, посмотрю как делается resourcesFor("").requests().resourcesFor("").limits() А так тут просто проблема как поудобней. У @Andorka проблема запатчить готовый jsonnet
G72K
Так оно и патчит
Rainbow
Только если так containers: patchArrayItems(config.containers, "name", "nginx", v1.with("component").deployment.resourcesFor("main").requests({ cpu: "500m", memory: "4Gi" }) .resourcesFor("main").limits({ cpu: "3", memory: "6Gi"}) ); Но не проще руками написать?
Алексей
Кто кубеспреем раскатывает кластера, встречались с проблемой когда на мастерах не создаётся манифест для kube-proxy?
Алексей
всем привет. никто не замечал ситуацию, когда скейлишь сначала деплои в ноль, а потом обратно в желаемое количество, а число затрачиваемых ресурсов на нодах растет? как я понимаю, когда деплои заскейлены в ноль, то они не должны вообще тратить ресусры нод...
Light Mushroom
aws us-west-2 у всех работает норм сейчас?
Й
Ноу
Й
Лаги просто жопа