yc
32 commands
32 shown
Сменить активный каталог
Задать folder-id по умолчанию для активного профиля; проверить через config list
yc config set folder-id <id> && yc config list
Создать именованный профиль
Изолировать креды по средам; использовать yc --profile prod или YC_PROFILE в CI
yc config profile create prod && yc config profile activate prod
Получить временный IAM-токен
IAM-токен (TTL ~12 ч) из OAuth; передать в API/Terraform через переменную YC_TOKEN
export YC_TOKEN=$(yc iam create-token)
Сервисный аккаунт для CI
Создать сервисный аккаунт для пайплайнов; роли выдавать отдельно по минимуму прав
yc iam service-account create --name sa-ci --description 'CI deployer'
Авторизованный ключ SA
JSON-ключ для неинтерактивной аутентификации; note: ротировать и хранить в vault
yc iam key create --service-account-name sa-ci --output key.json
Выдать роль сервисному аккаунту
Привязать роль на уровне каталога; лучше узкие роли вместо editor
yc resource-manager folder add-access-binding <id> --role editor --service-account-name sa-ci
Записать kubeconfig кластера
Добавить внешний endpoint в kubeconfig; без --external — внутренний адрес VPC
yc managed-kubernetes cluster get-credentials <name> --external --force
Список кластеров в JSON
Свести имя/статус/id кластеров в таблицу для скриптов и аудита
yc managed-kubernetes cluster list --format json | jq -r '.[]|[.name,.status,.id]|@tsv'
Создать автоскейл node-группу
Группа узлов с автоскейлером и границами min/max в одной зоне
yc managed-kubernetes node-group create --cluster-name <name> --name ng-1 --platform standard-v3 --auto-scale min=1,max=5,initial=2 --location zone=ru-central1-a
Создать подсеть VPC
Зональная подсеть в сети; CIDR не должен пересекаться с соседними
yc vpc subnet create --name sub-a --network-name net-1 --range 10.0.0.0/24 --zone ru-central1-a
Заменить правила security group
Добавить stateful-правило SG; note: правила работают как allow-list
yc vpc security-group update-rules <name> --add-rule 'direction=ingress,port=443,protocol=tcp,v4-cidrs=[0.0.0.0/0]'
Осмотреть сетевой балансировщик
Вывести слушатели и target-группы NLB для отладки маршрутизации
yc load-balancer network-load-balancer get <name> --format json | jq '.listeners,.attached_target_groups'
Список L7-балансировщиков
Перечислить ALB и их статус в каталоге
yc application-load-balancer load-balancer list --format json | jq -r '.[]|[.name,.status]|@tsv'
Создать публичную DNS-зону
Публичная зона; обязателен завершающий . в FQDN, далее делегировать NS у регистратора
yc dns zone create --name myzone --zone example.com. --public-visibility
Добавить A-запись DNS
Добавить apex A-запись с TTL 600 c; @ — корень зоны
yc dns zone add-records --name myzone --record '@ 600 A 1.2.3.4'
Создать ВМ с cloud-init
Поднять ВМ с публичным NAT-IP и инициализацией через cloud-init user-data
yc compute instance create --name web-1 --zone ru-central1-a --network-interface subnet-name=sub-a,nat-ip-version=ipv4 --create-boot-disk image-family=ubuntu-2204-lts,size=20 --metadata-from-file user-data=cloud-init.yaml
Создать кластер Managed PostgreSQL 16
Развернуть отказоустойчивый кластер PG16; note: для прода берите preset s3, а не burstable класс b
yc managed-postgresql cluster create --name <name> --environment production --postgresql-version 16 --network-name <name> --host zone-id=ru-central1-a,subnet-name=<name> --resource-preset s3-c2-m8 --disk-size 50 --disk-type network-ssd
Список хостов кластера PostgreSQL
Показать FQDN хостов с ролью MASTER/REPLICA и состоянием для маршрутизации подключений
yc managed-postgresql cluster list-hosts --cluster-name <name> --format json | jq -r '.[] | "\(.name)\t\(.role)\t\(.health)"'
Создать базу и пользователя PostgreSQL
Создать пользователя через stdin и БД с этим владельцем; note: password-stdin не светит пароль в истории shell
yc managed-postgresql user create <name> --cluster-name <name> --password-stdin && yc managed-postgresql database create <name> --cluster-name <name> --owner <name>
Подключение к Managed PG с TLS verify-full
Подключение через PgBouncer 6432 с YC CA; note: verify-full требует root.crt для проверки хоста
curl -s https://storage.yandexcloud.net/cloud-certs/CA.pem -o ~/.postgresql/root.crt && psql "host=<host> port=6432 sslmode=verify-full dbname=<name> user=<name> target_session_attrs=read-write"
Список кластеров Managed Redis
Отфильтровать только нездоровые кластеры Redis для быстрого триажа парка
yc managed-redis cluster list --format json | jq -r '.[] | select(.health!="ALIVE") | "\(.name)\t\(.status)\t\(.health)"'
Список кластеров Managed ClickHouse с версиями
Аудит версий и пресетов кластеров ClickHouse для поиска кандидатов на обновление
yc managed-clickhouse cluster list --format json | jq -r '.[] | "\(.name)\t\(.config.version)\t\(.resources.resourcePresetId)"'
Создать статический ключ доступа к Object Storage
Выпустить S3-совместимый статический ключ для SA; note: secret показывается один раз, сохраните сразу
yc iam access-key create --service-account-name <name> --format json | jq -r '"AWS_ACCESS_KEY_ID=\(.access_key.key_id)\nAWS_SECRET_ACCESS_KEY=\(.secret)"'
Работа с aws s3 в Yandex Object Storage
Синхронизировать в YC bucket через S3 API; modern: --delete зеркалит и удаляет устаревшие объекты
aws --endpoint-url=https://storage.yandexcloud.net s3 sync ./dist s3://<name>/<id>/ --delete --exclude '*.map'
Список бакетов Object Storage
Вывести бакеты с лимитом размера в GiB и классом хранения за один проход
yc storage bucket list --format json | jq -r '.[] | "\(.name)\t\(.max_size/1073741824)GiB\t\(.default_storage_class)"'
Lifecycle S3 для удаления старых объектов
Автоудаление объектов с префиксом через 30 дней для снижения стоимости хранения
aws --endpoint-url=https://storage.yandexcloud.net s3api put-bucket-lifecycle-configuration --bucket <name> --lifecycle-configuration '{"Rules":[{"ID":"expire-logs","Status":"Enabled","Filter":{"Prefix":"logs/"},"Expiration":{"Days":30}}]}'
Создать registry и настроить Docker
Создать CR и подключить хелпер учёток docker; modern: yc как credential helper, без docker login
yc container registry create --name <name> && yc container registry configure-docker
Push образа в Container Registry
Тег с подставленным id реестра и push; не хардкодит cr.yandex/<reg-id>
docker tag <name>:<id> cr.yandex/$(yc container registry get --name <name> --format json | jq -r .id)/<name>:<id> && docker push cr.yandex/$(yc container registry get --name <name> --format json | jq -r .id)/<name>:<id>
Список образов реестра по репозиториям
Перечислить все теги по всем репозиториям; полезно перед чисткой реестра (GC)
yc container repository list --format json | jq -r '.[].name' | while read r; do yc container image list --repository-name "$r" --format json | jq -r '.[] | "\(.name):\(.tags[]? // "<none>")"'; done
Деплой ревизии serverless-контейнера
Выкатить новую ревизию из образа CR; note: concurrency ограничивает число запросов на инстанс
yc serverless container create --name <name>; yc serverless container revision deploy --container-name <name> --image cr.yandex/<id>/<name>:<id> --cores 1 --memory 512M --service-account-id <id> --concurrency 4
Чтение логов из группы за последний час
Читать YC Cloud Logging только ERROR/WARN; modern: --since принимает относительные окна 1h/30m
yc logging read --group-name <name> --since 1h --levels ERROR,WARN --format json | jq -r '.[] | "\(.timestamp) \(.level) \(.message)"'
Выпуск Let's Encrypt через Certificate Manager
Запросить wildcard-сертификат и проверить статус; note: для выпуска нужна DNS/HTTP-валидация
yc certificate-manager certificate request --name <name> --domains <host>,*.<host> && yc certificate-manager certificate list --format json | jq -r '.[] | "\(.name)\t\(.status)\t\(.not_after)"'
no commands match