Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»
Yandex Cloud Stackland
  • Что нового
  • Установка
    • Все руководства
    • Установить Stackland на Yandex BareMetal
    • Установка Stackland на виртуальные машины в Yandex Cloud
    • Настройка внешнего доступа к поду в кластере
    • Все инструкции
      • Инъекция секретов в переменные окружения
      • Инъекция секретов через ConfigMap
      • Диагностика Secrets Store
    • Проекты
    • Ресурсная модель
  • Управление доступом
  • Правила тарификации
  • Диагностика и устранение неполадок

В этой статье:

  • Секреты не подставляются в переменные окружения
  • Симптом
  • Причины и решения
  • Под не запускается: no command is given
  • Симптом
  • Решение
  • Инъекция не происходит для некоторых контейнеров
  • Симптом
  • Решение
  • Секрет не найден в Secrets Store
  • Симптом
  • Причины и решения
  • Проверка работы вебхука
  • Ошибка TLS при подключении к Secrets Store
  • Симптом
  • Решение
  1. Пошаговые инструкции
  2. Secrets Store
  3. Диагностика Secrets Store

Диагностика Secrets Store

Статья создана
Yandex Cloud
Обновлена 2 июня 2026 г.
  • Секреты не подставляются в переменные окружения
    • Симптом
    • Причины и решения
  • Под не запускается: no command is given
    • Симптом
    • Решение
  • Инъекция не происходит для некоторых контейнеров
    • Симптом
    • Решение
  • Секрет не найден в Secrets Store
    • Симптом
    • Причины и решения
  • Проверка работы вебхука
  • Ошибка TLS при подключении к Secrets Store
    • Симптом
    • Решение

В этом разделе описаны типичные проблемы при использовании Secrets Injector и способы их решения.

Секреты не подставляются в переменные окруженияСекреты не подставляются в переменные окружения

СимптомСимптом

Под запускается, но переменные окружения содержат исходные значения-ссылки (secrets:secret/data/...) вместо реальных значений.

Причины и решенияПричины и решения

Аннотации не попали в шаблон подаАннотации не попали в шаблон пода

Основное место настройки инъекции — аннотации в шаблоне пода. Для Deployment, StatefulSet, DaemonSet и Job рекомендуется указывать аннотации в spec.template.metadata.annotations. Для CronJob используйте spec.jobTemplate.spec.template.metadata.annotations.

Для Deployment, StatefulSet, DaemonSet и Job вебхук также может скопировать аннотации из metadata.annotations ресурса, если они не заданы в шаблоне пода. Если одна и та же аннотация задана в обоих местах, используется значение из шаблона пода. Но шаблон пода остается самым понятным и переносимым местом для настройки инъекции.

Примеры:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  template:
    metadata:
      annotations:
        secrets.stackland.yandex.cloud/render-env: "true"
        secrets.stackland.yandex.cloud/role: "myapp"

Пространство имен исключено из инъекцииПространство имен исключено из инъекции

Проверьте метки пространства имен:

kubectl get namespace <имя_пространства_имен> --show-labels

Если на пространство имен установлена метка secrets.stackland.yandex.cloud/injection=disabled, вебхук не мутирует поды в нем. Удалите метку:

kubectl label namespace <имя_пространства_имен> secrets.stackland.yandex.cloud/injection-

Не задана аннотацияНе задана аннотация role

Аннотация secrets.stackland.yandex.cloud/role обязательна. Без нее инжектор не сможет аутентифицироваться в Secrets Store.

Неправильный формат ссылки на секретНеправильный формат ссылки на секрет

Проверьте формат: secrets:<путь>#<ключ>. Слеш перед # не нужен, символ # обязателен.

