Что такое оркестровка контейнеров

Что такое оркестрация контейнеров

Что такое оркестровка контейнеров

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

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

Существуют различные платформы для оркестрации контейнеров. Они позволяют реализовать удобные и эффективные средства развертывания контейнерных систем, построения единой централизованной консоли для применения политик управления. Наиболее известны следующие системы: Kubernetes, Docker Swarm и Apache Mesos. Это не единственные системы — есть еще Nomad, Fleet, Aurora, Amazon EC2 Container Service, Microsoft Azure Container Service, однако они менее популярны.

Kubernetes — универсальный солдат

Kubernetes — для управления контейнерными кластерами. Появилась в результате наработок Google при использовании механизма для изоляции процессов в виртуальной среде (Borg). В 2014 г. Google открыла код Kubernetes и стала распространять систему под лицензией Apache 2.0.

Что такое оркестровка контейнеров

Благодаря тому, что Google открыла код и сделала свою систему оркестрации открытой, она стала самой популярной. Сегодня многие рассматривают ее как лучшее и универсальное решение для работы с приложениями в облачной среде. Платформу оркестрации поддерживают такие именитые вендоры как Red Hat, IBM, CoreOS и др.

Источник

Что такое оркестровка контейнеров?

Определение оркестровки контейнеров

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

Принципы оркестровки контейнеров

Несмотря на то, что такие платформы, как Apache Mesos, Google Kubernetes и Docker Swarm имеют собственные методологии управления контейнерами, все механизмы оркестровки контейнеров позволяют пользователям контролировать запуск и остановку контейнеров, группировать их в кластеры и координировать все процессы, образующие приложение. Инструменты оркестровки контейнеров позволяют пользователям управлять развертыванием контейнеров, а также автоматизировать обновления, мониторинг состояния и процедуры аварийного переключения.

Решения гибридного облака, совместимые с контейнерами HPE

Узнайте, как модель гибридного облака может помочь выполнить поставленные цели в области ИТ и решить наиболее распространенные бизнес-задачи.

Руководство специалиста по гибридным ИТ

Успех развертывания и использования гибридной ИТ-среды зависит от эффективности рабочей модели. Получите совет по следующим вопросам:

Руководство специалиста по гибридным ИТ

crop:bounds=0,0,690,388/image.orig | @+XS and @2x => bounded-resize:width=1380

crop:bounds=0,0,1380,776/image.orig» data-src-base=»/content/dam/hpe/shared-publishing/images-norend/documents/A00006639ENW-16-9.jpg.hpetransform/» alt=»Изображение статьи «Управление гибридными ИТ»»>

Успех развертывания и использования гибридной ИТ-среды зависит от эффективности рабочей модели. Получите совет по следующим вопросам:

Источник

ИТ База знаний

Полезно

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Навигация

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

14 инструментов оркестрации контейнеров для DevOps

Отличная возможность побыть в роли дирижера

Что такое оркестрация контейнеров?

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

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Что такое оркестровка контейнеров

Управление жизненным циклом контейнера и управление самим контейнером становится чрезвычайно трудным, когда число постоянно увеличивается по мере увеличения спроса.

Это процесс управления и организации архитектуры нескольких контейнеров и микросервисов в масштабе.

К счастью, на рынке имеется много инструментов для оркестрации контейнеров. Давайте рассмотрим их!

1. Kubernetes

Что такое оркестровка контейнеров

API Kubernetes помогает установить связь между пользователями, компонентами кластера и внешними компонентами сторонних производителей. Уровень управления Kubernetes и сами узлы выполняются на группе узлов, которые вместе образуют кластер. Рабочая нагрузка приложения состоит из одного или нескольких модулей, которые выполняются на узле (узлах) Worker. Уровень управления контролирует группы контейнеров (Pod-ы) и рабочие узлы.

Такие компании, как Babylon, Booking.com, AppDirect широко используют Kubernetes.

Особенности

2. OpenShift

Redhat предлагает OpenShift Container Platform как сервис (PaaS). Он помогает автоматизировать приложения на безопасных и масштабируемых ресурсах в гибридных облачных средах. Он предоставляет платформы корпоративного уровня для создания, развертывания и управления контейнерными приложениями.

Что такое оркестровка контейнеров

Сервис построен на движке Redhat Enterprise Linux и Kubernetes. Openshift имеет различные функциональные возможности для управления кластерами через интерфейс пользователя и интерфейс командной строки. Redhat предоставляет Openshift еще в двух вариантах,

