Yandex Cloud
May 22, 2022

Полезные нюансы облака YC

Подключение SA к ресурсу в другом фолдере.

Это можно сделать с помощью API. Пример на добавление сервисного ака к инстансу в другом фолдере:
yc compute instance update instace_id --service-account-id serv_acc_id
ВМ при этом отключать необязательно.
Проверить корректность настроек можно так:
yc compute instance get instace_id --format=json | jq -r '.service_account_id' - должен быть выведен id SA.

Отвязать публичный статический IP адрес от ВМ.

Для того чтобы отвязать публичный адрес от ВМ необходимо перейти в Compute Cloud --> your_instance --> Попадаем на страницу с характеристиками ВМ и статусами --> Сеть. В правом верхнем углу формы три точки (...) --> Отвязать публичный IP-адрес --> Удалить.

Обращаю внимание, что он никуда не денется. Потому что он статический. Только на странице Virtual Private Cloud --> IP-адреса поменяется его статус. Поле "Ресурс" будет пустым. Далее этот адрес можно привязать к другой ВМ при необходимости. Принцип примерно тот же, что был описан выше. Только вместо "Отвязать публичный IP-адрес" будет "Добавить публичный IP-адрес".

Если же адрес используется динамический, то он будет утерян. Будет пернесён в пул облака.

Выполнение yc init в ОС без GUI.

Для авторизации с машины без графического интерфейса используйте инструкцию:

  1. Создаем исполняемый файл /usr/local/bin/xdg-open
    $ cat /usr/local/bin/xdg-open
    #!/bin/sh
    echo $* > /dev/tty

$ ls -l /usr/local/bin/xdg-open
-rwxr-xr-x 1 root root 29 Oct 16 12:43 /usr/local/bin/xdg-open

  1. Запускаем yc init --federation-id
    $ yc init --federation-id
    Welcome! This command will take you through the configuration process.

You are going to be authenticated via federation-id 'yc-federation'.
Your federation authentication web site will be opened.
After your successful authentication, you will be redirected to 'https://console.cloud.yandex.ru'.

Press 'enter' to continue...

  1. Жмём Enter и видим URL:
    https://console.cloud.yandex.ru/federations/federation_id?redirectUrl=http%3A%2F%2F127.0.0.1%3A39229

Тут жмем C и вводим волшебную команду, которая форвардит локальный порт из URL на соответствующий порт, но уже на сервере.
Порт 39229 тут взят из URL, он будет каждый раз разный:
ssh> -L 39229:127.0.0.1:39229
Forwarding port.

  1. Открываем URL в локальном браузере, аутентифицируемся.
  2. Видим, что в окне SSH все работает:

Please select cloud to use:
[1] cloud (id = <cloud_id>)
...

Альтернативой будет настройка от имени сервисного аккаунта: https://cloud.yandex.ru/docs/cli/operations/authentication/service-account

Шифрование бакета с помощью s3cmd

  1. Создать ключ в KMS
  2. В бакете включить шифрование и указать созданный ключ
  3. Команда s3cmd put test.file s3:*bucket_name/ --server-side-encryption-kms-id=id_kms --server-side-encryption

Загружает файл в бакет и шифрует его на стороне сервера.
Факт шифрования можно проверить командой:
s3cmd info s3:*bucket_name/test.file
получим "SSE: aws:kms"

Удалить кластер с защитой от удаления

  1. Выключить кластер;
  2. Нажать редактировать;
  3. Снять защиту от удаления, после чего сохранить конфигурацию кластера;
  4. Удалить кластер.

Шифрование бакета и общий доступ к его ресурсам:
Использовать шифрование на стороне сервиса и публичный доступ одновременно не получиться.