Идентификатор управляемой службы Azure. Не удалось получить токены после 12 раз - PullRequest
0 голосов
/ 22 января 2019

У меня есть виртуальная машина с присвоенной системой идентификацией управляемого сервиса.Я дал ему разрешение на извлечение изображений из реестра контейнера Azure. Я следовал этому уроку .

Я отлично работал вчера.Но при желании вытащить новый образ, он сказал, чтобы повторно подтвердить подлинность.Вот где это не удается.Когда я выполняю одно из следующих действий, я получаю сообщение об ошибке, сообщающее, что получение токена не удалось.

Я что-то не так делаю?

az login --identity

az acr login --name MYREGISTRY

MSI: Failed to acquire tokens after 12 times
Traceback (most recent call last):
  File "/opt/az/lib/python3.6/site-packages/knack/cli.py", line 206, in invoke
    cmd_result = self.invocation.execute(args)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 328, in execute
    raise ex
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 386, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 379, in _run_job
    six.reraise(*sys.exc_info())
  File "/opt/az/lib/python3.6/site-packages/six.py", line 693, in reraise
    raise value
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 356, in _run_job
    result = cmd_copy(params)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/commands/__init__.py", line 171, in __call__
    return self.handler(*args, **kwargs)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/__init__.py", line 441, in default_command_handler
    return op(**command_args)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/command_modules/profile/custom.py", line 111, in login
    return profile.find_subscriptions_in_vm_with_msi(username)
  File "/opt/az/lib/python3.6/site-packages/azure/cli/core/_profile.py", line 297, in find_subscriptions_in_vm_with_msi
    msi_creds = MSIAuthentication(resource=resource)
  File "/opt/az/lib/python3.6/site-packages/msrestazure/azure_active_directory.py", line 576, in __init__
    self.set_token()
  File "/opt/az/lib/python3.6/site-packages/msrestazure/azure_active_directory.py", line 584, in set_token
    token_entry = self._vm_msi.get_token(self.resource)
  File "/opt/az/lib/python3.6/site-packages/msrestazure/azure_active_directory.py", line 632, in get_token
    token_entry = self._retrieve_token_from_imds_with_retry(resource)
  File "/opt/az/lib/python3.6/site-packages/msrestazure/azure_active_directory.py", line 674, in _retrieve_token_from_imds_with_retry
    raise TimeoutError('MSI: Failed to acquire tokens after {} times'.format(max_retry))
TimeoutError: MSI: Failed to acquire tokens after 12 times

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Принятый ответ не сработал, но остановка и последующий запуск виртуальной машины снова решили проблему.Имейте в виду, что перезагрузка не сработала;Необходимо было остановить, а затем начать с веб-интерфейса Azure, т.е. освобождения и перераспределения виртуальной машины.Выглядит как сбой в распределении виртуальной машины Azure.

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

Существует объяснение, что вы следуете за документом.

  1. az vm identity assign -g myResourceGroup -n myDockerVM.

Эта команда CLI означает, что вы включили MSI системы VM.См. az vm identity.

az role assignment create --assignee '0a6b28fd-*********' --scope '/subscriptions/{subscription-id}/resourceGroups/{your-resource-group}/providers/Microsoft.ContainerRegistry/registries/{acr-name}' --role reader

Эта команда CLI означает, что вы назначаете разрешение для чтения виртуальных машин для доступа к ACR с помощью MSI системы VM.

az login --identity

Эта команда CLI означает, что вы входите в систему с использованием идентификатора, назначенного системой виртуальной машины.Разрешение зависит от правопреемника с ВМ.Так что вы можете запустить команду CLI с разрешением виртуальной машины.

az acr login --name ManiTempRegistry

Эта команда CLI означает, что вы входите в ACR с текущим пользователем.В этом выпуске это означает, что вы входите в ACR с MSI системы VM с разрешением Reader.

Все вышеперечисленные шаги завершены, затем вы можете просто извлечь образ докера из ACR в качестве устройства чтения.А токен хранится в файле ~/.docker/config.json.И файл будет выглядеть так:

enter image description here

Так что, если токен не истек, вам не нужно снова входить в систему.Таким образом, вы можете проверить, в порядке ли токен.Любой другой вопрос вы можете дать мне сообщение.

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