Как разделить базу кода между блоками Kubernetes?

#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.