3. Nomad

Разработчики используют декларативную инфраструктуру как код (IaC) для развертывания своих приложений и определяют способ развертывания приложения. Nomad автоматически восстанавливает приложения после сбоев.

Что такое оркестровка контейнеров

Nomad подходит для оркестрации любого типа приложений (не только контейнеры). Она обеспечивает первоклассную поддержку Docker, Windows, Java, виртуальных машин и многого другого.

Особенности

4. Docker Swarm

Docker Swarm использует декларативную модель. Можно определить требуемое состояние службы, и Docker будет поддерживать это состояние. Docker Enterprise Edition интегрировал Kubernetes с Swarm. Docker теперь обеспечивает гибкость в выборе движка оркестровки. Интерфейс командной строки Docker Engine используется для создания роя Docker движков, в которых могут быть развернуты службы приложений.

Что такое оркестровка контейнеров

Для взаимодействия с кластером используются команды Docker. Машины, которые присоединяются к кластеру, называются узлами, а управление действиями кластера осуществляет менеджер Swarm.

Особенности

5. Docker Compose

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

Для настройки служб приложения можно использовать файл YAML (dockerfile). Затем с помощью команды docker-compose up можно создать и запустить все службы из конфигурации.

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

Docker Engine может быть автономным экземпляром, подготовленным с помощью Docker Machine, или целым кластером Docker Swarm.

Особенности

6. MiniKube

Minikube позволяет пользователям запускать Kubernetes локально. С помощью Minikube можно локально тестировать приложения внутри одноузлового кластера Kubernetes на персональном компьютере. В Minikube интегрирована поддержка Kubernetes Dashboard.

Что такое оркестровка контейнеров

Minikube работает под управлением последнего стабильного выпуска Kubernetes и поддерживает следующие функции:

7. Marathon

Marathon предназначен для Apache Mesos, который может организовывать как приложения, так и фреймворки.

Что такое оркестровка контейнеров

Планировщик Marathon использует ZooKeeper для поиска текущего хозяина для отправки заданий. Планировщик Marathon и мастер имеют второго мастера, чтобы обеспечить высокую доступность. Клиенты взаимодействуют с Marathon с помощью REST API.

Особенности

8. Cloudify

Его можно легко интегрировать с менеджерами контейнеров на базе Docker и самим Docker, включая следующие:

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

9. Rancher

Rancher 2.x позволяет управлять кластерами Kubernetes, работающими на указанных клиентом поставщиках.

Что такое оркестровка контейнеров

Подготовка хоста Linux

