LINUX.ORG.RU
ФорумAdmin

вопрос по kubernetes. в целом о деплое кода на volume

 , , ,


0

4

Не люблю php и всякие wordpress, но так получилось, что есть кейс о том, чтобы их ( их много) автоматически масштабировать, реплицировать и все такое. В данный момент , допустим , они лежат все на docker-compose, сами файлы от worpdress замаунчены в шары. Соответственно есть webhook сервис, который следит за гит сервером и автодеплоит изменения с мастер веток. такой ci/cd на коленке.

Теперь к делу. Поднял я тестовый k8s кластер, чтобы напихать туда эти вордпрессы. Но eсли в python/java/nodejs/ruby мы пихаем наш код в сам докер, то имхо никто никогда не пихает в докер php код. И уж особенно в случае с worpdress. Таким образом под каждый сайт у нас есть 1 под, в котором стоит какой-нить php-fpm или апач, к этом поду примаунчен persistent volume , в котором лежит код wordpress.

Вопрос, а что делать дальше? Как деплоить изменения-то? k8s рассчитан на то, что код лежит в докерах, и при написании новых штук, мы пересобираем докер и деплоим его в k8s. Никто не хранит код в persistent volume. C другой стороны пихать код WP в докер тоже безумие.

А если я буду пихать в под самопильные сервисы с git и webhook , чтобы оним пуш деплой и кидали его в volume, то наифига мне тогда вооьще k8s, если надо строить велосипеда, то я могу обойтись и без k8s.

В общем, такое вот..

★★★★

Последнее исправление: constin (всего исправлений: 1)

А в чем проблема взять образ с ВП или сделать самому его?

Можешь взять Gitlab и его артифактори, собирать образ при изменениях и тогда просто в кубах образ забирать при билде.

PunkoIvan ★★★★
()

У тебя варианта два: собирать код вордпреса (это же приложение, у него состояния нет) в докер образ, монтировать его как контейнер с данными при инициализации nginx (главного контейнера), делается это через общий volume или писать сайдкар для периодического обновления содержимого pv из гита, не забывай что pv нужно расшарить на все заинтересованные сервисы.

dtm
()
Ответ на: комментарий от no-such-file

Я пытаюсь его натолкнуть на мысль. Вот, задумается он и перестанет городить турусы на колёсах.

P.S. Никому ничего не запрещаю. Взрослый человек может делать со своей жизнью абсолютно всё, включая самоубийство, гомосексуализм, тяжёлые наркотики. И уж тем более он может взять оркестратор, поднять в нём единственный контейнер, и поперёк оркестратора лазить в тот контейнер своими грязными руками.

ugoday ★★★★★
()
Ответ на: комментарий от no-such-file

Разумеется можно пихать и так делают.

А что у вас в деревне статику там , картинки на пару террабайт тоже в докер пихают?

constin ★★★★
() автор топика
Ответ на: комментарий от dtm

или писать сайдкар для периодического обновления содержимого pv из гита,

ну мне не нужно переодически, мне нужно по вебхуку, например, как сейчас.

монтировать его как контейнер с данными при инициализации nginx

А вот это лучше, спасибо.

constin ★★★★
() автор топика
Ответ на: комментарий от constin

То есть если бы код движка был на питоне - его нормально было бы пихать слой контейнера, а если он на php - то нет?

Странная какая-то логика.

alpha ★★★★★
()

Кстати, еще тогда в догонку. Хорошо, я запихаю WP в докер, но очевидно без папки wp-upload, где лежат картинки и прочие тяжелые файлы.

У k8s есть собственный инструмент для бэкапа/снепшота persistent volume? Потому как, например, в реалиях k8s кластера на нодах в hetzne никаких механизмов по бэкапу data volumes hetzner не дает. Даже снепшот виртуалки ( что имхо при IaS и k8s бесполезно) не приводит к снепшоту подключенного к ней data volume.

constin ★★★★
() автор топика
Последнее исправление: constin (всего исправлений: 1)
Ответ на: комментарий от ugoday

самоубийство, гомосексуализм, тяжёлые наркотики

Тонко.

