Andor
@Andorka а как конкретно ты args патчил у node exporter можешь показать? Целиком выход или через nodeExporter+:: { } ?
nodeExporter +:: { daemonset +: { spec +: { template +: { spec +: { # hack resources requests containers: patchArrayItemByKey( super.containers, 'name', 'node-exporter', (function(item) { # patch for `args` can be removed after https://github.com/coreos/prometheus-operator/pull/2285 # TODO: remove this patch args: std.uniq(item.args + [ '--path.rootfs=/host/root' ]), resources: std.mergePatch(item.resources, { requests: { cpu : '70m' }}), }), ) } } } }, },
Andor
ещё непонятно как кастом ресурсы деплоить
Andor
создать родные кубер-ресурсы в терминах твоего языка ваще не вопрос
𝚔𝚟𝚊𝚙𝚜
ещё непонятно как кастом ресурсы деплоить
А какая разница, так же как и все остальное, или ты про отсутсвие CRD в ksonnet-lib?
Andor
Exception when deploying PrometheusRule to cluster <kubernetes.client.api_client.ApiClient object at 0x7f6cdd374b10> Traceback (most recent call last): File "/app/deploy.py", line 411, in <module> main() File "/app/deploy.py", line 399, in main deploy(documents, variables, cluster['name'], wait_rollout_result=args.wait_rollout_result) File "/app/deploy.py", line 229, in deploy _deploy(api, documents, settings, wait_rollout_result=wait_rollout_result) File "/app/deploy.py", line 155, in _deploy raise z AttributeError: 'module' object has no attribute 'MonitoringCoreosComV1Api'
Andor
пытался правило аггрегации запульнуть
Andor
запушнуть
Andor
не пашет короч
Florian
Коллеги, подскажите - есть игресс с ssl letsencypt. работает прекрасно. Пытаюсь его закрыть бейсиком, получаю 503ю ошибку. Кто нибудь сталкивался с таким?
Florian
Rainbow
Тупанул. Секрет точно есть? А то если не или кривой, бывает 503 без логов
Florian
Мм секрет точно есть. Попробую пересоздать, спс за подсказку
𝚔𝚟𝚊𝚙𝚜
Не знаю, у меня те же kind: Certificate нормально применяются из certmanager.k8s.io/v1alpha1
Andor
ща буду патчить нашу наколенную деплоилку
𝚔𝚟𝚊𝚙𝚜
не, ksonnet'ом
Andor
с ним у меня нет проблем :)
Andor
ну то есть есть, но попроще
𝚔𝚟𝚊𝚙𝚜
а ты про питон, сорри я чет подумал ты про ksonnet)
Andor
def get_object_api(doc, client_api): apiname = "".join(map(lambda x: x.capitalize(), re.findall('[A-Za-z][^./]*', doc['apiVersion'].replace(".k8s.io", ""))))+"Api" if apiname == 'V1Api': apiname = 'CoreV1Api' return getattr(kubernetes.client, apiname)(client_api)
Andor
бьютифул!
Andor
красивее этого кода невозможно представить же!
𝚔𝚟𝚊𝚙𝚜
как в jsonnet к родителю обратиться, и можно ли?
Andor
покажи пример
Andor
тебе возможно поможет локальная переменная
Andor
либо по абсолютному пути через $
Andor
либо через super
Andor
родитель это родительский элемент твоего элемента или это тот же элемент из объекта с которым ты объединяешься?
𝚔𝚟𝚊𝚙𝚜
{ a: 's', b: { c: $.a, }, }
Andor
{ a: 's', b: { c: $.a, }, }
ты можешь сделать типа { a: 's', local tmp = self.a, b: { c: { adin: tmp }} }
𝚔𝚟𝚊𝚙𝚜
но хотелось бы указать relative path
Andor
более-менее близко к relative можно через local как я показал
𝚔𝚟𝚊𝚙𝚜
пора открывать новый чат по jsonnet :)
Andor
local patchArrayItemByKey(list, key, value, fn) = std.mapWithIndex( (function(index, item) std.mergePatch(list[index], if item[key] == value then fn(item) else {} )), list );
𝚔𝚟𝚊𝚙𝚜
это ты где взял?
𝚔𝚟𝚊𝚙𝚜
у меня чет даже не гуглится
Andor
я сделялъ
𝚔𝚟𝚊𝚙𝚜
аа
Andor
посмотри ещё в k.libsonnet, там ещё есть пара полезных функций
Andor
mapContainers(f) mapContainersWithName(names, f)
Andor
по-сути то же самое
𝚔𝚟𝚊𝚙𝚜
даже так: x { spec+: { template+: { spec+: { containers: [ if y.name == 'nginx' then y { env+: params.extraEnvs } else y for y in super.containers ], } } } }
Andor
Которая внутри условия
𝚔𝚟𝚊𝚙𝚜
она делает y + { env+: params.extraEnvs } где y - это контейнер
𝚔𝚟𝚊𝚙𝚜
jsonnetfmt автоматически заменяет y + {} на y {}
Andor
А, это просто сокращение
Andor
Ну ок
Andor
А то встречал такую конструкцию уже, но сам не использовал
Andor
https://github.com/google/jsonnet/pull/593/files
Ильдар
def get_object_api(doc, client_api): apiname = "".join(map(lambda x: x.capitalize(), re.findall('[A-Za-z][^./]*', doc['apiVersion'].replace(".k8s.io", ""))))+"Api" if apiname == 'V1Api': apiname = 'CoreV1Api' return getattr(kubernetes.client, apiname)(client_api)
Я кажется пропустил часть серий. Это ты специально накручиваешь перед уходом, что бы тебя слёзно умоляли вернуться?
Andor
это не мой код
Andor
это говно-наколенная-поделка-на-питоне
Etki
хм, а на первый взгляд и не похоже на ансибл
Andor
а мне надо добавить в эту поделку поддержку crd
Andor
хотя бы сабсет
Михаил
Оно же само дохнет, не?)
Vadim
Оно же само дохнет, не?)
не, читаю логи бота, а там тонны форвардов от Васютки
Vadim
а реплаем на сообщение о входе не работает. Пофиксил
Petr
мужики, поделитесь опытом и мыслями, вы под каждое окружение поднимаете целый кластер или на одном кластере держите тестовые окружения и продакшн (разделяя их через неймспейсы, например)?
Anton
Конечно отдельные кластеры
А если бюджет не позволяет?)
Andrew
А если бюджет не позволяет?)
Ну конечно отдельные нсы в одном кластере :)
Etki
Rainbow
А если бюджет не позволяет?)
На hetzner можно взять 1-2 сервака по 40 евро, криво разбить каким-то proxmox на виртуалки и юзать как дев
Anonymous
мужики, поделитесь опытом и мыслями, вы под каждое окружение поднимаете целый кластер или на одном кластере держите тестовые окружения и продакшн (разделяя их через неймспейсы, например)?
я в-разных-неймспейсах-держу-chad очень удобно, особенно в гитлабе не нужно платить за enterprise и пользуюсь их автоконфигами, просто в зависимости от ветки добавляю постфикс к неймспейсу
inqfen
У меня прод в отдельном, staging /testing в отдельном
Antlar
Всем утра. Может кто сталкивался: куб 1.13.2 раскатанный с мастера кубспрея, калико, центось 7.6.1810, ipvs with lc lb, прометей 0.25.0+нодекспортер 0.15.3, хельм. При раскатке нодекспортера на одной из нод отваливается частично сеть
Antlar
?
Antlar
Ошибку при раскатке попозже скину, там про грпц что то
Andor
У меня прод в отдельном, staging /testing в отдельном
как тестируете обновление кубера?