Развертывание современных приложений с помощью Kubernetes и Harness

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

Предварительные условия:

  • Скачайте и установите Python 3 с официального сайта.
  • Установите Fastapi с помощью команды pip install fastapi.
  • Вам также понадобится ASGI-сервер для производства, например, Uvicorn, установите его командой pip install "uvicorn[standard]".
  • Зарегистрируйтесь на платформе Harness [модуль CD].
  • Получите доступ к кластеру Kubernetes для развертывания нашего приложения. Вы также можете использовать Minikube или Kind.

Учебник:

Предполагая, что вы знаете концепции Kubernetes, мы перейдем непосредственно к написанию простого приложения на python. Сначала создадим очень простое python-приложение в Fastapi. Что такое Fastapi? Согласно их собственному сайту, «FastAPI — это современный, быстрый (высокопроизводительный) веб-фреймворк для создания API с Python 3.6+ на основе стандартных подсказок типов Python».

Скопируйте приведенный ниже код в файл main.py,

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
   return {"message": "Hello World"}
Вход в полноэкранный режим Выйти из полноэкранного режима

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

uvicorn main:app --reload
Войти в полноэкранный режим Выйти из полноэкранного режима

При посещении сайта http://127.0.0.1:8000/ вы должны увидеть следующий результат.

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

FROM python:3.8.10
COPY requirements.txt /
RUN pip3 install -r /requirements.txt
COPY . /app
WORKDIR /app
ENTRYPOINT ["uvicorn", "main:app",  "--host", "0.0.0.0", "--port", "8500", "--reload"]
Войти в полноэкранный режим Выйти из полноэкранного режима

Создайте файл requirements.txt и включите две библиотеки в качестве зависимостей.

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

docker build -t simple_app .
Войти в полноэкранный режим Выйти из полноэкранного режима

Пометьте образ и отправьте его в Docker Hub с помощью следующих команд,

docker tag simple_app:latest [dockerhub username]/simple_app:latest
Войти в полноэкранный режим Выйти из полноэкранного режима
docker push [dockerhub username]/simple_app:latest
Войти в полноэкранный режим Выйти из полноэкранного режима

Создайте файлы манифеста Kubernetes для развертывания и демонстрации приложения в качестве сервиса.

Создайте файл deployment.yaml в корне приложения и добавьте следующие спецификации кода/манифеста,

apiVersion: apps/v1
kind: Deployment
metadata:
 name: simple-deployment
 labels:
   app: simple-app
spec:
 replicas: 1
 selector:
   matchLabels:
     app: simple-app
 template:
   metadata:
     labels:
       app: simple-app
   spec:
     containers:
     - name: fastapi
       image: docker hub username/simple_app:latest
       ports:
       - containerPort: 8500
Вход в полноэкранный режим Выход из полноэкранного режима

Создайте файл service.yaml и добавьте следующие спецификации кода/манифеста,

apiVersion: v1
kind: Service
metadata:
 name: simple-service
 labels:
   app: ecommerce
spec:
 selector:
   app: simple-app
 type: LoadBalancer
 ports:
   - port: 8500
     targetPort: 8500
Войти в полноэкранный режим Выход из полноэкранного режима

Далее примените команды kubectl к файлам deployment и service yaml.

kubectl apply -f deployment.yaml
Войти в полноэкранный режим Выйти из полноэкранного режима
kubectl apply -f service.yaml
Войти в полноэкранный режим Выйти из полноэкранного режима

Затем проверьте работоспособность капсул, как и ожидалось, командой kubectl get pods.

Теперь пришло время увидеть наше приложение во внешнем мире.

Используйте команду kubectl get svc.

Вы увидите внешний IP-адрес, и мы можем использовать его для просмотра работы нашего приложения.

curl 192.168.0.107:8500

{«Hello»: «World»}

Добавьте простую тестовую конфигурацию для тестирования приложения.

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

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

Harness имеет довольно изящный пользовательский интерфейс и может помочь разработчикам без особых усилий выполнять CI/CD. После регистрации в Harness выберите вкладку Try NextGen, и перед вами откроется новый опыт и возможности CI/CD. Начните с понравившегося модуля, в нашем случае мы выберем Continuous Integration и Continuous Delivery. Сначала выберите модуль Continuous Integration, добавьте необходимые шаги и запустите его перед выполнением Continuous Delivery.

Убедитесь, что все необходимые коннекторы запущены. Также убедитесь, что на целевом кластере установлен Delegate.

Вы можете спросить — что такое Delegate и зачем он нужен? Ну, Harness Delegate — это служба/программа, которую необходимо установить/запустить на целевом кластере [кластер Kubernetes в нашем случае] для подключения ваших артефактов, инфраструктуры, совместной работы, проверки и других провайдеров к Harness Manager. Когда вы впервые устанавливаете Harness, вы устанавливаете Harness Delegate.

Мы не будем углубляться в Delegate в этой статье, поскольку это может быть отдельным блогом. Пока просто знайте, что делегат выполняет все операции по развертыванию за вас. Если вы хотите узнать больше о делегате, вы можете прочитать здесь.

Я только что показал вам, как развернуть простое python-приложение в Kubernetes с помощью kubectl и Harness. У нас есть хорошо документированный репозиторий приложений MERN Stack, который вы можете форкнуть и начать понимать полный конвейер CI/CD. Код приложения находится в репозитории harnessapps/MERN-Stack-Example, конфигурация Kubernetes — в репозитории harnessapps/MERN-Stack-Example-DevOps.

Готовы приступить к практической работе с Harness CI/CD?

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

  • Начало работы с Harness Continuous Integration
  • Непрерывное развертывание с помощью Harness CD

Счастливого DevOpsing!

Оцените статью
devanswers.ru
Добавить комментарий