Подготовьте узел Linux с 64-разрядным Ubuntu 16.04 или 18.04 (или другим поддерживаемым дистрибутивом Linux, и не менее 4GB памяти. Установите поддерживаемую версию Docker на узел.

Запуск сервера

Чтобы установить и запустить Rancher, выполните следующую команду Docker на хосте:

Пользовательский интерфейс Rancher позволяет управлять тысячами кластеров и узлов Kubernetes.

10. Containership

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

Что такое оркестровка контейнеров

Containership построена с использованием облачных инструментов, таких как Terraform для выделения ресурсов, Prometheus для мониторинга и Calico для управления сетями и политиками. Он построен на чистом Kubernetes. Платформа Containership предлагает интуитивно понятную панель управления, а также мощный REST API для коплексной автоматизации.

Особенности

11. AZK

Что такое оркестровка контейнеров

AZK использует контейнеры вместо виртуальных машин. Контейнеры подобны виртуальным машинам с более высокой производительностью и более низким потреблением физических ресурсов.

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

12. GKE

GKE предоставляет полностью управляемое решение для оркестровки контейнерных приложений на Google Cloud Platform. Кластеры GKE созданы на основе Kubernetes. Вы можете взаимодействовать с кластерами с помощью Kubernetes CLI. Команды Kubernetes можно использовать для развертывания приложений и управления ими, выполнения задач администрирования, установки политик и мониторинга работоспособности развернутых рабочих нагрузок.

Что такое оркестровка контейнеров

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

13. AKS

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

Что такое оркестровка контейнеров

AKS бесплатен; вы платите только за узлы агентов в кластере, а не за мастер узеал. Кластер AKS можно создать на портале Azure или программно. Azure также поддерживает дополнительные функции, такие как расширенные сетевые возможности, интеграция Azure с Active Directory и мониторинг с помощью Azure Monitor.

AKS также поддерживает контейнеры Windows Server. Производительность кластера и развернутых приложений можно контролировать с помощью Azure Monitor. Журналы хранятся в рабочей области Azure Log Analytics.

AKS сертифицирован как как совместимый с Kubernetes.

14. AWS EKS

Что такое оркестровка контейнеров

AWS позволяет использовать дополнительные функции EKS, такие как Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, группы автоматического масштабирования и управление доступом (IAM), приложения мониторинга, масштабирования и балансировки нагрузки. EKS интегрируется с сеткой AWS App и предлагает собственный опыт Kubernetes. EKS работает под управлением последнего Kubernetes и сертифицирован как совместимый с Kubernetes

Заключение

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

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Источник

Что такое системы оркестрации контейнеров

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

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

Системы оркестрации контейнеров: что это и кому подходит

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

То есть программы-оркестраторы управляют жизненными циклами контейнеров микросервисных приложений. Но не только. Так как в разработке приложений все взаимосвязано, то системы оркестрации помогают еще автоматизировать различные производственные процессы, поэтому команды DevOps интегрируют их в CI/CD. Посмотрим, какие задачи берут на себя оркестраторы.

Задачи оркестраторов контейнеров

Это установка приложения и его зависимостей на сервер, включая подготовку этого сервера — установку библиотек, служб и так далее.

Это часть подготовки сервера, а именно его настройка с помощью специальных программ-планировщиков. Их применяют не только для микросервисных приложений, но и для монолитных. Инструменты управления конфигурацией обычно используют «факты», чтобы убедиться в достоверности данных о сервере: например, «убедитесь, что /etc/my.cnf содержит то-то…» или «NGinX должен работать со следующими файлами конфигурации». Оркестраторы содержат в себе такие планировщики, их не надо ставить отдельно.

Для развертывания приложения в продакшен-кластере требуется выделить вычислительные ресурсы сервера для различных процессов: это объемы памяти (RAM) и центрального процессора (CPU). Устанавливаются запрашиваемые и предельные параметры, правила при достижении контейнерами ресурсных лимитов, различные ограничения. Это важно для поддержания приложения в рабочем состоянии и сведения затрат к минимуму.

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

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

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

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

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

Несколько примеров систем оркестрации контейнеров

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

Kubernetes

Эта портативная платформа с открытым исходным кодом считается отраслевым стандартом. Поддерживает и декларативную конфигурацию объектов, и автоматизацию. Можно автоматизировать масштабирование, развертывание с помощью шаблонов и управление рабочей нагрузкой и сервисами контейнеров. Поддерживает ОС: Windows, macOS, Linux.

OpenShift Container Platform

Платформа корпоративного уровня в формате PaaS для разработки, развертывания и управления не только контейнерными, но и классическими приложениями и их компонентами в режиме самообслуживания. Позволяет автоматизировать их в физических, виртуальных и общедоступных, частных и гибридных облачных средах. Поддержка ОС: Linux.

Docker Swarm

Это «родная», базовая система кластеризации и оркестровки контейнеров Docker. Использует декларативную модель. Взаимодействие с кластером происходит через команды Docker, а управление действиями — через менеджер Swarm. Поддержка ОС: Windows, macOS, Linux.

Nomad

Легкий в поддержке, гибкий, расширяемый оркестратор для развертывания и управления контейнерными и классическими приложениями в физической или облачной среде. Поддерживает ОС: Linux, Windows, macOS, а также Docker, Java, виртуальные машины. В основном Nomad управляет деплоями и перезапускает контейнеры при обнаружении ошибок. Этого часто оказывается достаточно для небольших независимых проектов.

Rancher

Платформа для управления контейнерами в облачной или физической производственной среде с открытым исходным кодом. Включает в себя использование всех популярных на сегодняшний день фреймворков оркестровки и планирования контейнеров, в том числе Swarm, Kubernetes, Mesos. Помимо них поддерживает и собственную платформу оркестровки и планирования контейнеров — Cattle. Поддерживает ОС: Linux.

Кому пригодятся оркестраторы, а кому нет

В крупных компаниях могут одновременно разрабатываться и поддерживаться несколько масштабных приложений, каждое из которых может состоять из множества контейнеров. Им не обойтись без оркестраторов. Но есть проекты, где контейнеров мало и ими можно управлять вручную либо вообще не используются микросервисы. Таким проектам оркестраторы не нужны. Ведь системы оркестрации контейнеров нужно уметь устанавливать, настраивать и поддерживать, а значит, надо искать знающих и дорогих специалистов. Также нужно покупать и содержать резерв «железа» на случай, если нагрузка будет расти — а это весьма вероятно. Однако можно арендовать систему оркестрации как услугу в облаке с профессиональным обслуживанием кластера от провайдера.

Источник

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

Что такое оркестровка контейнеров

Примечание: мы продолжаем серию публикаций полных версий статей из журнала Хакер. Орфография и пунктуация автора сохранены.

Разворачиваем AKS

Заходим на портал Azure, нажимаем «Создать ресурс» и находим сервис под названием Kubernetes Service.

Выбираем имя и префикс DNS на свой вкус. Имя влияет на то, как вы будете обращаться к вашему кластеру, а вот префикс влияет на его FQDN адрес.

Что такое оркестровка контейнеров

Самая недорогая виртуальная машина на данный момент стоит чуть более 30 долларов в месяц.

Вторым шагом предлагается создать service principal. Service principal это своеобразный сервисный аккаунт под которым могут выполнятся какие-то определенные задачи. Плюсы в том, что права такого аккаунта можно ограничить. Кроме того, можно создать любое количество подобных аккаунтов (в то время как количество обычных аккаунтов ограничено подпиской). Найти созданные аккаунты service principal можно в Active Directory среди App Registrations

Что такое оркестровка контейнеров

RBAC (role-based access control) – это возможность ограничить или предоставить доступ к определенным ресурсам (или группам ресурсов). То есть вы сможете разграничить какие пользователи вашей подписки имеют права доступа, а какие не имеют.

Что такое оркестровка контейнеров

На данный момент процесс занимает примерно минут 20, но все может зависеть от конфигурации.

Для работы нам понадобится командная строка Azure – CLI (Command Line Interface). Ее можно установить как под Windows, так и под macOS или Linux. Лично я предпочитаю использовать Azure Cloud Shell. Это командная строка, которая запускается из загруженной в браузер страницы портала Azure. Для работы она требует созданного blob хранилища. Его стоимость составит несколько центов в месяц и потому я предпочитаю не парится по поводу установки CLI на свою машину.

Kubernetes поддерживает различные технологии контейнеров, но давайте рассмотрим самую популярную – Docker. docker.hub позволяет хранить один приватный образ докера бесплатно. Если нужно больше, то можно разместить их за деньги. Но за деньги приватный образ докера можно разместить и в Azure Container Registry. Сейчас цены стартуют от 5-ти долларов в месяц (за базовый SKU).

Я создал сервис ACR под именем myservice. Если вы тоже решите воспользоваться ACR, то создав сервис вам необходимо будет получить его ключи.

Что такое оркестровка контейнеров

Затем станет возможным залогиниться выполнив команду:

Ввести взятые с портала имя пользователя (myservice) и пароль (PJSeyO9=lCMRDI7dGkz68wjhFGRGxSY3)

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

Секреты, секреты… Предоставляем доступ к образу и сохраняем настройки.

При работе с развернутым AKS необходимо получить его креды. Иначе команды kubectl не будут выполняться. Для получения доступа к AKS выполняется следующая команда:

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

Для создания файла секрета необходимо выполнить команду такого вида:

Если ваш образ находится в репозитории докера, то значением будет https://index.docker.io/v1/

То есть чтобы создать секрет для контейнера в моем случае я выполнил:

Посмотреть содержимое созданного файла секрета теперь можно с помощью команды:

Если вы используете AKS, то можно не создавать файл секрета, а предоставить доступ сервису AKS к сервису ACR иным способом — выполнив особый скрипт. Взять его можно со следующей странички:

Можно просто модифицировать значения переменных AKS* и ACR*, затем скопировать скрипт и вставить его в Azure CLI или Cloud Shell.

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

Для того чтобы создать файл с настройками из командной строки нам сначала необходимо рассмотреть команды vi.

создаст файл, если он отсутствует или откроет существующий

Для того чтобы сохранить введенные изменения нажмите ESC и после этого ZZ

Для того чтобы просто выйти без сохранения ESC и после :q!

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

Итак, через Azure Cloud Shell создаете файл с произвольным названием (допустим, appsettings.json) и необходимым для вас содержимым. Допустим таким:

И после выполняете команду:

Эта команда создаст секрет с настройками под именем secret-appsettings
Узнать на какой путь заменить /home/youraccount вы можете с помощью команды pwd

Создание deployment

Deployments предназначены для stateless сервисов. Они описывают то, как Pods и ReplicaSets будут созданы и как они будут обновляться. Pod – это группа контейнеров (или же один контейнер), которые работают в одном окружении. Предназначением ReplicaSet является управление тем, что указанное количество pod будет запущено и будет постоянно работать.
Исходя из созданного ранее я создаю файл deploy.yaml который создаст 3 пода. Файл содержит следующий код (напоминаю, что пробелы в yaml очень важны):

Рассмотрим код. В начале описывается количество реплик и стратегия обновления. Затем деплойменту задается имя (myapp) и указывается ссылка на образ контейнера. Прописываются порты. 80 – это стандартный порт для http. Далее идут ASP.NET Core-овские настройки environment-а. Затем монтируются креды приватного образа докера и секретные настройки приложения, которые мы не так давно создавали.

Этот кусок отвечает за процесс обновления. maxSurge – количество подов создаваемых сверх существующих при обновлении (в штуках или процентах). maxUnavailable – максимальное количество подов, которые могут становится недоступными во время процесса обновления.
deployment можно создать с помощью команды:

Знакомьтесь — Ingress

Для того чтобы предоставить доступ к сервисам кластера и организовать балансировку нагрузки используется сервис под названием ingress. Довольно популярным решением является ingress созданный на основании nginx. Проще всего его установить используя пакетный менеджер Kubernetes, который называется helm. Плюсом Azure Cloud Shell является то, что helm уже в нее установлен. Что остается сделать для установки nginx-ingress. Ввести:

Подождать немного и выполнить:

Создание SSL сертификатов с помощью LetsEncrypt

Так как SSL сертификат привязывается к какому-то доменному имени, то зададим нашему ресурсу DNS имя.

Выполним следующую команду и возьмем внешний (external) IP

Подставим IP и придуманное нами имя для субдомена в следующий скрипт

Этот скрипт просто скопируем, вставим в командную строку и таким образом выполним. В качестве имени для субдомена я задал очень «оригинальное» имя — myservice-ingress

Установим менеджер сертификатов аналогичным способом скопировав и вставив в командную строку следующий скрипт. Здесь даже ничего особо менять не нужно.

Если бы у нас кластер был с RBAC, то скрипт был бы другим.

Если файл сертификата имеется в наличии, то можно его добавить как-то так:

Но так как у нас сертификата подписанного CA нет, то придется немного потанцевать с бубном. Мы создадим CA с помощью бесплатного сервиса под названием LetsEncrypt. LetsEncrypt это Certificate Authority, который выдает сертификаты совершенно бесплатно. Такая вот альтруистическая организация, целью которой является безопасный интернет.

Итак, создаем файл cluster-issuer.yaml Он описывает организацию выдавшую сертификат.

Вам необходимо только заменить e-mail на ваш адрес и можно выполнять:

Затем создаем файл сертификата certificate.yaml указав имя созданного ClusterIssuer и домен для которого предназначен сертификат — myservice-ingress.westeurope.cloudapp.azure.com

Создание сервиса и Ingress

В Kubernetes можно создавать сервисы четырех различных типов.
Сервисом по умолчанию является ClusterIP. Доступ к этому сервису возможен только из кластера по внутреннему IP.

NodePort автоматически создает сервис ClusterIP. Доступ к NodePort возможен извне по следующему маршруту :

Балансировщик нагрузки LoadBalancer предоставляет доступ к сервису извне, автоматически создавая сервисы NodePort и ClusterIP.

ExternalName связывает сервис со внешним именем.

Нам хватит базового сервиса:

Значением selector мы указываем имя нашего деплоймента.
Остается создать сервис

И в качестве заключительного этапа создаем ingress с которым я вас уже знакомил чуть выше в этой статье. В yaml мы укажем имя cluster-issuer и сертификата. Их мы создавали ранее.

Через какое-то время после создания ingress с помощью все той же команды kubectl apply, наш микросервис должен стать доступным по адресу https:// myservice-ingress.westeurope.cloudapp.azure.com. Кликнув на замочек в адресной строке браузера рядом с https можно убедиться, что сертификат валидный и выдан CA.

Что такое оркестровка контейнеров

Напоминаем, что это полная версия статьи из журнала Хакер. Ее автор — Алексей Соммер.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *