В этой статье вы узнаете, как разработать простое приложение Python в Python Flask и развернуть его в Kubernetes.

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

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

Мы будем использовать Kubernetes для развертывания нашего приложения Python Flask, поскольку он позволяет нам беспрепятственно развертывать и управлять нашим приложением, а также позволяет нам масштабировать и выпускать новые функции, сокращая ресурсы только до тех, которые необходимы для бесперебойной работы нашего приложения.

Flask - это легкий веб-фреймворк Python. Это позволяет пользователям создавать приложения быстрее и проще, а также дает возможность масштабировать сложные приложения.

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

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

Каждое приложение Flask имеет встроенный сервер. Он принимает запросы от веб-сервера и преобразует их в информацию для приложения Python.

Между тем веб-сервер делает приложение общедоступным. Он принимает запросы от пользователя и отправляет обратный прокси на сервер приложений.

Требования для создания и развертывания нашего фляжного приложения:

Без лишних слов, давайте перейдем к созданию нашего приложения Flask.

Создание базового приложения Flask

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

Шаг 1. Установка

Первые шаги, которые мы предпримем при создании нашего приложения flask, - это создание папки приложения, установка виртуальной среды python и установка нашего пакета flask.

Создайте каталог приложения:

mkdir my_flask_app
cd my_flask_app

Установите виртуальную среду Python с помощью pip:

pip install virtualenv

Создайте виртуальную среду для нашего приложения:

virtualenv venv

Активируйте созданную нами виртуальную среду:

source venv/bin/activate

Установите пакет Flask:

pip install Flask

Сохраните все пакеты в файл:

pip freeze > requirements.txt

Теперь у нас установлен Flask, и мы готовы создавать наше приложение.

Шаг 2. Создайте приложение Flask

Первым шагом в создании нашего фляжного приложения является создание файла с именем app.py. Затем откройте файл с помощью предпочитаемой IDE или редактора, чтобы начать кодирование.

Создайте простое приложение-фляжку Hello World:

Чтобы запустить приложение на локальном компьютере, выполните следующие действия:

python app.py

Шаг 3. Разместите файлы HTML / шаблонов

Flask позволяет нам отображать содержимое для наших пользователей с помощью HTML. На этом этапе мы собираемся создать HTML-файл для нашей домашней страницы.

Flask читает HTML-файлы из каталога, называемого шаблонами, и считывает ресурсы, такие как ваш CSS, Javascript и изображения, из статического каталога.

Создайте шаблоны и статические каталоги внутри нашего каталога my_flask_app:

mkdir templates static

Создайте новый файл в каталоге шаблонов и назовите его home.html. Мы добавим в этот файл несколько строк HTML-кодов, прежде чем создавать для него маршрут в нашем приложении.

Наш файл home.html будет выглядеть так:

Затем мы создадим маршрут и функцию для обслуживания нашего HTML-файла. Чтобы обслуживать файлы HTML во флаконе, мы импортируем и используем функцию Flask с именем render_template.

Наш файл app.py now будет выглядеть так:

Запустите приложение на своем локальном компьютере, запустив:

python app.py

Перейдите по адресу localhost: 5000 / home в предпочтительном браузере, чтобы просмотреть приложение Flask.

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

Шаг 4. Создайте образ Docker

Нам нужно создать контейнер, чтобы иметь возможность запускать наше приложение в Kubernetes. Чтобы создать этот контейнер, мы должны создать образ Docker, который будет опубликован в реестре на Dockerhub.

Чтобы создать наш образ докера, нам нужно создать Dockerfile в каталоге нашего приложения.

Создайте файл, назовите его Dockerfile и добавьте в него следующие строки:

В Dockerfile мы строим наше приложение на основе базового образа Python в первой строке. Следующая строка создает рабочий каталог, а третья строка в Dockerfile устанавливает созданный каталог как рабочий каталог. Четвертая и шестая строки копируют файл requirements.txt и устанавливают в него пакеты, а пятая строка обновляет диспетчер пакетов pip python. Следующее, что мы делаем, это копируем все файлы в каталог нашего приложения, открываем наше приложение для порта 5000 и запускаем наше приложение с последней строкой.

Следующим шагом, который мы сделаем, будет создание образа докера, выполнив:

docker build -t [your_username]/my_flask_app .

Замените your_username в приведенной выше команде своим именем пользователя Dockerhub.

После создания образа докера нам нужно опубликовать его в облачном реестре, таком как Dockerhub. Чтобы опубликовать наш образ докера, мы сначала добавляем к нему тег версии, а затем нажимаем.

Добавьте тег к изображению:

docker tag my_flask_app:latest [your_username]/my_flask_app:0.1

Запустите образ докера:

docker run -p 5000:5000 [username]/my_flask_app:0.1

Отправьте образ в Dockerhub:

docker push [your_username]/my_flask_app:0.1

Теперь, когда мы успешно опубликовали наш образ докера, мы развернем приложение в Kubernetes.

Шаг 5. Разверните приложение в Kubernetes

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

Создайте пространство имен flaskapp:

kubectl create namespace flaskapp

Чтобы вывести список всех пространств имен в вашем кластере, выполните:

kubectl get namespace

Затем мы создадим файл манифеста развертывания, который создаст, а также запустит наше развертывание

Создайте файл манифеста с именем my_flask_app_deploy.yaml:

Чтобы развернуть развертывание в нашем пространстве имен flaskapp, выполните:

kubectl apply -f my_flask_app_deploy.yaml -n flaskapp

Чтобы проверить, запущено ли это развертывание:

kubectl get deploy -n flaskapp

Затем мы перенаправим наш локальный порт на порт контейнера модуля:

kubectl port-forward deployment/myflaskapp-deploy -n flaskapp 5000:5000

Перейдите по адресу localhost: 5000 / home, чтобы увидеть свое приложение Flask.

Затем мы создадим сервис Kubernetes для создания стабильной сети для работающего модуля. Для этого мы создадим файл манифеста.

Создайте файл манифеста с именем my_flask_app_service.yaml:

Чтобы создать сервис, запустите:

kubectl apply -f my_flask_app_service.yaml -n flask

Подготовка облачного LoadBalancer может занять некоторое время.

Чтобы проверить, подготовлен ли он, выполните следующие действия:

kubectl get svc -w

Как только вы увидите ВНЕШНИЙ IP-адрес службы, перейдите к нему в своем браузере, чтобы проверить предпочтительный веб-браузер.

TL;DR

  • Docker - это инструмент, предназначенный для упрощения создания, развертывания и запуска приложений с использованием контейнеров. Контейнер упаковывает весь код и все его зависимости в одну единицу для быстрого перехода из одной вычислительной среды в другую.
  • Flask - это легкий веб-фреймворк Python. Это позволяет пользователям создавать приложения быстрее и проще, а также дает возможность масштабировать сложные приложения. Flask - это микрофреймворк, следовательно, он позволяет разработчику использовать различные инструменты и пакеты, поскольку не поддерживает конкретный макет.
  • Kubernetes - широко используемая система оркестровки и управления контейнерами. Kubernetes - это платформа с открытым исходным кодом, которая позволяет пользователям развертывать, поддерживать и масштабировать приложения и их функции.
  • Мы развернем наше базовое приложение Flask как отдельный модуль и представим его как службу LoadBalance. Для этого мы сначала создаем пространство имен. Пространства имен позволяют пользователю сегментировать кластеры.