Подключение к узлу через OS Login
OS Login используется вместо SSH-ключей для доступа к виртуальным машинам Yandex Cloud через SSH. С помощью OS Login вы можете подключиться к узлам Managed Service for Kubernetes.
Примечание
Для подключения через OS Login на узле должен быть включен внешний доступ.
Настройте узел кластера, после чего подключитесь к нему одним из двух способов:
Перед началом работы
-
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
. -
Включите доступ через OS Login на уровне организации.
-
Убедитесь, что аккаунту, с которого вы подключаетесь к узлу, назначена одна из ролей:
compute.osLogin
— для доступа к узлу без прав sudo;compute.osAdminLogin
— для доступа с правами sudo.
Настройте узел
Подготовьте узел кластера к подключению:
-
Убедитесь, что для узла включен внешний доступ.
-
Чтобы активировать доступ к узлу через OS Login:
С помощью CLIС помощью TerraformДобавьте параметр
enable-oslogin=true
в конфигурацию узла:yc managed-kubernetes node-group update --name <имя_группы_узлов> --metadata enable-oslogin=true
-
Откройте актуальный конфигурационный файл Terraform с описанием группы узлов Managed Service for Kubernetes.
О том, как создать такой файл, см. в разделе Создание группы узлов.
-
Добавьте параметр
enable-oslogin = "true"
в блокmetadata
:resource "yandex_kubernetes_node_group" "<имя_группы_узлов>" { ... instance_template { ... metadata = { enable-oslogin = "true" } } }
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
. -
Подключитесь к узлу с помощью CLI
-
Посмотрите описание команды CLI для подключения к узлу:
yc compute ssh --help
-
Чтобы узнать имя нужного узла, получите список узлов в кластере:
yc managed-kubernetes node-group list-nodes --name <имя_группы_узлов>
Пример результата:
+----------------------+-----------------+---------------------------+-------------+--------+ | CLOUD INSTANCE | KUBERNETES NODE | RESOURCES | DISK | STATUS | +----------------------+-----------------+---------------------------+-------------+--------+ | fhmmh23ugigb******** | <имя_узла> | 4 100% core(s), 8.0 GB of | 64.0 GB ssd | READY | | RUNNING_ACTUAL | | memory | | | +----------------------+-----------------+---------------------------+-------------+--------+
-
Подключитесь к узлу:
yc compute ssh --name <имя_узла>
Подключитесь к узлу с помощью SSH
-
Экспортируйте сертификат OS Login.
Примечание
Сертификат действителен один час. По истечении этого времени для подключения к узлу экспортируйте новый сертификат.
-
Узнайте публичный адрес узла:
-
Получите идентификатор группы узлов:
yc managed-kubernetes node-group list
Результат:
+------------------------------+----------------------+-----------+----------------------+---------------------+---------+------+ | ID | CLUSTER ID | NAME | INSTANCE GROUP ID | CREATED AT | STATUS | SIZE | +------------------------------+----------------------+-----------+----------------------+---------------------+---------+------+ | <идентификатор_группы_узлов> | cato4gqs0ave******** | ng-name | cl17a1c3mbau******** | 2024-02-08 04:25:06 | RUNNING | 1 | +------------------------------+----------------------+-----------+----------------------+---------------------+---------+------+
Нужный параметр находится в столбце
ID
. -
Посмотрите список узлов Managed Service for Kubernetes, которые принадлежат этой группе:
yc compute instance-group list-instances <идентификатор_группы_узлов>
Результат:
+----------------------+---------------------------+----------------+-------------+----------------------+----------------+ | INSTANCE ID | NAME | EXTERNAL IP | INTERNAL IP | STATUS | STATUS MESSAGE | +----------------------+---------------------------+----------------+-------------+----------------------+----------------+ | fhm8nq5p7t0r******** | cl12kvrgj493rhrkimmb-**** | 84.201.156.211 | 10.128.0.36 | RUNNING_ACTUAL [25m] | | +----------------------+---------------------------+----------------+-------------+----------------------+----------------+
Публичный IP-адрес узла Managed Service for Kubernetes указан в столбце
EXTERNAL IP
.
-
-
Подключитесь к ВМ:
ssh -i <путь_к_файлу_сертификата> <имя_пользователя>@<публичный_IP-адрес_узла>
Где:
<путь_к_файлу_сертификата>
— путь к сохраненному ранее файлуIdentity
сертификата. Например:/home/user1/.ssh/yc-cloud-id-b1gia87mbaom********-orgusername
.<имя_пользователя>
— имя пользователя в организации. Оно указано в конце имени экспортированного сертификата OS Login. В примере выше этоorgusername
.<публичный_IP-адрес_узла>
— полученный ранее публичный адрес узла.
При первом подключении к узлу появится предупреждение о неизвестном хосте:
The authenticity of host '158.160.**.** (158.160.**.**)' can't be established. ECDSA key fingerprint is SHA256:PoaSwqxRc8g6iOXtiH7ayGHpSN0MXwUfWHk********. Are you sure you want to continue connecting (yes/no)?
Введите в терминале слово
yes
и нажмите Enter.