Всем привет. Подскажите, что стоит выбрать для моих нужд. Докер, виртуальную машину или что-то еще.

Что мне нужно:

1) Возможность подключаться по ssh, ftp с любого ПК в одной локальной сети.
2) Возможность сделать копию текущего состояния и развернуть на другом ПК со всеми файлами БД и.т.д. (Не в текущей локальной сети)
3) Возможность работать с nginx, apache, npm, php, python, mysql
4) Быстрое обновление до последних версий вышеуказанных модулей. (Как у докера. Указал в конфиге версии и собрал контейнер по новой)
5) Работа с пользователями ubuntu. У каждого пользователя будет своя папка и свои данные для подключения по ssh/ftp, где они будут работать с модулями указанными в пункте 3.
6) Веб-ресурсы пользователей должны будут отображаться в браузере на любом ПК в локальной сети.

Дополнительно:

Самое главное не указал:
1. Для чего именно ты собираешь окружение? Для разработки или для прода?
2. Что такое "веб-ресурсы пользователей"?
3. Для чего тебе к этому подключаться по ssh и ftp? (для каждого нужно отдельное пояснение)
4. Что подразумевает под собой словосочетание "возможность работать с ..."?
5. Кто такие "пользователи"?

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

Если тебе всё-таки именно виртуальные машины нужны, то тогда и бери виртуальные машины и настраивай их при помощи ansible.

