Yandex Cloud Connectors это инструмент, позволяющий интегрировать взаимодействие с ресурсами Yandex Cloud в процесс работы с kubernetes, позволяя отказаться от использования дополнительных инструментов и расширяя возможности по автоматизации процессов в кластере.
Yandex Cloud Connectors используют встроенный в Kubernetes control-loop, сохраняя желаемые состояния облачных ресурсов как объекты в k8s api.
- Настроенный кластер Kubernetes - mk8s в Яндекс Облаке.
- Установленный Helm. Для установки из реестра необходима версия 3.7+
Для установки Yandex Cloud Connectors из реестра:
export HELM_EXPERIMENTAL_OCI=1
export HELM_REGISTRY_CONFIG="$HOME/.docker/config.json"
helm install yandex-cloud-connectors oci://cr.yandex/yc/cloud-connectors/chart/yandex-cloud-connectors --version <version>
список доступных версий можно найти здесь: https://github.com/yandex-cloud/k8s-cloud-connectors/tags
Для установки Yandex Cloud Connectors из репозитория (latest версия образов):
helm install yandex-cloud-connectors helm/yandex-cloud-connectors
Для этого примера помимо вышеуказанных зависимостей необходимо установить следующие командные утилиты:
Более развернутый пример, демонстрирующий больше возможностей YCC, находится в этом репозитории, в папке "example".
Покажем пример работы YCC на Yandex Container Registry. Для начала нам надо дать права на работу с Container Registry сервисному аккаунту, под управлением которого работают ноды в нашем кластере:
FOLDER_ID=<your_folder_id>
CLUSTER_ID=<your_cluster_id>
SERVICE_ACCOUNT_ID=$(yc k8s cluster get "$CLUSTER_ID" --format json | jq -r '.node_service_account_id')
yc resource-manager folder add-access-binding --id "$FOLDER_ID" --role container-registry.admin --service-account-id "$SERVICE_ACCOUNT_ID"
Теперь у нод кластера есть права администрировать Yandex Container Registry в облаке. Теперь установим контроллер в кластер, добавляем в кластер все необходимые сущности и контроллер:
helm install yandex-cloud-connectors helm/yandex-cloud-connectors
Теперь попробуем создать какой-нибудь облачный ресурс, например, Yandex Container Registry:
FOLDER_ID="$FOLDER_ID" envsubst < ./examples/test-registry.yaml.tmpl | kubectl apply -f -
Можно зайти в UI облака и посмотреть, что там создался новый Container Registry. Аналогичную проверку можно выполнить
с помощью консольной команды yc container registry list
. Теперь удалим Registry из кластера:
FOLDER_ID="$FOLDER_ID" envsubst < ./examples/test-registry.yaml.tmpl | kubectl delete -f -
Повторно сходив в веб-интерфейс или исполнив команду yc container registry list
можно увидеть, что реестр удалён.
Чтобы удалить YCC из кластера, достаточно выполнить команду:
helm uninstall yandex-cloud-connectors