Установка Crossplane с поддержкой Yandex Cloud
Crossplane
Установить Crossplane можно следующими способами:
- В консоли управления с помощью Yandex Cloud Marketplace
- C помощью Helm-чарта из репозитория Cloud Marketplace
- С помощью Helm-чарта из репозитория Crossplane
Перед началом работы
-
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
. -
Создайте сервисный аккаунт с ролью
admin
на каталог, в котором вы хотите управлять ресурсами с помощью Crossplane. -
Создайте авторизованный ключ для сервисного аккаунта и сохраните его в файл:
yc iam key create \ --service-account-name <имя_сервисного_аккаунта> \ --output key.json
-
Убедитесь, что группы безопасности для кластера Managed Service for Kubernetes и его групп узлов настроены корректно. Если отсутствует какое-либо из правил — добавьте его.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
Установка в консоли управления с помощью Cloud Marketplace
- Перейдите на страницу каталога
и выберите сервис Managed Service for Kubernetes. - Нажмите на имя нужного кластера Managed Service for Kubernetes и выберите вкладку
Marketplace. - В разделе Доступные для установки приложения выберите Crossplane с поддержкой Yandex Cloud и нажмите кнопку Перейти к установке.
- Задайте настройки приложения:
- Пространство имен — выберите пространство имен для Crossplane или создайте новое.
- Название приложения — укажите название приложения.
- Ключ сервисного аккаунта — вставьте содержимое файла авторизованного ключа сервисного аккаунта, полученного ранее, или создайте новый.
- Нажмите кнопку Установить.
- Дождитесь перехода приложения в статус
Deployed
.
При установке из Cloud Marketplace вместе с Crossplane в кластере будет установлен и настроен провайдер
Вы можете изменить настройки провайдера, например указать, в каком облаке и каком каталоге будут по умолчанию создаваться ресурсы.
Подробнее о ресурсах Yandex Cloud, которые вы можете создать с помощью Crossplane, см. в подразделе Получение информации о ресурсах.
Установка с помощью Helm-чарта из репозитория Cloud Marketplace
-
Установите менеджер пакетов Helm
версии не ниже 3.8.0. -
Установите kubectl
и настройте его на работу с созданным кластером. -
Для установки Helm-чарта
с Crossplane выполните команду:helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/crossplane/crossplane \ --version 1.15.1 \ --untar && \ helm install \ --namespace <пространство_имен> \ --create-namespace \ --set-file providerJetYc.creds=key.json \ crossplane ./crossplane/
Примечание
Если вы используете версию Helm ниже 3.8.0, добавьте в начало команды строку
export HELM_EXPERIMENTAL_OCI=1 && \
, чтобы включить поддержку Open Container Initiative (OCI) в клиенте Helm. -
Убедитесь, что все поды crossplane перешли в состояние
Running
:kubectl get pods -A | grep -E "crossplane|provider-jet-yc"
При установке из Cloud Marketplace вместе с Crossplane в кластере будет установлен и настроен провайдер
Вы можете изменить настройки провайдера, например указать, в каком облаке и каком каталоге будут по умолчанию создаваться ресурсы.
Подробнее о ресурсах Yandex Cloud, которые вы можете создать с помощью Crossplane, см. в подразделе Получение информации о ресурсах.
Установка с помощью Helm-чарта из репозитория Crossplane
-
Установите менеджер пакетов Helm
версии не ниже 3.8.0. -
Установите kubectl
и настройте его на работу с созданным кластером. -
Создайте пространство имен для Crossplane:
kubectl create namespace <пространство_имен>
-
Добавьте GitHub-репозиторий Helm:
helm repo add crossplane-stable https://charts.crossplane.io/stable && \ helm repo update
-
Установите Crossplane:
helm install crossplane --namespace <пространство_имен> crossplane-stable/crossplane
-
Убедитесь, что Crossplane установлен и работает:
helm list --namespace <пространство_имен> && \ kubectl get all --namespace <пространство_имен>
-
Установите Crossplane CLI:
curl --silent --location https://raw.githubusercontent.com/crossplane/crossplane/master/install.sh | sh && \ sudo mv kubectl-crossplane $(dirname $(which kubectl))
-
Установите провайдер:
crossplane xpkg install provider xpkg.upbound.io/yandexcloud/crossplane-provider-yc:v0.5.1
Актуальная версия провайдера доступна в GitHub-репозитории
. -
Создайте секрет
yc-creds
:kubectl create secret generic yc-creds \ --namespace "<пространство_имен>" \ --from-file=credentials=<путь_к_файлу_key.json>
-
Убедитесь, что провайдер Yandex Cloud
установлен:kubectl get provider
-
Создайте манифест с настройками провайдера Yandex Cloud для Crossplane
providerconfig.yaml
:apiVersion: yandex-cloud.jet.crossplane.io/v1beta1 kind: ProviderConfig metadata: name: default spec: credentials: cloudId: <идентификатор_облака> folderId: <идентификатор_каталога> source: Secret secretRef: name: yc-creds namespace: <пространство_имен> key: credentials
-
Примените настройки провайдера:
kubectl apply -f providerconfig.yaml
Настройка провайдера
-
Чтобы изменить настройки провайдера Yandex Cloud для Crossplane, например указать, в каком облаке и каком каталоге будут по умолчанию создаваться ресурсы, выполните команду:
kubectl edit ProviderConfig/default
-
Отредактируйте параметры, которые вы хотите изменить и сохраните изменения.
Получение информации о ресурсах
-
Посмотрите, какие ресурсы Yandex Cloud можно создать с помощью Crossplane:
kubectl get crd | grep yandex-cloud.jet.crossplane.io
-
Посмотрите параметры конкретного ресурса, которые можно задать с помощью Crossplane:
kubectl describe crd <имя_ресурса>
Например, запросите параметры для создания виртуальной машины Yandex Compute Cloud:
kubectl describe crd instances.compute.yandex-cloud.jet.crossplane.io
Примеры конфигурации ресурсов Yandex Cloud см. в репозитории провайдера на GitHub
.