TGViewer
Сочный DevOps Сочный DevOps @andtree_sec · 420 subscribers
Post #105 26
Ошибка авторизации при использовании vault-webhook от bank-vault с типом inject

Возможно кто-то как и я использует в своих кластерах vault secret webhook от bank-vault для создания сущностей вроде configMaps или Secrets из волта. Есть еще один режим работы - Inject, при котором вебхук мутирует манифест сущности pod и "спавнит" процесс оборачивая запуск в свой бинарь, например если вы запускаете условный "yarn start", то после мутации это будет выглядеть как "/vaut/vault-env yarn start". Переменные будут не видны в env, только если внутри контейнера посмотреть их через этот бинарь /vault/vault-env.
И порой, если используется например несколько контейнеров в поде и все они из внутренних приватных registry, причем из разных, а следовательно и для пуллинга будет использоваться разные imagePullSecrets можно встретить ошибку:

Error creating: Internal error occurred: failed calling webhook "pods.vault-secrets-webhook.admission.banzaicloud.com": failed to call webhook: an error on the server ("{\"kind\":\"AdmissionReview\",\"apiVersion\":\"admission.k8s.io/v1beta1\",\"response\":{\"uid\":\"8f38f2a7-90dd-4d43-a7b5-dd93b5065cf3\",\"allowed\":false,\"status\":{\"metadata\":{},\"status\":\"Failure\",\"message\":\"could not mutate object: <object> UNAUTHORIZED: HTTP Basic: Access denied.

Это происходит из-за того, что "хук" не умеет читать массив, заданный в imagePullSecret секции, он просто берет первый элемент и пытается с ним идти в regsitry, а идет он туда только в том случае, если в манифесте явно не указан command. Вебхуку нужно как-то понимать какой процесс (команду) спавнить, следовательно, если этого нет в манифесте, то он берет imagePullSecret (первый элемент в массиве) и идет в registry, чтобы получить манифет образа и достать command (entrypoint) оттуда. Тут то и происходит ошибка, если у нас в поде два контейнера, креды к которым надо брать из разных секретов, описанных в imagePullSecert.

Решение достаточно простое, для подобных кейсов указывать в манифесте явно команду запуска контейнера, тогда веб-хуку не нужно будет идти в registy и данной ошибки не будет, да и скорость развертывания будет выше, так как мы убирает лишний HTTP вызов.

#kubernetes
More from @andtree_sec
  1. Sep 7, 2026Давненько не было сообщений. Скорее всего в будущем они уйдут в telegraf, который я еще не…
  2. Jul 6, 2026Последнее время на работе часто приходится работать с apache flink и даже что-то писать на…
  3. Jun 4, 2026Немножко про молекула тесты... У нас принято использовать в переменных lookup плагин для д…
  4. May 20, 2026Очередной небольшой проект. Веб-приложение, которое агрегирует через стандартный механиз g…
  5. May 15, 2026Включаем профилирование в ansible Профилирование, это вывод даты, времени запуска и итогов…
  6. Apr 17, 2026Так выглядит общий dashbord работы с инцидентами.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →