#kubernetes
#kubernetes
Вопрос:
У меня есть 2 модуля внутри одного развертывания yaml kubernetes
один для базы кода и php-fpm вместе
один для nginx
как предоставить общий доступ к папке code base для nginx?
я не ожидаю увидеть какой-либо ответ, который использует команду init для копирования папки из модуля в модуль
РЕДАКТИРОВАТЬ я также пытаюсь разделить интерфейсную службу (nginx) и серверную службу (fpm и код), но поскольку для самого приложения требуются сложные правила перезаписи nginx, поэтому в моем случае это не сработает
НО в соответствии с этим репозиторием -> https://gist.github.com/matthewpalmer/741dc7a4c418318f85f2fa8da7de2ea1
кажется, что это невозможно сделать без КОПИРОВАНИЯ, но копирование выполняется очень медленно, если у вас большая файловая база
я хочу сделать то же самое, что и docker-compose volume
Комментарии:
1. Вы пробовали pv / pvc?
2. на самом деле мой вопрос заключается в совместном использовании файла кода между модулями в рамках одного развертывания, это не связано ни с каким типом тома, даже с efs, nfs
Ответ №1:
Насколько я могу предположить, основываясь на предоставленной вами информации, у вас есть следующие варианты:
a. Создайте новый образ образа Nginx в качестве вашего BASE
образа и скопируйте весь ваш исходный код в этот образ. Затем ссылайтесь на это изображение в Kubernetes Deployment
.
или
б. Добавьте свой исходный код в ConfigMap
и смонтируйте его в качестве тома.
или
c. Используйте initContainer (который, как вы уже сказали, вы не хотите делать).
Все это, с моей точки зрения, кажется неправильным. Я думаю, было бы лучше пересмотреть, почему вы это делаете, и посмотреть, есть ли другие варианты.
РЕДАКТИРОВАТЬ (теперь больше контекста):
Вам не нужно, чтобы ваш код добавлялся в контейнер Nginx.
Вам просто нужно разрешить хост. Этого можно достичь, добавив Service
, который указывает на ваш PHP-код с тем же именем, которое вы определили в upstream
Nginx.
Посмотрите на эту статью: https://kubernetes.io/docs/tasks/access-application-cluster/connecting-frontend-backend/#creating-the-frontend
Комментарии:
1. спасибо за ответ, поскольку я хочу, чтобы fpm и nginx разделялись, а не объединялись в одно изображение, поэтому я использую fpm в качестве базы для включения моего исходного кода, но я также хочу, чтобы nginx загружал папку с исходным кодом, иначе он не сможет запуститься
2. @user192344 Почему? Вы используете блок восходящего кода или что-то в этом роде? Дайте некоторый контекст, я могу помочь немного больше.
3. да, используя восходящий поток для nginx, например, восходящий поток fastcgi_backend { server!FPM_HOST!:!FPM_PORT!; }
4. В этом случае вам не нужно развертывать свой код. Вам просто нужно разрешить хост. Этого можно достичь, добавив
Service
, который указывает на ваш PHP-код с тем же именем, которое вы определили вupstream
Nginx. Посмотрите на эту статью: kubernetes.io/docs/tasks/access-application-cluster /…5. @user192344 Я думаю, что мы вступаем на территорию, более специфичную для базы кода. Одна вещь, которую я могу сказать с уверенностью, заключается в том, что разделение этих компонентов должно быть приоритетом. Объединение их всех в модуль / контейнер, вероятно, повредит вам в долгосрочной перспективе. AFAIK, если у вас есть весь ваш восходящий поток, доступный как сервис, Nginx должен иметь возможность маршрутизировать ваш трафик вокруг k8s.