Stanislav
/me припомнил, что на текущей работе основная БД как была на отдельной виртуалке 10 лет назад, так и осталась
Anton
Stanislav
50Гб
bebebe
У меня в загашнике оракл на центоси 4.х с 2006 по-моему крутится. Только диски меняем
Stanislav
А оракл вообще в контейнер лезет?
Stanislav
Именно для этого :-)
Знакомому DBA показать :-)
Никита
Теперь, хорошие новости в том, что при использовании сетевых плагинов, основанных на маршрутизации, типа calico, kube-router, в сеть подов и сеть сервисов можно попасть, если знать к ним маршруты. Собственно, внутри кластера они по дефолту будут (их распространит сетевой плагин), а вот внешним хостам их можно как-нибудь сообщить, например, через BGP (что эти сетевые плагины тоже умеют). Можно хоть статические маршруты прописать, однако это не очень хороший путь, так как при изменении состава кластера их придётся обновлять вручную.
Соответственно, если сеть подов доступна, поды можно публиковать как headless сервис и получать все недостатки балансировки через DNS, но и все профиты от отсутствия ната где бы то ни было.
Grisha
Никита
Grisha
Grisha
Получаете чтобы сильно не рукоблудить кубер ноды с ингризом или сервисами нужно поднимать в отдельных ВМ и натить
Grisha
это конечно не снимет нат оверхеда, но хотя бы не запутает по ip
Никита
Да не, ну там же просто всё. С дефолт гейтвеем пиришься по BGP и всё. Это звучит сложно, а по факту там настроек - AS и IP пира на кластере, ну и с десять строк в конфиге дефолт гейтвея, каким бы он ни был.
Никита
И всё, устанавливается tcp-соединение и в нём передаются маршруты.
Grisha
bebebe
Grisha
Stanislav
Мда... Вот какие у вас нагрузки, да ещё с контейнерами, что вам штатный нат мешает?
Grisha
Grisha
в плане выбора драйвера
Никита
В случае flannel роль BGP-демона выполняет демон flannel.
Никита
Ну и там очевидные минусы в духе "следить за таблицей соединений".
Никита
Но я не говорю, что НЕТ НАТ НЕЗЛЬЗЯ, просто надо понимать, как его использование на что будет влиять.
Vadim
Stanislav
Ну то есть, это такая попытка не ставить отдельный фронтенд вне кубера для публичного сервиса? Просто в случае, если сервис непубличный, нат вряд ли хоть как-то заметно повлияет на работу - просто не будет такого количества соединений.
Grisha
Мне просто чужда идея для nginx фронта использовать адрес ноды
Stanislav
А почему, собственно?
Stanislav
Впрочем, да, это внутри кубернетеса практически.
Grisha
просто прийдется пилить ингриз который смотрит на nginx который смотрит на node
Grisha
лишняя итерация
Stanislav
Выдели пару нод специально для nginx, по-моему, это будет проще, чем выделять дефицитные нынче белые адреса разбираться с BGP специально для того, чтобы избавиться от nginx вообще.
Dmytro
Stanislav
Тем более :-)
Vlad
В openshift-же haproxy. Там где можно свои велосипеды сделали.
Stanislav
А неважно, что там, haproxy или nginx, по-моему... Возможности пересекаются.
𝚔𝚟𝚊𝚙𝚜
Grisha
что такое этот ваш openshif?
Sergei
Grisha
а как чинить если что?
Denis
Я слышал что он умеет image docker по хэшу перекачивать)
𝚔𝚟𝚊𝚙𝚜
Denis
куб тоже же умеет
Я тут просто уже не один раз задавал этот вопрос... Блин было бы круто понять как это сделать
Никита
Никита
Ну а чтоб поды обновились сами, надо updateStrategy выставить в RollingUpdate, например.
Никита
В спеке ресурса.
𝚔𝚟𝚊𝚙𝚜
Vadim
𝚔𝚟𝚊𝚙𝚜
просто вместо тэга указываешь хэш, если такого image с этим хэшом на ноде нет, скачивается новый image
Denis
а откатываться назад как?
Вот именно не как) Девелоперы исправляют косяки в коде и перезапускают CI. Там имейдж билдится заново и потом деплоится в кластер. 😂
Я дико уже ору чтобы деволопер сборки начать тегировать или там отдельные фич-ветки)
Vadim
ну тогда прочитай уже про sha256 manifest
Denis
Рил уже хочу этот Helm выкинуть куда подальше)
Andor
Vadim
никакой магии там нет, просто есть imagestreams которые сами автоматически подставляют sha256sum в деплоймент
Rainbow
Denis
Rainbow
gitlab
Denis
gitlab
Крутяк! Щас сижу доку чекаю, но так и не нашел переменную, которая бы в себе хранила хэш докер билда
Rainbow
там один минус, работает с 1 билд сервером, на двух уже расходится @vrutkovs подсказывал.
Rainbow
docker inspect --format="{{index .RepoDigests 0}}" image:tag
Rainbow
подробности думаю не сильно интересны.
Rainbow
RepoDigests появляется только после
docker push
Vadim
RepoDigest как-раз таки расходиться не должен
Rainbow
я криво выразился. в общем
docker inspect --format="{{index .RepoDigests 0}}" image:tag
появляется после docker push и это то, с чем k8s сможет стянуть образ.
Denis
Rainbow
По sha256 ещё можно смотреть нужно ли делать docker push. Экономит секунд 5, на монорепе ощутимо, стараюсь реализовать git push до running в кластере за <1min.
Rainbow
sed -i замена переменных?
Anonymous
м
Denis
sed -i замена переменных?
вот мой деплой в пайлайне:
script:
- export TAG="$(python3 /bin/release-tag.py)"
- mv ./helm/chart ./helm/$CI_PROJECT_NAME
- sed -i "s/{%version%}/$TAG/g" ./helm/$CI_PROJECT_NAME/Chart.yaml
- sed -i "s/{%projectname%}/$CI_PROJECT_NAME/g" ./helm/$CI_PROJECT_NAME/Chart.yaml
- sed -i "s/{%image_tag%}/$CI_BUILD_REF_NAME/g" ./helm/$CI_PROJECT_NAME/values.yaml
- helm package ./helm/$CI_PROJECT_NAME
- helm s3 push --force $CI_PROJECT_NAME-$TAG.tgz retail
- helm s3 reindex retail
- helm-values -u $GITLAB_URI
- helmfile --selector release=develop sync
Rainbow