Примеры:

  • Правильно: secrets:secret/data/myapp/database#password.
  • Неправильно: vault:secret/data/myapp/database#password (устаревший префикс vault:).
  • Неправильно: secrets:secret/data/myapp/database (нет #ключ).

Под не запускается:Под не запускается: no command is given

СимптомСимптом

level=ERROR msg="no command is given, stackland-secrets-injector can't determine the entrypoint"

Основной контейнер не стартует. В Env mode инжектор подменяет команду контейнера на себя, получает секреты, а затем заменяет себя процессом приложения. Если не заданы ни command, ни args, инжектор не знает, что запускать.

РешениеРешение

Явно задайте command в спецификации контейнера или args, где первый элемент — исполняемый файл. ENTRYPOINT из Docker-образа автоматически не используется.

Пример для Java-приложения:

containers:
  - name: app
    image: myapp:latest
    command:
      - /bin/sh
      - -c
      - "java -jar app.jar"
    env:
      - name: DB_PASSWORD
        value: "secrets:secret/data/myapp/database#password"

Пример для Go/бинарного приложения:

containers:
  - name: app
    image: myapp:latest
    command:
      - /app/myapp
    args:
      - --config=/config/app.yaml
    env:
      - name: API_KEY
        value: "secrets:secret/data/myapp/api#key"

Инъекция не происходит для некоторых контейнеровИнъекция не происходит для некоторых контейнеров

СимптомСимптом

В поде несколько контейнеров, но мутация не применяется ни к одному из них.

РешениеРешение

Если в поде несколько контейнеров и аннотация containers не задана, вебхук отклоняет создание пода, Deployment завершается ошибкой. Укажите явный список контейнеров:

annotations:
  secrets.stackland.yandex.cloud/render-env: "true"
  secrets.stackland.yandex.cloud/role: "myapp"
  secrets.stackland.yandex.cloud/containers: "app,worker"

Секрет не найден в Secrets StoreСекрет не найден в Secrets Store

СимптомСимптом

В ConfigMap mode: инжектор (init-контейнер) завершается с ошибкой о том, что секрет не найден, под переходит в Init:Error.

В Env mode: основной контейнер завершается с ошибкой, под переходит в Error или CrashLoopBackOff.

Причины и решенияПричины и решения

Путь к секрету указан неверноПуть к секрету указан неверно

Проверьте путь. В Secrets Store KV v2 данные находятся по пути secret/data/<имя>, а не secret/<имя>:

  • KV v2: secrets:secret/data/myapp/database#password.
  • KV v1: secrets:secret/myapp/database#password.

Роль не имеет доступа к этому путиРоль не имеет доступа к этому пути

Проверьте policy, привязанную к роли. Она должна разрешать read для нужного пути:

path "secret/data/myapp/*" {
  capabilities = ["read"]
}

Роль не привязана к ServiceAccount подаРоль не привязана к ServiceAccount пода

Проверьте привязку роли:

bao read auth/kubernetes/role/myapp

В выводе должны быть ServiceAccount и пространство имен пода.

Продолжить работу при отсутствующих секретахПродолжить работу при отсутствующих секретах

Если часть секретов может отсутствовать и это допустимо, используйте:

annotations:
  secrets.stackland.yandex.cloud/ignore-missing-secrets: "true"

Проверка работы вебхукаПроверка работы вебхука

Убедитесь, что вебхук работает и обрабатывает запросы:

# Проверить наличие подов webhook
kubectl get pods -n stackland-secrets-store -l app.kubernetes.io/name=stackland-secrets-webhook

# Проверить логи webhook при создании пода
kubectl logs -n stackland-secrets-store -l app.kubernetes.io/name=stackland-secrets-webhook --tail=50

В логах вебхука при успешной обработке должна быть строка:

level=INFO msg="Admission review request handled" ... duration=...ms

Если вебхук недоступен и failurePolicy: Fail (значение по умолчанию), поды в пространствах имен с включенной инъекцией не запустятся. Проверьте статус вебхука и подов в пространстве имен stackland-secrets-store.

Ошибка TLS при подключении к Secrets StoreОшибка TLS при подключении к Secrets Store

СимптомСимптом

level=ERROR msg="failed to connect to vault" error="x509: certificate signed by unknown authority"

РешениеРешение

Если сертификат Secrets Store не входит в доверенные, используйте аннотацию skip-tls-verify:

annotations:
  secrets.stackland.yandex.cloud/skip-tls-verify: "true"

Важно

Использование skip-tls-verify: "true" в production небезопасно.

Была ли статья полезна?

Предыдущая
Инъекция секретов через ConfigMap
Следующая
Диагностика дисковой подсистемы
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»