Рубрики
Uncategorized

Как развернуть приложение Express Node.js на Kubernetes и введение в контейнерацию

Как развернуть приложение Express Node.js на Kubernetes бесплатно с Oke. Теги с DevOps, Kubernetes, JavaScript, Node.

Контейнера

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

Однако для любого нетривиального применения вы не будете развертываться «один контейнер», а скорее группа контейнеров на нескольких хостах. В этой статье Мы посмотрим на Кубернаны , система открытого исходности Для автоматизации развертывания, масштабирования и управления контейнерными Приложения.

Какая проблема решает Кубернаны?

С докером у вас есть простые команды, такие как Docker Run или Докер Стоп начать/остановить контейнер соответственно. В отличие от этих простых команд, которые позволяют вам делать операции на одном контейнере, нет Docker Развертывает Команда для толкания новых изображений в группу хозяев.

В последнее время многие инструменты появились, чтобы решить эту проблему «контейнерного оркестрации»; популярные из них Мезос , Докер Рой (теперь часть докера двигателя), Кочевник и Кубебени. Все они приходят со своими плюсами и минусами, но недавно мы видели, Кубернаны возьмите значительную лидерство в использовании и особенностях.

Kubernetes (также называемые как «K8S») предоставляет мощные абстракции, которые полностью отделяют операции приложений, такие как развертывание и масштабирование из основных операций инфраструктуры. Итак, с Kubernetes вы не работаете с отдельными хозяевами или виртуальными машинами, на которые можно запустить код, а скорее Кубераты видит базовую инфраструктуру как Море вычисляет на котором поставить контейнеры.

Концепции Кубератеса

Kubernetes имеет архитектуру клиента/серверов. Server Kubernetes работает на вашем кластер (Группа хозяев), на которой вы будете развернуть ваше приложение. И вы обычно взаимодействуете с кластером с помощью клиента, например kubectl CLI.

Подвигание

POD — это базовый блок, который Kubernetes имеет дело с группой контейнеров. Если есть два или более контейнеров, которые всегда должны работать вместе, и должны быть на одной машине, сделать их стручок Отказ

Узел

Узел — это физическая или виртуальная машина, бегающая Kubernets, на которые могут быть запланированы стручки.

Этикетка

Этикетка — это пара ключа/значения, которая используется для идентификации ресурса. Вы можете пометить все ваши стручки Обслуживание производственного трафика с «, например.

Селектор

Выбор позволяет поискать/фильтровать ресурсы на этикетках. Следуя по предыдущему примеру, чтобы получить все производственные стручки ваши селектор «.

Услуга

Сервис определяет набор стручков (обычно выделенных на «селектор») и средство, с помощью которого для доступа к ним доступ, таких как один стабильный IP-адрес и соответствующее имя DNS.

Разверните приложение Express Node.js на Oke с помощью Kubernetes

Теперь, что мы знаем о основных концепциях Kubernetes, давайте увидимся в действии, развернув приложение Node.js на первый из всех, если у вас нет доступа к OCI, пожалуйста, перейдите в Попробуй это | Oci.

1. Установите клиент Kubernetes

kubectl Это интерфейс командной строки для запущенных команд против кластеров Kubernetes. kubectl :

Для проверки установки Run kubectl версия Отказ

2. Создайте документ докера вашего приложения

Вот приложение, с которым мы будем работать: Express.js-Hello-World . Вы можете увидеть в Dockerfile что мы используем существующее изображение Node.js из Dockerhub Отказ

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

docker build -t hello-world-image .

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

docker run --name hello-world -p 3000:3000 hello-world-image

Если вы посетите localhost: 3000 Вы должны получить ответ.

3. Создать кластер

Теперь мы создадим кластер с тремя узлами (виртуальными машинами), на которых мы разверним наше приложение. Вы можете сделать это легко, используя контейнер Контейнерная страница двигателя В вашей бесплатной учетной записи OCI.

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

Вы можете сделать это, добавив следующее ** Политика для вашего отсека : **

Allow service OKE to manage all-resources in tenancy

Затем вы сможете получить доступ к консольной консоли Oke и начните создавать свой кластер, как показано ниже:

У вас есть 2 Варианты при создании вашего кластера » Быстрый «или» Пользовательский » Создайте:

Быстрое создание:

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

Пользовательское создание:

Создайте кластер с пользовательскими настройками, предполагает существующую сеть.

** Для этого вы можете выбрать, что более применимо для ваших потребностей, для моего кластера я выбрал «быстрое создание».

В этом руководстве мы создадим кластер с 3 узлами, главным и 2 рабочим узлами. Мы используем тип машины VM.Standard 2.1, потому что для этого приложения нам не нужна большая вычислительная мощность.

Как только ваш кластер работает и работает, мы можем подключить его к kubectl Так что у нас есть доступ к кластеру из нашей командной строки Kubernetes. Вы можете сделать это, доступа к «KubeConfig: это можно загрузить из меню« Начало работы », как показано ниже:

