В данном материале рассматривается разворачивание прокси-приложения на Raspberry Pi с использованием облегченного Kubernetes K3s.
Прокси-приложение разработано с использованием PHP в качестве внутреннего языка, чтобы продемонстрировать важность конфиденциальности в Интернете. Как и любой прокси, это приложение также пересылает запросы от имени пользователя, используя свой собственный IP-адрес и MAC-адрес, и пересылает с ответом, полученным из Интернета, тем самым скрывая IP-адрес пользователя.

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

IP-адрес, отображаемый при поиске через прокси, отличается от IP-адреса, отображаемого при обычном поиске. Таким образом проверяется работа прокси-сервера.
В данном случае мы будем использовать Docker. Docker – это программный модуль, который позволяет разработчикам изолировать свое приложение от его среды. Docker использовался в этом проекте для обеспечения большей гибкости приложения при развертывании, а также для упрощения миграции. С помощью этой команды мы создаем наш образ в корневом каталоге наших приложений.
$ docker build -t kuberpy:latest .
На выходе получим:

Теперь этот образ можно использовать для запуска контейнера.
$ docker run kuberpy:latest -p 8080:80
Флаг -p обозначает публикацию порта 80 в контейнере на порт 8080 хост-машины.
Kubernetes – это инструмент оркестровки контейнеров с открытым исходным кодом. Он обеспечивает самовосстановление, высокую доступность, автоматическое масштабирование и многие другие функции. Поскольку приложение развернуто на Raspberry Pi, мы использовали k3s, которое представляет собой легкое решение Kubernetes для периферийных вычислений. Чтобы развернуть инфраструктуру Kubernetes, перейдите в корневой каталог приложений и запустите:
$ kubectl create -f deployment.yml
$ kubectl create -f service.yml
Давайте теперь посмотрим на обе эти команды одну за другой. Файл deployment.yml содержит конфигурацию для развертывания приложения. Количество модулей, используемых портов и количество реплик.

Это указывает на то, что у нас есть одно развертывание k3s-deploy. Каждое развертывание состоит из модулей. Модули (Pods) – это логическое пространство, в котором размещается приложение.

Как мы видим, в рамках развертывания k3s-deploy работает один модуль. Дальнейшая детализация позволяет нам описывать модули.

Теперь у нас есть развертывание и запущенные модули. Однако у них нет возможности общаться ни с чем за пределами кластера. Здесь мы используем service.yml. Этот файл обрабатывает сетевую конфигурацию приложений. Мы используем службу типа loadbalancer, потому что только это позволяет осуществлять взаимодействие за пределами кластера. NodePort разрешает взаимодействие только внутри кластера.

В итоге получаем:

Вот и все. Наше приложение теперь доступно на указанном хост-порту и локальном хосте.
© digitrode.ru