Я настроил виртуальную сеть A и виртуальную сеть B. Они связаны между собой с помощью пиринга виртуальных сетей. vnet A имеет две подсети = «vm-agents» и «private-endpoints». У них нет никаких НСГ. vnet B также имеет две подсети = «aks» и «private-endpoints».
В подсети «vm-agents» виртуальной сети A я создал агент конвейера. В подсети «частные конечные точки» виртуальной сети B я создал ACR, связанный с частной конечной точкой. Я также настроил частную зону DNS, связанную с виртуальными сетями A и B.
Я уже подключился к своему агенту конвейера по SSH и проверил, правильно ли работает разрешение DNS, используя nslookup
. Он действительно возвращает IP-адрес частной конечной точки.
Но команда docker login -u <token-name> -p <token-password> <my-own-acr>.azurecr.io
возвращает ошибку Error response from daemon: login attempt to https://<my-own-acr>.azurecr.io/v2/ failed with status: 403 Forbidden
.
Временное включение публичного доступа к ACR и тестирование той же команды на моем компьютере приводит к успешному входу в систему. Я использую токен, созданный в ACR.
Что здесь может быть не так?
ответ от демона: попытка входа не удалась, статус: 403 Запрещено. Ошибка вашего лица по причинам, указанным ниже. Следуйте MS Doc для более подробной информации.
Если вы используете виртуальную сеть или частную конечную точку для ACR
, вы можете проверить пункты, упомянутые в MS DOC.
Конфигурация DNS частной конечной точки ACR
Наборы записей частной зоны DNS
Когда я попытался проверить связь VM-agents
с ACR, используя ту же конфигурацию, что и ваша, соединение прошло успешно, как показано ниже.
Обязательно убедитесь, что пиринг виртуальной сети одобрен, а частная зона DNS настроена правильно.
Спасибо, что указали на конфигурацию DNS в частной конечной точке. Я заметил, что было два частных IP-адреса, и они были неправильно настроены.