Rainbow
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
Alex
Andrey
не понял, что именно вы предлагаете. Есть объект, аттрибуты которого зависят от кучи переменных. Как бы вы не плясали, у вас будет куча присваиваний
Alex
Andrey
там go template :)
Alex
Andrey
Rainbow
нет генератора, это просто yml
Rainbow
Andrey
нет генератора, это просто yml
если у вас есть полное понимание, что к чему и вы правите сырые манифесты, то вы сообразите, что вам надо править
Rainbow
ладно, я все, случайно зашел в чат. пойду поставлю star хельму
Rainbow
А на вопрос, что делать, если автор чарта забыл переменную, никто не ответил. Молится на автора походу.
Alex
🙂 Самый интересный кейс для лично меня – есть манифест деплоймента того же, в котором указана версия. Как с минимальными костылями сделать эту версию динамической в рамках пайплайна CD – вариантов дофига, helm выглядит для этой цели слишком оверхедным, jsonnet тоже, хочется чего-нибудь простого как в swarm - просто закинуть в ENV нужный номер версии. И самым адекватным вариантом на мой взгляд (вдруг что еще придётся перезаписать) выглядит kustomize
Rainbow
𝚔𝚟𝚊𝚙𝚜
buildah
сначала прочитал buildnah
Alex
𝚔𝚟𝚊𝚙𝚜
Podman
подман как-то немного по другому билдит, у меня debootstrap в нем так и не заработал
Rainbow
Sergey
Alex
Andrey
и на этот вопрос ответили раньше - форк
Alex
Andrey
а кто спорит
Vadim
Rainbow
Andrey
касательно envsubst - ему лучше указывать, какие переменные заменять
Alex
Rainbow
man envsubst
Alex
😂
Rainbow
указывать перменные нужно, если не известно что в файле. А там известно
Andrey
а так можно?
да, https://superuser.com/questions/1148950/what-is-shell-format-in-envsubst
Andrey
Mikhail [azalio]
Alex
Mikhail [azalio]
могло принести по зависимостям может ставили чего
Alex
угу, скорее всего
Rainbow
это часть gettext, оно много где встречается
Alex
brew install pwgen
brew install gpg
где-то здесь подтянулось )
Alex
man envsubst
короче если кому-то лень гуглить или переходить по ссылкам или читать мануалы – --variables нужный флаг )
Rainbow
это нужно, если в файле может быть странный контект, вроде $DATA где DATA не переменная. Такого не бывает в yml. Мне за год не попадалось.
Andrey
Alex
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
спасибо 🙂
Andrey
Rainbow
Я тут каждую неделю расказываю про
cat k8s.yml | envsubst | kubectl apply -f -
как-то не работает популяризация
𝚔𝚟𝚊𝚙𝚜
Кстати, а кто-нибудь в курсе откуда в unix появились переменные с точками?
Alex
Alex
Rainbow
Rainbow
А, ну писать bash в yml топчик, да.
𝚔𝚟𝚊𝚙𝚜
это какие?
env 'my.var=value' sh -c "env | grep my"
my.var=value
𝚔𝚟𝚊𝚙𝚜
но они хитрые, через export их не задашь
Alex
Andrey
откуда это?
спутал, там другой синтаксис, с круглыми скобками
Andrey
но баш в yaml многие пихают, так-то
Andrey
я про то, что шанс встретить $ЧТОНИБУДЬ в yaml есть, и envsubst это в ноль зарубит
Alex
𝚔𝚟𝚊𝚙𝚜
Похоже они вообще какие угодно могут быть, это bash накладывает строгие ограничения
env 'h̷̖e͏̻ ͏̻c͖͙o̱̯m̹̻e͚̣s͠=val' sh -c "env | grep val"
h̷̖e͏̻ ͏̻c͖͙o̱̯m̹̻e͚̣s͠=val