Довольно долго провозился с настройкой distribution в Azure через workload identity в AKS который не хотел работать.
Сама настройка простая:
- аннотация на сервис аккаунт в кластере (azure.workload.identity/client-id)
- метка на под (azure.workload.identity/use: "true")
- настроить конфигурацию в distribution
storage: azure: accountname: accountname container: containername credentials: type: default_credentials
Но в лог валится ошибка "403 Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature."
time="2025-12-12T13:31:49.16984327Z" level=error msg="storage driver health check: azure: HEAD https://redacted.blob.core.windows.net/distribution//\n----------------------------… 403: 403 Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.\nERROR CODE: AuthenticationFailed\n--------------------------------------------------------------------------------\nResponse contained no body\n--------------------------------------------------------------------------------\n" go.version=go1.23.7 instance.id=bad30917-c9bb-4ba6-a309-dc45e3ca5910 service=registry version=3.0.0
Заменил образ на mcr.microsoft.com/azure-cli, зашёл в под и просмотрел список блобов в нужном сторадж аккаунте. Никаких проблем не возникло, а значит workload identity настроен правильно.
В issues нашёлся #4618 (Azure storage driver default_credentials don't work with Workload Identity) который описывает идентичную проблему, но он был закрыт ещё в начале апреля.
При этом авторизация через shared key работает. Причём даже в странной комбинации настроек
storage:
azure:
accountname: accountname
accountkey: accountkey
container: containername
credentials:
type: default_credentials
Т.е. при таком раскладе должно использовать workload identity, но по факту использует shared key.
Полез смотреть в код и заметил что функция newClient() в релизе 3.0.0 не содержит исправление для #4618. Заменил тег с 3.0.0 на edge и всё заработало.
Пока оставил комментарий с просьбой выпустить релиз с этим исправлением, но потраченное время жаль.
Комментариев нет:
Отправить комментарий