Пошаговое руководство с примером проекта

В этом посте мы собираемся развернуть приложение React с веб-API .NET. Сначала мы докерируем наше приложение, помещаем этот образ в реестр контейнеров Google и запускаем это приложение в Google GKE Autopilot. Мы увидим, как построить кластер Kubernetes в Google GKE, получить доступ к кластерам извне, настроить kubectl для работы с кластером GKE и многое другое.

  • Пример проекта
  • Предварительные требования
  • Установите интерфейс командной строки gcloud и настройте
  • Dockerize проекта
  • Отправка образа Docker в реестр контейнеров
  • Создание кластера автопилота GKE
  • Настройте Kuebctl с помощью кластера автопилота GKE
  • Развертывание объектов Kubernetes в кластере автопилота GKE
  • Доступ к веб-приложению из браузера
  • Резюме
  • Заключение

Пример проекта

Это простой проект, демонстрирующий разработку и запуск приложения React с .NET. У нас есть простое приложение, в котором мы можем добавлять пользователей, подсчитывать и отображать их сбоку, а также извлекать их, когда захотите.

Если вы хотите попрактиковаться, вот ссылка на этот проект на Github. Вы также можете клонировать его и запускать на своем компьютере.

// clone the project
git clone https://github.com/bbachi/react-dotnet-example.git
// run the project
cd react-dotnet-example
dotnet run

Предпосылки

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

Как разработать и создать приложение React с помощью .NET Core Backend

Другими предпосылками для этого поста являются основы Docker и основы Kubernests. Мы не собираемся обсуждать основы, такие как контейнер или Kubernetes, скорее, мы увидим, как построить кластер Kubernetes на GCP GKE. Ниже приведены предварительные требования, которые вы должны знать перед прочтением этой статьи.

Основы Докера

Вам необходимо понимать концепции Docker, такие как создание образов, управление контейнерами и т. Д. Ниже приведены некоторые ссылки, которые вы можете понять о Docker, если вы новичок.

Kubernetes: главное

Вам необходимо понимать основы Kubernetes, а также основы Docker. Вот несколько документов, которые помогут вам понять концепции Kubernetes.

Требования к GCP

  • Создать новый проект
  • Вам необходимо создать учетную запись для выставления счетов
  • Связать платежный аккаунт с этим проектом
  • Включите все API, которые нам нужны для запуска потока данных на GCP
  • Загрузите Google SDK

Учетная запись службы

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

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

export GOOGLE_APPLICATION_CREDENTIALS="/Users/bhargavbachina/gcp-credentials/gcp-dataflow-service-account.json"

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

gcloud auth login

Установите gcloud CLI и настройте

Получив учетную запись GCP, вы можете установить инструмент командной строки gcloud. Вы можете перейти к приведенной ниже документации и установить gcloud CLI в зависимости от вашей операционной системы. Вы можете настроить интерфейс командной строки gcloud для своего проекта.

Интерфейс командной строки gcloud является частью Google Cloud SDK. Вы должны загрузить и установить SDK в вашей системе и инициализировать его, прежде чем вы сможете использовать инструмент командной строки gcloud.

// initializing
gcloud init
// auth login
gcloud auth login

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

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

gcloud projects list

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

gcloud config set project staticweb-test

Dockerize проект

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

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

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

// build the image
docker build -t react-dotnet-img .
// run the image
docker run -d -p 5000:80 --name react-dotnet-ui react-dotnet-img
// list the image you just built
docker images
// list the container
docker ps

Отправка образа Docker в реестр контейнеров

GCP GKE работает с любым реестром Docker, таким как Docker Hub и т. Д. Но в этом посте мы увидим, как мы можем использовать реестр контейнеров GCP для хранения наших образов Docker. Убедитесь, что вы включили соответствующий API на GCP. Если вы войдете в систему и перейдете в Реестр контейнеров, вы увидите пустой реестр.

Первое, что нам нужно сделать, это включить API с помощью следующей команды.

gcloud services enable containerregistry.googleapis.com

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

gcloud auth configure-docker

Как мы видели в разделе «Пример проекта», давайте создадим образ Docker с помощью следующей команды.

docker build -t react-dotnet-img .

Давайте помечаем локальный образ докера именем реестра с помощью команды:

docker tag [SOURCE_IMAGE] [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
// run this command
docker tag react-dotnet-img gcr.io/staticweb-test/react-webapp:v1

Наконец, поместите образ в реестр контейнеров GCP.

docker push gcr.io/staticweb-test/react-webapp:v1

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

Создание кластера автопилота GKE

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

gcloud container clusters create-auto CLUSTER_NAME \
    --region REGION \
    --project=PROJECT_ID

Но мы увидим, как мы можем создать кластер через консоль. Перейдите на панель управления GKE в консоли GCP. Нажмите кнопку, чтобы создать кластер. Вы увидите всплывающее окно, в котором можно выбрать автопилот или стандартную версию, как показано ниже.

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

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

Вы можете нажать на кластер и перейти в раздел подробностей.

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

gcloud container clusters list

Развертывание объектов Kubernetes в кластере GKE

Теперь мы настроили kubectl для использования GCP GKE с нашей собственной машины. Давайте создадим объекты развертывания и обслуживания и будем использовать образ из реестра контейнеров GCP.

Во-первых, вам нужно получить URL-адрес репозитория из раздела сведений реестра контейнеров, в котором находится наш репозиторий.

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

Если вы клонировали проект из приведенного выше примера и находитесь в корневой папке, просто используйте эту команду для создания объектов kubectl create -f manifest.yml

Вы можете использовать следующие команды, чтобы убедиться, что все объекты находятся в желаемом состоянии.

// list the deployment
kubectl get deploy
// list the pods
kubectl get po
// list the service
kubectl get svc

Другое отличие, которое мы можем заметить в режиме автопилота, - это количество модулей в рабочем состоянии. Несмотря на то, что мы объявили 10 реплик в файле манифеста, мы можем видеть только 2 запущенных модуля из-за функции автопилота в кластере.

Доступ к веб-приложению из браузера

Мы создали сервис с типом LoadBalancer. Вы можете получить внешний IP-адрес от службы и получить доступ ко всему из браузера.

Вы можете получить доступ к веб-приложению по следующему URL-адресу

http://35.192.172.114

Удалить кластер

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

gcloud container clusters delete [CLUSTER_NAME]

Резюме

  • GKE - это управляемое Google решение Kubernetes, которое позволяет запускать контейнерные приложения в облаке и управлять ими.
  • Перед тем, как начать, вам нужно иметь docker и Kubernetes Essentials. Если у вас нет этих необходимых вещей, пройдите по ним по предоставленным ссылкам.
  • Здесь вам необходимо создать Учетную запись GCP.
  • Вам потребуется учетная запись для выставления счетов, которая будет связана с вашим проектом, чтобы все расходы оплачивались на эту учетную запись.
  • Вы можете создать кластер GKE через консоль, Gcloud CLI, REST API.
  • Вы можете установить интерфейс командной строки gcloud и настроить его для использования с вашим кластером GKE.
  • Настройте kubectl для использования кластера GKE.
  • Создайте развертывание и сервис с помощью Loadbalancer, чтобы получить к нему доступ извне.
  • Вы можете получить доступ к панели управления с помощью Kubeconfig или Token.
  • Убедитесь, что вы удалили, если не хотите взимать плату.

Заключение

Мы развернули простое приложение React с веб-API .NET Core в кластере Google GKE в режиме автопилота и получаем к нему доступ из браузера. В будущих публикациях мы увидим более сложные варианты использования.