4. Загрузить Docker Image в Oracle Container Registry Registry

Итак, теперь у нас есть докерный образ и кластер. Мы хотим развернуть это изображение на нашему кластеру и начать контейнеры, которые будут служить запросам.

Реестр изображения Oracle Container — это облачный реестр, в котором вы можете нажать на ваши изображения, и эти изображения автоматически становятся доступными для кластера вашего контейнера. Чтобы нажать изображение, вы должны построить его с правильным именем.

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

docker tag bmwhopper/helloworld:latest .ocir.io///:

V1 это Тег изображения.

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

docker push .ocir.io///:

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

5. Первое развертывание

Теперь у нас есть кластер и изображение в облаке. Давайте развернум это изображение на нашем кластере с Куберовщиком. Мы сделаем это, создавая Развертывание SPEC файл. Развертывание — это ресурс Kubernetes, и все ресурсы Kubernetes могут быть определены SPEC-файлом. Этот SPEC файл устанавливает желаемое состояние этого ресурса, а затем Kubernetes определяет, как перейти от текущего состояния в желаемое состояние.

Итак, давайте создадим один для нашего первого развертывания:

Развертывание.ЯМЛ

Apiversion: приложения/v1beta1 своего рода: Развертывание Метаданные: Имя: Привет-мировое развертывание Спецификация: Реплики: 2. шаблон: Метаданные: Ярлыки: # Этикетки для выбора/идентификации развертывания Приложение: Hello-World Спецификация: # POD Spec Контейнеры: — Имя: Hello-World Изображение: Hello-World-Image: V1 # Image мы толкнули Порты: — Контейнеровоз: 3000

Этот файл SPEC говорит: начать два стручка, где каждый POD определяется заданным POD SPEC. Каждый POD должен иметь один контейнер, содержащий Здравствуйте, миру - изображение: v1 Мы нажали.

Теперь запустите: $ kubectl create -f deployment.yml —save-config

Вы можете увидеть статус вашего развертывания, запустив Kubectl Получить развертывание . Для просмотра POD, создаваемого развертыванием, запустите эту команду: Kubectl Получить стручки Отказ

Вы должны увидеть бегущие стручки:

$ kubectl get pods
NAME                                     READY     STATUS    RESTARTS   AGE
hello-world-deployment-629197995-ndmrf   1/1       Running   0          27s
hello-world-deployment-629197995-tlx41   1/1       Running   0          27s

Обратите внимание, что у нас есть два подвода, потому что мы устанавливаем реплики на 2 в Развертывание .yml файл.

Чтобы убедиться, что сервер запустился, проверьте журналы бегом: $ kubectl logs {Pod-name} # kubectl logs Hello-World-Deployment-629197995-NDMRF

6. Раскрыть сервис в интернет

Теперь, когда у нас есть приложение, запущенное на нашем кластере, мы хотим разоблачить сервис в Интернет, вы должны поставить VMS за балансировщик нагрузки. Чтобы сделать это, мы создаем кубератусы Сервис Отказ

Для этого запустите следующую команду:

$ kubectl expose deployment hello-world-deployment --type="LoadBalancer"

За кулисами это создает Сервис Объект (сервис — это ресурс Kubernetes, как развертывание).

Беги Kubectl Получить услуги Чтобы увидеть публичный IP вашей услуги. Вывод консоли должен выглядеть так:

NAME                     CLUSTER-IP       EXTERNAL-IP      PORT(S)          AGE
hello-world-deployment   10.244.0.16       *.*.*.*          3000:30877/TCP   27m
kubernetes               10.244.240.1                 443/TCP          1d

Посетить http://: Чтобы получить доступ к службе. Вы также можете купить пользовательское доменное имя и сделать его указывать на этот IP.

7. Расширение вашего обслуживания

Допустим, ваша услуга начинает получать больше трафика, и вам нужно раскрутить больше экземпляров вашего приложения. Чтобы масштабировать в таком случае, просто отредактируйте свой Развертывание .yml Файл и изменить количество реплики чтобы сказать, 3 а потом беги Kubectl Apply Printe -F Deployment.yml И у вас будет три стручка, работающие в последнее время.

Упаковка

Мы охватывались многое начать материал в этом руководстве, но насколько касается Кубератеса, это только верхушка айсберга. Вы можете сделать гораздо больше, например, масштабирование ваших услуг для большего количества стручков с одной командой или монтажом секрет на стручках для вещей, таких как полномочия и т. Д. Однако этого должно быть достаточно, чтобы вы начали. Для получения дополнительной информации, пожалуйста, не стесняйтесь обращаться на Linkedin. или Твиттер

Брайан Мэтьюс

Технический консультант и евангелист с сосредоточенным на неверном и дежоне. Почему бы не дать Oracle Cloud A попробуйте с $ 300 бесплатные кредиты! https://bit.ly/2KQWy6k

Оригинал: «https://dev.to/bmwhopper/how-to-deploy-a-express-nodejs-app-on-kubernetes-and-an-intro-to-containerisation-2fin»