Roman
George
т.е. можно подытожить?
Alexander
значит дело в ноде где запускается под
George
что docker logs не дает никакого выхлопа на указанных сервисах (контейнерах) в кубе?
Alexander
поищите корреляцию нода-под без логов
Roman
ну, ок, а более подробно?
есть 3 виртуальных сервера заказаных у хостерпровайдера, один использую как мастер ноду, остальные использую как воркер ноды
Roman
George
я думаю, что самое верное - совет от Александра
George
вероятно проблема в конкретных нодах
Roman
понял, спасибо, попробую в эту сторону посмотреть
Andor
@zuzzas или path должен быть внутри эндпоинта?
чота ваще нифига не понятно :)
Andor
и походу с валидацией схемы есть проблемки
𝚔𝚟𝚊𝚙𝚜
Andor
ое, и правда в эндпоинтах
Andor
сподобился глянуть в описание CRD
𝚔𝚟𝚊𝚙𝚜
Andor
ну и оператор видимо не всегда подхватывает изменения в сервисмониторах
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],
}),
},
Rainbow
смотри как красиво (нет):
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],
}),
},
Это как в nodejs есть пакеты из пары строк. Проще самому их написать, чем тащить и получать такое 😁
Andor
𝚔𝚟𝚊𝚙𝚜
Rainbow
Andor
𝚔𝚟𝚊𝚙𝚜
на выходе получается почти-что тоже самое, большинство манифестов было просто сконвертированно с yaml2json с минимальным набором изменений
Rainbow
@Andorka не проще было рядом yaml оставить с ingress?
Andor
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
George
Rainbow
Rainbow
Rainbow
😂
Terry
Dmytro
Dmytro
хелм хотя бы просто темплейтит ямл и по каждому полю в манифесте можно просто почитать доку кубера
Dmytro
а тут ещё найди доку где почитать и выглядит пиздецово
Dmytro
я так понимаю оператор + и строки конкатенирует и дип мердж объектов делает и арифметический плюс тоже?
Andor
ksonnet умеет 1) юзать хельм как внешнюю зависимость 2) юзать ямли как источники данных
Andor
у меня кстати не ksonnet, а прям jsonnet + ksinnet-lib, получается
Dmytro
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
круто ваще
Andor
Andor
Andor
угу, я думал это поле для сервисмонитора, а оно для эндпоинта
Andor
и применялось и туда и туда если указать
Andor
и оператор подтупливает, не всегда ловит изменения сервисмонитора
𝚔𝚟𝚊𝚙𝚜
про юзанье хельма из ксоннет
проблема в том, что многие вендоры поставляют готовые helm-чарты, и переписывать их на что-то свое - себе дороже
Andor
а сильно ли она нужна?
Andor
вон пример выше: хочу простой способ поправить первый элемент массива, надо было дописать в него одно поле
𝚔𝚟𝚊𝚙𝚜
я уже писал про несколько kubernetes кластеров и про
ks apply stage
ks delete stage
ks apply prod - это очень крутая фишка