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
а ты молодец
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
Andor
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
Andor
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
но когда будут банить, думай о юнит-тестах :))
Etki
Rainbow
https://gist.github.com/alexesDev/77f1853e82c072ea18fc8c389271a229
Во, вот так максимально нормально и обобщённо
config + {
containers: patchArrayItemBy(config.containers, "name", "two", {
resources: {
limit: {
cpu: 3,
},
},
}),
}
Михаил
Vadim
а вот еще хорошее https://awesome-prometheus-alerts.grep.to/
Andor
@alexesDev записываю тебя в жаваскриптеры :(
Andor
но спасибо за помощь, сразу пригодилось в другом месте тоже
Sergey
G72K
G72K
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
Andor
карочи вот так работает
Rainbow
Rainbow
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 у всех работает норм сейчас?
Й
Ноу
Й
Лаги просто жопа