Кодируйте ваш облако и Kubernetes с помощью Crossplane и IaC

Поскольку организации внедряют Kubernetes для облачных приложений, эффективное управление инфраструктурой становится вызовом. Традиционные инструменты Infrastructure as Code (IaC), такие как Terraform, Pulumi и другие, предоставляют декларативные конфигурации, но не имеют плавной интеграции в рабочие процессы Kubernetes-среды.

Crossplane эффективно сокращает разрыв между Kubernetes и облачной инфраструктурой в данной ситуации. В этом блоге мы исследуем, как Crossplane обеспечивает IaC для Kubernetes и за его пределами.

Что такое Crossplane?

Crossplane – это открытый аддон Kubernetes, который позволяет вам создавать и управлять облачной инфраструктурой с использованием определений кастомных ресурсов (CRDs) Kubernetes и API Kubernetes. В отличие от традиционных инструментов IaC, требующих внешнего выполнения, например, запуска скриптов Terraform внешне, Crossplane встраивает управление инфраструктурой в Kubernetes. Это делает его действительно декларативным и поддерживающим GitOps.

Применение: Terraform против Crossplane

Когда использовать Terraform?

  • Лучше всего для управления инфраструктурой за пределами Kubernetes
  • Идеально подходит для традиционных многоплатформенных развертываний и виртуальных машин
  • Сильная экосистема с обширными модулями и провайдерами
  • Хорошо работает с инструментами типа Ansible, Packer и Vault для автоматизации

Когда использовать Crossplane?

  • Лучший выбор для среды, сосредоточенной на Kubernetes
  • Идеально подходит для рабочих процессов GitOps (ArgoCD, Flux)
  • Позволяет самостоятельное предоставление услуг с помощью Kubernetes CRD
  • Хорошо подходит для управления многоплатформенным контролем Kubernetes (управление облачными службами через API K8s)

Начало работы с Crossplane

Для этого примера мы будем использовать minikube. Но те же шаги можно применить к любому Kubernetes.

Шаг 1: Развертывание MySQL в Kubernetes

1. Разверните MySQL как Развертывание с Службой для настройки с помощью Crossplane. Вы также можете использовать MySQL, развернутый из другого места.

2. Определите mysql-deployment.yaml, который создает секрет, развертывание и службу, необходимые для запуска MySQL.

YAML

 

3. Примените YAML с помощью команды kubectl apply -f mysql-deployment.yaml.

4. Проверьте, что поды запущены с помощью команды kubectl get pods.

5. Проверьте подключение к MySQL, запустив временный SQL-под для проверки развертывания MySQL. Создайте клиент с помощью команды kubectl run mysql-client --image=mysql:8.0 -it --rm -- bash.

6. Подключитесь к MySQL внутри пода, используя команду mysql -h mysql-service.default.svc.cluster.local -uroot -ppassword.

Шаг 2:Установка Crossplane на Kubernetes

1. Установите Crossplane с помощью Helm:

Shell

 

Примечание: Crossplane требуется несколько минут для запуска.

2. Проверьте установку Crossplane с помощью команды kubectl get pods -n crossplane-system.

Шаг 3: Установите поставщика Crossplane для SQL

1. Определите поставщика MySQL, используя приведенное ниже содержимое YAML.

YAML

 

2. Создайте поставщика с помощью команды kubectl apply -f provider.yaml.

3. Проверьте поставщика с помощью следующих команд: kubectl get pods -n crossplane-system и kubectl get providers.

Примечание: Поставщики SQL требуют несколько минут для запуска.

Шаг 4: Настройка поставщика MySQL Crossplane

Конфигурация поставщика сообщает Crossplane, как аутентифицироваться в MySQL. Определите секреты, которые должны быть созданы для использования поставщика. Обновите stringData соответственно в приведенном ниже YAML. Примените YAML с помощью kubectl apply -f mysql-secret.yaml.

YAML

 

Примените приведенную ниже конфигурацию поставщика для Crossplane, которая использует указанные выше секреты. Примените ее с помощью команды kubectl apply -f providerconfig.yaml.

YAML

 

Проверьте создание конфигурации поставщика с помощью команд — kubectl get providerconfigs.mysql.sql.crossplane.io и kubectl get crds | grep providerconfig.

Шаг 5. Создание базы данных MySQL с использованием Crossplane

Теперь используйте Crossplane для создания новой базы данных. Используйте нижеприведенный YAML и примените его с помощью kubectl apply -f mysqlinstance.yaml.

YAML

 

Шаг 6: Проверьте создание базы данных

Проверьте создание базы данных с помощью команды kubectl get database.mysql.sql.crossplane.io/my-database.

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

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

Могут ли Terraform и Crossplane работать вместе?

Терраформ и Crossplane могут использоваться вместе для многих сценариев.

Сценарий 1

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

  • Терраформ создает кластер Kubernetes в любом облачном провайдере.
  • Crossplane управляет облачными службами (базы данных, хранилище и сети) с использованием CRD Kubernetes.

Сценарий 2

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

  • У Terraform есть обширная экосистема поставщиков, поддерживающих множество облачных сервисов, которые Crossplane может еще не иметь собственных поставщиков.
  • Когда организация уже использует Terraform для управления инфраструктурой, нет необходимости переписывать все в CRD Crossplane.
  • Crossplane поддерживает управление мультиоблаками, но его собственные поставщики могут не охватывать каждую интеграцию с оборудованием на месте или SaaS.
  • Для организаций, стремящихся постепенно перейти от Terraform к Crossplane, использование поставщиков Terraform в рамках Crossplane может выступать в качестве гибридного решения перед полной миграцией.
  • Запуск Terraform в рамках Crossplane вводит Terraform в декларативную модель GitOps Kubernetes.

Шаги по созданию базы данных IBM Cloud Cloudant с использованием Crossplane

Шаг 1. Определите поставщика Terraform.

YAML

 

Шаг 2. Настройте поставщика.

YAML

 

Шаг 3. Предоставьте базу данных Cloudant в IBM Cloud, используя сценарии Terraform в рамках Crossplane.

YAML

 

Это предоставляет базу данных Cloudant с именем crossplanecloudant в IBM Cloud.

Как Crossplane вписывается в инженерию платформы

Инженерия платформ фокусируется на построении и поддержке внутренних платформ разработчика (IDP), которые упрощают управление инфраструктурой и развертывание приложений. Кроссплейн играет значительную роль в этом, позволяя использовать подход, ориентированный на Kubernetes.

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

Заключение

Кроссплейн изменяет способ управления облачной инфраструктурой, внедряя IaC в экосистему Kubernetes. API Kubernetes позволяют по-настоящему декларативный и управляемый GitOps подход к предоставлению и управлению облачными ресурсами. Если вы уже используете Kubernetes и хотите модернизировать свою стратегию IaC, то Кроссплейн определенно стоит изучить.

Source:
https://dzone.com/articles/codify-cloud-kubernetes-crossplane-iac