no-such-file ★★★★★
()
Ответ на: комментарий от alpha

То есть если бы код движка был на питоне - его нормально было бы пихать слой контейнера, а если он на php - то нет?

а вот хрен знает, почему у меня так сложилось в голове. Но одна причина все же есть. докер должен быть легко убиваем и перезапускаем и тд. А докер WP без выноса кода будет сам постоянно меняться, поставили плагин, поставили тему, обновили wp самим wp. В результате деплоили 1 образ, а через пару итераций получили другой. Таким образом такой контейнер не будет «cloud native»

constin ★★★★
() автор топика
Последнее исправление: constin (всего исправлений: 1)
Ответ на: комментарий от constin

Кто сказал?

Таким образом под каждый сайт у нас есть 1 под, в котором стоит какой-нить php-fpm или апач, к этом поду примаунчен persistent volume , в котором лежит код wordpress.

Зачем вам с таким подходом вообще k8s? Он же только мешает.

ugoday ★★★★★
()
Ответ на: комментарий от constin

А докер WP без выноса кода будет сам постоянно меняться, поставили плагин, поставили тему, обновили wp самим wp.

о.О о.О о.О Мужик, который себе яйца гвоздями к брусчатке на Красной площади прибивал, делал это ради славы и денег. А вы зачем?

В мире контейнеров задачи „поставил плагин, поставил тему, обновился“ делаются только и исключительно путём правки Dockerfile и последующем изготовлении нового образа. Если вы как-то модифицируете контейнер после запуска — вы используете технологию неправильно.

ugoday ★★★★★
()

По моему как раз таки волюмы в этом случае — это заморочка автора которая заставляет делать кучу лишних телодвижений, при этом не решает никаких проблем.
В волюмы надо монтировать сами данные (типа аватарки пользователей), а не приложение, и не важно на чем оно написано.

Ну а по теме, вероятно можно пересоздавать деплоймент с новым PVC (если я правильно понял задачу).

sphericalhorse ★★★★★
()
Ответ на: комментарий от constin

Но одна причина все же есть. докер должен быть легко убиваем и перезапускаем и тд

Это ты с энтерпрайзом не сталкивался, ахахаха.
У меня тут контейнеры с явой по 5 гигабайт, который стартуют по 3-5 минут, а потом ещё и не убиваются. И ниче, работает.

sphericalhorse ★★★★★
()
Ответ на: комментарий от constin

У k8s есть собственный инструмент для бэкапа/снепшота persistent volume?

Собственного вроде бы нет.
Думаю какие-то решения для этого есть. А вообще зависти опять таки от StorageClass, который ты используешь.

sphericalhorse ★★★★★
()
Ответ на: комментарий от ugoday

Зачем вам с таким подходом вообще k8s? Он же только мешает.

Я его изучаю, изучать лучше всего на реальном проекте, сейчас под рукой проекта на микросервисах нет, но есть вот эта пачка WP. Есественно я не буду деплоить это все в k8s , если окажется, что он избыточен или, что еще хуже, навредит.

Но для изучения - этот кейс тоже подходит. Или хотя бы для понимания. Если мне ответят - WP не для k8s , то я понимаю, что это не универсальный инструмент. Если мне отвечают - пихай WP внутрь докера, то я уже ответил , а где тут cloud native тогда? Если мне отвечают - хреначь деплой на pv сторонними средствами, то да, а нафига тогда k8s тут вообще.

constin ★★★★
() автор топика
Последнее исправление: constin (всего исправлений: 1)
Ответ на: комментарий от constin

В нашей деревне статику и картинки пихают в какой-нибудь object storage.

theNamelessOne ★★★★★
()
Ответ на: комментарий от constin

а где тут cloud native тогда

Я честно говоря без понятия что значит этот модный маркетинговый термин, но неизменяемую часть монтировать волюмами как-то странно.
Опять таки, в даном случае код вордпреса — не изменяемый. Изменяемое в твоем случае — это содержимое wp-uploads.

Если твоя цель научиться покрутить-повертеть, то тебе отвечают, что код WP бессмысленно пихать в отдельный волюм.

