Terraform-проект, который разворачивает в Yandex Cloud облачную функцию. Эта функция вызывается по расписанию и автоматически копирует пользовательские метки (labels) node-групп кластеров Managed Kubernetes (mk8s) на связанные ресурсы:
- виртуальные машины, входящие в соответствующие группы узлов кластера.
- загрузочные диски этих виртуальных машин.
- node_labels группы узлов кластера k8s (и далее автоматически на сами ноды кластера k8s).
node_labels — пользовательские метки, назначаемые на группы узлов Managed Service for Kubernetes в Yandex Cloud. Подробнее об управлении метками node_labels можно узнать в документации. node_labels используются в проекте для автоматического добавления меток на ноды кластера k8s.
- Создаёт сервисный аккаунт с необходимыми правами (IAM роли) для работы с ресурсами Yandex Cloud.
- Загружает и развёртывает функцию на базе кода из папки
code/
. - Настраивает триггер по расписанию (по умолчанию - ежеминутный запуск). Для запуска функции, например, раз в 2 минуты - меняем атрибут
cron_expression
на0/2 * * * ? *
и т.д. - Генерирует уникальные имена для ресурсов с помощью случайной строки, чтобы избежать конфликтов.
- Установите YC CLI
- Добавьте переменные окружения для аутентификации terraform в Yandex Cloud:
export YC_TOKEN=$(yc iam create-token)
export YC_CLOUD_ID=$(yc config get cloud-id)
export YC_FOLDER_ID=$(yc config get folder-id)
- Клонируйте репозиторий и перейдите в папку проекта:
git clone https://github.com/yandex-cloud-examples/yc-k8s-labels-duplicator cd yc-k8s-labels-duplicator
- Настройте переменные с помощью файла
terraform.tfvars
или передайте необходимые переменные вручную:
folder_id = "your-folder-id"
- Инициализируйте Terraform:
terraform init
- Проверьте план изменений:
terraform plan
- Примените конфигурацию:
terraform apply