Если тебе нужны контейнеры, то бери k8s, но тогда уже придётся отказаться от 1,2 и частично 4 с 5, тк:
1. Контейнеры не должны иметь состояние. Так что сразу отлетает п2
2. Контейнеры должны быть изолированы, а по тому сразу отлетает п1 с доступом внутрь контейнеров
3. Обновление зависимостей (например базового образа) требует пересборки и перезапуска контейнера
4. Один контейнер - одно приложение. Не будет такого, что у тебя в одном контейнере будет всё что ты описал в п3 одновременно работать.
5. Никаких "папок" для пользователей не будет. Но у каждого пользователя-человека вполне может быть своя учётка для доступа в кластер, чтобы в нём создавать свои ресурсы. При этом на уровне учётки можно запретить одному пользователю доступ к ресурсам другого пользователя например.

  • По вопросам:

    1) Это локальная сеть в которой будут работать человек 15. Для того, чтобы пользователи подключались к серверу и выполняли тестовые задание, связанные с программированием на Laravel.
    2) Сайты написанные на Laravel.
    3) ssh взаимодействие с php на сервере через консоль. FTP - закидывать файлы со своего ПК.
    Переносить файлы с сервера на свои ПК.
    4) Использовать и настраивать через консоль или FTP, например, править конфиги Nginx.
    5) Иметь доступ только к своим папкам в директории /home на сервере с OC ubuntu.
    Грубо говоря по FTP Laravel закинуть к себе в домашнюю директорию.

  • VoRoN1999, если проверяется именно работа с Laravel, а не умение деплоить в кубер, то легче будет действительно взять какой-нибудь proxmox например и использовать ansible для начальной настройки
  • Василий Банников, Где могу более подробно изучить данную тему?
    Буду благодарен, если скинете пару статеек.
  • VoRoN1999, да хоть на том же хабре вводи в поиск и сортируй по рейтингу - будет тебе куча статей.
  • Если тебе нужны контейнеры, то бери k8s, но тогда уже придётся отказаться от 1,2 и частично 4 с 5, тк:

    Это вы прочитали в истинно верной книжке линуксоидов-безопасников?) С контейнерами можно делать всё то, что описал автор, и ему вовсе не нужно для этого разрешение международного консенсуса по правильному использованию контейнеров.
    На всякий случаю поясню для VoRoN1999 , что:
    1) Контейнеры успешно имеют состояние вопреки линксоидам
    2) Контейнеры просто работают, можно настроить доступ хоть по SNMP. Никой изоляции они не обязаны придерживаться, а эти слухи распускают безопасники.
    3) Обновление никак не связано со сборкой. Просто некоторые люди решили за вас пересобрать контейнер с новой версией. Но вы можете обновить софт, можете разделить софт и данные, можете много всего сделать с обновлением...
    4) Один контейнер - один контейнер. В нём будет работать абсолютно всё, что запущено, хоть 4235 приложений.
    5) Контейнер совершенно никак не связаны с файловой системой. Они могут содержать любые папки для любых пользователей, а также монтировать папки хоста и много чего ещё.

  • Griboks, ага, но то что вы описываете очень сильно расходится с тем, как это показывается в любом руководстве => требует чуть более чем среднего понимания, чтобы не выстрелить себе в ногу.

    В то время как то что хочет автор является вполне обычным сценарием для "жирных" виртуалок.

    Пасы в сторону безопасников, если честно, не понял - это скорее про удобство работы, чем про безопасность.
    Гораздо легче собрать новый контейнер, и перенакатить deployment, чем подключаться к каждой поде по отдельности и менять исполняемые файлы как-то внутри них, попутно пытаясь не стриггерить перезапуск мёртвой поды из-за остановки процесса.
    => доступ по ssh и ftp тупо не нужен.

  • Griboks, Для многих контейнер - это просто модное слово и оно совершенно отвязано от понимания того, что это просто упрощенная виртуалка. Про безопасников честно говоря совсем не понял - к чему тут? Контейнер безопасен не более и не менее, чем обычная виртуалка, запущенная в KVM или VB - просто у него другая область применения.
  • CityCat4, контейнер менее безопасен чем виртуалка, которая в свою очередь менее безопасна чем выделенный сервер. Поэтому безопасники продвигают аудит контейнеров, минимальные изолированные сборки, блокировку портов и т.п.
  • Griboks, Любой треп за безопасность не имеет смысла без модели нарушителя. Если мы под виртуалкой понимаем KVM, например, то чем один контейнер менее безопасен чем одна виртуалка?
  • CityCat4, согласен, безопасники с давних времён портят всем жизнь. Пусть сначала исходящие порты закроют, а потом уже начинают копаться внутри сети.

    чем один контейнер менее безопасен чем одна виртуалка

    У контейнера больше эксплойтов + обычно используются готовые потенциально вирусные контейнеры из хаба. Т.е. установить на виртуалку вирус сложнее, чем написать docker run not-a-virtus-image.

 

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

 

    • Какую технологию выбрать?Есть ответ
    • 07.04.2024
    Ответить

    При выборе технологии для разработки проекта следует учитывать несколько ключевых факторов, которые помогут определиться с оптимальным вариантом. Вот несколько важных моментов, на которые стоит обратить внимание:

    1. **Цели проекта**: Определите, для чего вам нужна технология. Если вам нужно быстро развернуть небольшой проект, то можете обратить внимание на более простые и легкие в освоении технологии. Если же проект крупный и масштабный, то стоит выбирать более мощные инструменты.

    2. **Ваши навыки и опыт**: Учитывайте свои собственные знания и опыт в выборе технологии. Если вы уже знакомы с определенным языком программирования или фреймворком, то будет легче развиваться в этом направлении.

    3. **Сообщество и поддержка**: Важно выбирать технологию, которая имеет активное сообщество разработчиков и обширную базу знаний. Это поможет вам быстрее решать возникающие проблемы и находить ответы на вопросы.

    4. **Производительность и масштабируемость**: Если ваш проект требует высокой производительности и масштабируемости, то выбирайте технологии, которые хорошо справляются с такими задачами.

    5. **Безопасность**: Обязательно учитывайте вопросы безопасности при выборе технологии. Некоторые языки и фреймворки имеют встроенные механизмы защиты от уязвимостей, что может быть критически важно для вашего проекта.

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

Оставить комментарий