sphericalhorse ★★★★★
()
Ответ на: комментарий от constin

Вы заходите не с того конца. K8s сделан под определённую модель использования. Чем ближе ваш проект будет к „горизонтально масштабируемым микросервисам без состояния“, тем легче и проще вам будет жить. А у вас в проекте вы пытаетесь изобразить немасштабируемый макросервис с состоянием. Это просто кратчайшая дорога к боли и разочарованиям.

ugoday ★★★★★
()
Ответ на: комментарий от sphericalhorse

Я честно говоря без понятия что значит этот модный маркетинговый термин

это значит, что совокупное приложение должно быть готово, чтт его в любой момент перегрузят, перенесут, удалят и восстановят. при этом оно должно не потерять рабочее состояние.

Опять таки, в даном случае код вордпреса — не изменяемый.

я не большой знаток WP, но там еще есть папки с темами, плагинами , а еще люди ставят редаторы кода прямо в сам вордпресс,да его даже обновить могут из админки с изменением всех файлов

те нужно запретить людям все действия по установке плагинов, тем и прочего через админку wp. короче , WP , видимо надо сильно подготавливать перед тем как запихивать в куб.

constin ★★★★
() автор топика
Ответ на: комментарий от ugoday

Вы заходите не с того конца

да я вижу, что неудачно выбрал кейс. буду искать другой проект. WP пусть болтаются в docker-compose уак раньше, ну или в swarm mode можно их пихнуть, чтобы скалировать ноды.

constin ★★★★
() автор топика
Ответ на: комментарий от constin

Либо придумайте как лишить WP состояния.

ugoday ★★★★★
()
Ответ на: комментарий от constin

нужно запретить людям все действия по установке плагинов, тем и прочего через админку wp

Ненужно. Более того, это удобно, что можно потыкать плагины, темы и т.д. а потом снести pod, чтобы вернуть как было. В чём проблема-то?

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

А что туда не могут напихать редакторов-плагинов?

там нет проблем с тем, чтобы держать сам wp в примаунченом томе и пушить туда и оттуда чем захочешь. я полагал, что в k8s есть для этого встроенные инструменты.

constin ★★★★
() автор топика
Последнее исправление: constin (всего исправлений: 1)
Ответ на: комментарий от constin

там нет проблем с тем, чтобы держать сам wp в примаунченом томе и пушить туда и оттуда чем захочешь

А так ты и там гланды через жопу вырываешь? Ну ок.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

И что? Изменения ничего не ломают же.

я не уверен на 100% , что ничего не сломается. плюс клиент любит ставит какие-то страшные плагины, типа визуального редактора тем и страниц мышкой, модули автоматического перевода страниц.

в общем, наврено это было бы возможно, если бы люди, которые ковырются в админке, понимали, что можно и что нельзя делать. но исходить надо из того, что они там будут делать что-то ужасное. а если есть команда дизайнеров, кодеров и прочее, то тогда клиенту уже не нужен WP, верно?

constin ★★★★
() автор топика
Ответ на: комментарий от no-such-file

да просто WP построен так, что не очень он подходит для докера имхо

constin ★★★★
() автор топика
Ответ на: комментарий от constin

я не большой знаток WP, но там еще есть папки с темами, плагинами , а еще люди ставят редаторы кода прямо в сам вордпресс,да его даже обновить могут из админки с изменением всех файлов

Так у вас Вордпресс под Гитом или пользователи с админки настраивают?
Если второй вариант — то это всё меняет. С топика это не было очевидно.

sphericalhorse ★★★★★
()

Но eсли в python/java/nodejs/ruby мы пихаем наш код в сам докер, то имхо никто никогда не пихает в докер php код

вот тут чушь

SevikL ★★★★★
()
Ответ на: комментарий от SevikL

вот тут чушь.

я просто ошибся в формулировке, естественно статик код неизменяемый самим же кодом можно пихать, но речь о WP. и половина отвечающих с умным видом несут херню, впрочем как всегда на лоре. я это точно вижу в постах про области, в которых я профи.

constin ★★★★
() автор топика
Последнее исправление: constin (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.