Gcloud - не может предоставить много виртуальных машин, используя одну учетную запись службы - PullRequest
0 голосов
/ 07 ноября 2018

Я использую Gcloud для запуска Prow (сервер непрерывной интеграции). Одна из моих работ - создать виртуальную машину, выполнить несколько тестов, а затем удалить этот экземпляр. Я использую служебную учетную запись для создания ВМ, запускаю тесты.

#!/bin/bash

set -o errexit

cleanup() {
    gcloud compute instances delete kyma-integration-test-${RANDOM_ID}
}


gcloud config set project ...
gcloud auth activate-service-account --key-file ...

gcloud compute instances create <vm_name> \
    --metadata enable-oslogin=TRUE \
    --image debian-9-stretch-v20181009 \
    --image-project debian-cloud --machine-type n1-standard-4 --boot-disk-size 20 \

trap cleanup exit

gcloud compute scp --strict-host-key-checking=no --quiet <script.sh> <vm_name>:~/<script.sh>

gcloud compute ssh --quiet <vm_name> -- ./<script.sh>

Через некоторое время я получил следующую ошибку:

ERROR: (gcloud.compute.scp) INVALID_ARGUMENT: Login profile size exceeds 32 KiB. Delete profile values to make additional space.

Действительно, для этой учетной записи службы команда describe возвращает много данных, например ~ 70 записей в разделе sshPublicKeys.

gcloud auth activate-service-account --key-file ... gcloud compute os-login describe-profile

Большая часть этих открытых ключей относится к уже удаленным экземплярам виртуальной машины. Как выполнить очистку этого списка? Или можно вообще не хранить эти открытые ключи?

Ответы [ 3 ]

0 голосов
/ 22 января 2019

Видя, как вы упомянули ОС Вход в свой вопрос: есть способ удалить определенные ключи SSH из профиля пользователя, используя эту команду . В качестве альтернативы, вместо выполнения SCP, я бы посоветовал вам, как и Джону Хэнли, поместить файл, который вы копируете, в экземпляр в хранилище и извлечь его с помощью сценария запуска (вы также можете использовать собственный образ Compute).

0 голосов
/ 24 января 2019

Очень грубый способ выполнить вышесказанное, который работал для меня, был:

for i in $(gcloud compute os-login ssh-keys list); do echo $i; gcloud compute os-login ssh-keys remove --key $i; done

Я остановил это (с помощью Control-C) после удаления нескольких десятков ключей, после чего он снова заработал.

На самом деле, в метаданных проекта в графическом интерфейсе я не вижу много ключей. Только:

  • gke ... cidr: имя сети ...
  • sshKeys: gke-e9 ...
  • SSH Keys => peter_v: ssh-rsa мой открытый ключ
0 голосов
/ 11 ноября 2018

Эти ключи хранятся в ваших метаданных проекта . Вы можете удалить их, удалив через интерфейс консоли Google

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...