George
на своем железе развернут
ну, ок, а более подробно?
Roman
какая-нибудь корреляция между сервисами есть?
нет, все по шаблону стандартному делойменту разворачиваю, разница только в лейблах и названии сервисов
George
т.е. можно подытожить?
Alexander
значит дело в ноде где запускается под
George
что docker logs не дает никакого выхлопа на указанных сервисах (контейнерах) в кубе?
Alexander
поищите корреляцию нода-под без логов
Roman
ну, ок, а более подробно?
есть 3 виртуальных сервера заказаных у хостерпровайдера, один использую как мастер ноду, остальные использую как воркер ноды
George
я думаю, что самое верное - совет от Александра
George
вероятно проблема в конкретных нодах
Roman
понял, спасибо, попробую в эту сторону посмотреть
Andor
@zuzzas или path должен быть внутри эндпоинта? чота ваще нифига не понятно :)
Andor
и походу с валидацией схемы есть проблемки
𝚔𝚟𝚊𝚙𝚜
В 2021 Helm 3 выйдет. Вот заживём!
как будто в lua нету скобочек
Andor
ое, и правда в эндпоинтах
Andor
сподобился глянуть в описание CRD
𝚔𝚟𝚊𝚙𝚜
Andor
ну и оператор видимо не всегда подхватывает изменения в сервисмониторах
Andor
смотри как красиво (нет): ingress+:: { 'prometheus-k8s': ingress.new() + ingress.mixin.metadata.withName('prometheus-k8s') + ingress.mixin.metadata.withNamespace($._config.namespace) + ingress.mixin.metadata.withAnnotations({ 'nginx.ingress.kubernetes.io/ssl-redirect': 'true', }) + ingress.mixin.metadata.withLabels({ app: 'prometheus-k8s', az: customize.region + 'a', # not sure it is required, just mimics old ingressy }) + ingress.mixin.spec.withRules( ingressRule.new() + ingressRule.withHost(customize.hostname) + ingressRule.mixin.http.withPaths( httpIngressPath.new() + httpIngressPath.withPath(path) + httpIngressPath.mixin.backend.withServiceName('prometheus-k8s') + httpIngressPath.mixin.backend.withServicePort('web') ), ) + ingress.mixin.spec.withTls({ secretName: customize.hostname, hosts: [customize.hostname], }), },
𝚔𝚟𝚊𝚙𝚜
https://gist.githubusercontent.com/kvaps/f77055e97984b415f73396ee53af7dbf/raw/542c372c2f445219af95e26d7e5d0951b9d7c95a/ing-example.jsonnet
да норм, просто мне сейчас в понятии "простой json" намного проще мыслить, и поддерживать.
Rainbow
ну вот тот же kube-prometheus - не "из пары строк"
ingress.mixin.spec.withTls({ из пары строк
𝚔𝚟𝚊𝚙𝚜
на выходе получается почти-что тоже самое, большинство манифестов было просто сконвертированно с yaml2json с минимальным набором изменений
Rainbow
@Andorka не проще было рядом yaml оставить с ingress?
𝚔𝚟𝚊𝚙𝚜
а девелоперов ты тоже заставляешь думать жсоном?
девелоперы не занимаются дистрибьюцией приложений в куб (пока что)
Rainbow
Мне jsonnet нравится только тем, что можно зафигачить функцию "мой типовой деплой" и покрыть ей большую часть deployments
Andor
как мне жсоннетом поправить элемент в массиве?
Andor
первый (и единсвенный) элемент
𝚔𝚟𝚊𝚙𝚜
через for?
Andor
я не умею
Andor
хотя пофиг, целиком массив заменю
𝚔𝚟𝚊𝚙𝚜
тебе нужно сформировать новый массив и обойти все элементы старого
Andor
да там один элемент
Andor
нельзя что ли по индексу обратиться?
Andor
std.mapWithIndex есть, но это тоже выглядит оверкиллом
𝚔𝚟𝚊𝚙𝚜
попробуй посмотреть в https://jsonnet.org/learning/tutorial.html там Array and Object Comprehension
Andor
ну там тоже создание нового массива
Rainbow
helm же хотел lua? а то с jsonnet как-то много вопросов
Rainbow
С lua только 1 вопрос, почему массивы с 1 нумеруются 😐
Terry
С lua только 1 вопрос, почему массивы с 1 нумеруются 😐
может, потому, что так заложено при создании Lua ?
Rainbow
может, потому, что так заложено при создании Lua ?
это риторический вопрос. на них не отвечают
Terry
это риторический вопрос. на них не отвечают
ставь тег #риторическийвопросниочемчистопописатьрешил
Rainbow
😂
Dmytro
хелм хотя бы просто темплейтит ямл и по каждому полю в манифесте можно просто почитать доку кубера
Dmytro
а тут ещё найди доку где почитать и выглядит пиздецово
Dmytro
я так понимаю оператор + и строки конкатенирует и дип мердж объектов делает и арифметический плюс тоже?
Andor
хелм хотя бы просто темплейтит ямл и по каждому полю в манифесте можно просто почитать доку кубера
хельм темплейтит не ямль, а текст, то, что этот текст можно потом распарсить как ямль - другой вопрос
𝚔𝚟𝚊𝚙𝚜
хелм хотя бы просто темплейтит ямл и по каждому полю в манифесте можно просто почитать доку кубера
ну знаешь, ksonnet-lib тоже никто не обязывает юзать, а без нее это такой-же обычный json, по каждому полю в манифесте можно просто почитать доку кубера
Andor
ksonnet умеет 1) юзать хельм как внешнюю зависимость 2) юзать ямли как источники данных
Andor
у меня кстати не ksonnet, а прям jsonnet + ksinnet-lib, получается
Andor
ты про хельм?
𝚔𝚟𝚊𝚙𝚜
стандартные прототипы в ksonnet кстати не юзают ksonnet-lib: #ks generate namespace test INFO Writing component at '/tmp/test/components/test.jsonnet' #cat components/test.jsonnet local env = std.extVar("__ksonnet/environments"); local params = std.extVar("__ksonnet/params").components.test; { "apiVersion": "v1", "kind": "Namespace", "metadata": { "labels": { "name": params.name }, "name": params.name } }
Dmytro
про юзанье хельма из ксоннет
Andor
смешивать генерацию структур (ямлей-жсонов) с генерацией текста (го-шаблоны) это прям да
Dmytro
да, лучше же смешать самопальный дсл и ямл, а потом ещё и через хельм его продеплоить насколько я понял можно
Andor
хельма с луа пока нету, поэтому вот так
Dmytro
круто ваще
Andrey
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: labels: k8s-app: prometheus name: prometheus namespace: monitoring spec: endpoints: - interval: 30s port: web path: /operatored selector: matchLabels: prometheus: k8s
Вот пример из Helm деплоя моего. Всё без проблем отрабатывает. - port: https-metrics scheme: https tlsConfig: insecureSkipVerify: true certFile: /etc/prometheus/secrets/prometheus-scraper-cert/tls.crt keyFile: /etc/prometheus/secrets/prometheus-scraper-cert/tls.key path: /metrics/cadvisor honorLabels: true relabelings: - regex: endpoint|namespace|pod|service action: labeldrop - sourceLabels: [__meta_kubernetes_endpoint_address_target_name] targetLabel: node - targetLabel: scrape_endpoint replacement: cadvisor
Andor
да, лучше же смешать самопальный дсл и ямл, а потом ещё и через хельм его продеплоить насколько я понял можно
наоборот, ксоннет может подтянуть чарты хельма и опционально его обработать как тебе надо
Andrey
я уже починил
Не там поле где-то было?
Andor
угу, я думал это поле для сервисмонитора, а оно для эндпоинта
Andor
и применялось и туда и туда если указать
Andor
и оператор подтупливает, не всегда ловит изменения сервисмонитора
𝚔𝚟𝚊𝚙𝚜
про юзанье хельма из ксоннет
проблема в том, что многие вендоры поставляют готовые helm-чарты, и переписывать их на что-то свое - себе дороже
𝚔𝚟𝚊𝚙𝚜
хельма с луа пока нету, поэтому вот так
на мой взгляд проблема хелма не только в теплейтах, а еще в том что у него нет той декларативности, которую дает ksonnet
Andor
а сильно ли она нужна?
Andor
вон пример выше: хочу простой способ поправить первый элемент массива, надо было дописать в него одно поле
𝚔𝚟𝚊𝚙𝚜
я уже писал про несколько kubernetes кластеров и про ks apply stage ks delete stage ks apply prod - это очень крутая фишка
Dmytro
наоборот, ксоннет может подтянуть чарты хельма и опционально его обработать как тебе надо
ужас, зачем это надо? Сделай свой чарт и там поправь, это ж кому-то такое говно потом достанется в наследство