Rainbow
в kustomize это было бы 45 присваиваний
Это был бы большой yaml и патч
Andrey
патч из 45 строк?
Alex
патч из 45 строк?
но зато у патча нет проблем с костылями для идентации и прочим
Rainbow
почти каждая строчка это вставка переменной https://github.com/helm/charts/blob/master/stable/nginx-ingress/templates/controller-deployment.yaml переменной отсюда https://github.com/helm/charts/blob/master/stable/nginx-ingress/values.yaml можно просто yml написать без всего этого дроча одним файлом, чистым yml с deployment. А правки сделать в патче на то, что нужно.
Rainbow
Давайте везде писать my.yml value: {{ .Value }} и рядом ложить values.yml value: hello будет же круто. В стиле helm.
Andrey
в этом вашем чистом yaml значения откуда появятся?
G72K
офигеть, в официальной документации k8s уже пиарят kustomize
Ну секреты готовить им точно удобнее чем jq темплейтить :)
Rainbow
в этом вашем чистом yaml значения откуда появятся?
просто написаны в нем же rm my.yml mv values.yml my.yml вуаля
Alex
в этом вашем чистом yaml значения откуда появятся?
мб и переусложняю, но мне кажется правильнее в районе CD генерить override файл для основного манифеста, даже мб на базе темплейта
Andrey
не понял, что именно вы предлагаете. Есть объект, аттрибуты которого зависят от кучи переменных. Как бы вы не плясали, у вас будет куча присваиваний
Alex
не понял, что именно вы предлагаете. Есть объект, аттрибуты которого зависят от кучи переменных. Как бы вы не плясали, у вас будет куча присваиваний
вообще согласен, всё является костылями, но костыли с overrides на мой вкус выглядят более правильными, чем костыли с шаблонизацией через jinja 🙂
Andrey
там go template :)
Rainbow
не понял, что именно вы предлагаете. Есть объект, аттрибуты которого зависят от кучи переменных. Как бы вы не плясали, у вас будет куча присваиваний
Вот у меня есть абстрактное решение которое даёт такой yml без переменных apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 что тут нужно менять, чтобы это готовое решение мне катить на прод?
Rainbow
нет генератора, это просто yml
Alex
нет генератора, это просто yml
который хранится в гите проекта?
Andrey
нет генератора, это просто yml
если у вас есть полное понимание, что к чему и вы правите сырые манифесты, то вы сообразите, что вам надо править
Alex
как helm чарт
а смысл здесь в helm? O_o
Rainbow
ладно, я все, случайно зашел в чат. пойду поставлю star хельму
Rainbow
А на вопрос, что делать, если автор чарта забыл переменную, никто не ответил. Молится на автора походу.
Alex
🙂 Самый интересный кейс для лично меня – есть манифест деплоймента того же, в котором указана версия. Как с минимальными костылями сделать эту версию динамической в рамках пайплайна CD – вариантов дофига, helm выглядит для этой цели слишком оверхедным, jsonnet тоже, хочется чего-нибудь простого как в swarm - просто закинуть в ENV нужный номер версии. И самым адекватным вариантом на мой взгляд (вдруг что еще придётся перезаписать) выглядит kustomize
𝚔𝚟𝚊𝚙𝚜
buildah
сначала прочитал buildnah
Alex
cat k8s.yml | envsubst | kubectl apply -f - spec: ... image: $IMAGE
ну кстати хороший вариант, спасибо, потыкаю
𝚔𝚟𝚊𝚙𝚜
Podman
подман как-то немного по другому билдит, у меня debootstrap в нем так и не заработал
Rainbow
ну кстати хороший вариант, спасибо, потыкаю
у меня так раскатано 80% кластера
Alex
у меня так раскатано 80% кластера
выглядит почти как swarm )
Andrey
А на вопрос, что делать, если автор чарта забыл переменную, никто не ответил. Молится на автора походу.
ориентируйся на тупых чтоб захватить большую аудиторию. Я вот этого вопроса здесь не углядел https://t.me/kubernetes_ru/142992
Andrey
и на этот вопрос ответили раньше - форк
Andrey
а кто спорит
Mikhail [azalio]
и на этот вопрос ответили раньше - форк
я для себя думаю, что не форк, а helm template ... | kustomize )
Rainbow
я для себя думаю, что не форк, а helm template ... | kustomize )
@Andorka яж говорил, что так будут делать
Andrey
касательно envsubst - ему лучше указывать, какие переменные заменять
Rainbow
man envsubst
Alex
man envsubst
блин, откуда оно у меня в макоси? О_о
Alex
😂
Rainbow
указывать перменные нужно, если не известно что в файле. А там известно
Andrey
а так можно?
да, https://superuser.com/questions/1148950/what-is-shell-format-in-envsubst
Andrey
Alex
brew install envsubst ?
явно не делал точно
Mikhail [azalio]
могло принести по зависимостям может ставили чего
Alex
угу, скорее всего
Rainbow
это часть gettext, оно много где встречается
Alex
brew install pwgen brew install gpg где-то здесь подтянулось )
Alex
man envsubst
короче если кому-то лень гуглить или переходить по ссылкам или читать мануалы – --variables нужный флаг )
Rainbow
это нужно, если в файле может быть странный контект, вроде $DATA где DATA не переменная. Такого не бывает в yml. Мне за год не попадалось.
Alex
нет :)
там в мануале больше флагов нет, а этот вроде делает то, что нужно
Rainbow
In normal operation mode, standard input is copied to standard output, with references to environment variables of the form $VARIABLE or ${VARIABLE} being replaced with the corresponding values. If a SHELL-FORMAT is given, only those environment variables that are referenced in SHELL-FORMAT are substituted; otherwise all environment variables references occurring in standard input are substituted. envsubst [OPTION] [SHELL-FORMAT]
Andrey
envsubst '${ЗАМЕНЯЙ}${ЭТИ}${ПЕРЕМЕННЫЕ}'
Rainbow
{} не нужны
Andrey
не обязательны
Alex
офигеть, действительно
Alex
спасибо 🙂
Rainbow
Я тут каждую неделю расказываю про cat k8s.yml | envsubst | kubectl apply -f - как-то не работает популяризация
𝚔𝚟𝚊𝚙𝚜
Кстати, а кто-нибудь в курсе откуда в unix появились переменные с точками?
Rainbow
$POD_IP ?
откуда это?
Rainbow
А, ну писать bash в yml топчик, да.
𝚔𝚟𝚊𝚙𝚜
это какие?
env 'my.var=value' sh -c "env | grep my" my.var=value
𝚔𝚟𝚊𝚙𝚜
но они хитрые, через export их не задашь
Alex
env 'my.var=value' sh -c "env | grep my" my.var=value
хм, забавно, ни разу не сталкивался
Andrey
откуда это?
спутал, там другой синтаксис, с круглыми скобками
Andrey
но баш в yaml многие пихают, так-то
Alex
но баш в yaml многие пихают, так-то
ну многие пихают только малое подмножество
Andrey
я про то, что шанс встретить $ЧТОНИБУДЬ в yaml есть, и envsubst это в ноль зарубит
𝚔𝚟𝚊𝚙𝚜
хм, забавно, ни разу не сталкивался
в кубе это кстати тоже работает: env: - name: xpack.monitoring.enabled value: 'true'в logstash подобная конфигурация используется
𝚔𝚟𝚊𝚙𝚜
Похоже они вообще какие угодно могут быть, это bash накладывает строгие ограничения env 'h̷̖e͏̻ ͏̻c͖͙o̱̯m̹̻e͚̣s͠=val' sh -c "env | grep val" h̷̖e͏̻ ͏̻c͖͙o̱̯m̹̻e͚̣s͠=val