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