Поиск по сайту:

CloudFoundry против Kubernetes: какую облачную платформу выбрать?


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

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

Определение платформ

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

CloudFoundry — это полноценная платформа как услуга (PaaS). Он обеспечивает полностью автоматизированную разработку, основанную на модели buildpack. Когда вы используете интерфейс командной строки CloudFoundry для cf push (развертывания) своего приложения, служба определяет языки программирования, платформы и вспомогательные технологии, которые вы используете. Он автоматически подготавливает правильную облачную инфраструктуру для обслуживания вашего проекта.

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

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

Преимущества CloudFoundry

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

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

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

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

Преимущества Кубернета

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

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

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

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

Модели развертывания

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

CloudFoundry

С помощью CloudFoundry вы устанавливаете интерфейс командной строки cf, переходите в свой рабочий каталог и выполняете следующую команду:

cf push my-app

Это создаст и развернет ваш проект с использованием экземпляра CloudFoundry, в котором аутентифицирован ваш CLI. Приложение будет называться my-app. CloudFoundry определит тип вашего исходного кода, приобретет соответствующие сборки, соберет ваше приложение и запустит его в облачную инфраструктуру.

Развертывания настраиваются с помощью простого файла YAML с именем manifest.yml:

applications:
  - name: my-app
    instances: 4
    env:
      EXAMPLE_VARIABLE: example

Запуск cf push для каталога с этим манифестом развернет четыре реплики вашего приложения. Переменная EXAMPLE_VARIABLE будет доступна из исходного кода.

Кубернетес

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

docker build -t my-app:latest .

Получив образ, вы можете написать набор манифестов Kubernetes, описывающих объекты, которые нужно создать в вашем кластере:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 4
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app-container
          image: my-app:latest
          env:
            - name: EXAMPLE_VARIABLE
              value: "example"

Этот манифест создает развертывание образа контейнера my-app:latest, который будет запускать четыре реплики одновременно. Он также устанавливает переменную среды EXAMPLE_VARIABLE, делая ее доступной в запущенных контейнерах.

Теперь вы можете использовать Kubectl, интерфейс командной строки Kubernetes, для запуска экземпляров контейнера в подключенном кластере:

kubectl apply -f manifest.yml

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

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

Использование обеих платформ

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

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

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

Заключение

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

CloudFoundry — отличный способ быстро развернуть любое приложение, не задумываясь о компонентах инфраструктуры. Большинство приложений «просто работают» после одного нажатия cf, что значительно сокращает время первоначальной настройки и время обучения по сравнению с Kubernetes. Вам не нужно думать о поддержании инфраструктуры с течением времени или обновлении частей вашего стека: если ваш исходный код будет успешно собран, его можно будет развернуть в CloudFoundry.

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

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




Все права защищены. © Linux-Console.net • 2019-2024