Понимание секретов поиска в приложении kubernetes Spring Boot

Я следую этому руководству, чтобы использовать секреты: https://docs.spring.io/spring-cloud-kubernetes/docs/current/reference/html/index.html#secrets-propertysource.

Говорит примерно.

  1. сохранить секреты

  2. ссылочные секреты в файле deployment.yml

       containers:
     - env:
        - name: DB_USERNAME
          valueFrom:
             secretKeyRef:
               name: db-secret
               key: username
        - name: DB_PASSWORD
          valueFrom:
             secretKeyRef:
               name: db-secret
               key: password
    
  3. Затем он говорит, что вы можете выбрать секреты для использования несколькими способами: и дает 3 примера. Однако, не выполняя ни одного из этих шагов, я все еще могу прекрасно видеть секреты в моем окружении. Более того, операции на шаге 1 и шаге 2 работают независимо от весенней загрузки (сохранять и перемещать секреты в переменные среды)

Мои вопросы:

  1. Если я внесу изменения, предложенные на шаге 3, какие изменения / улучшения будут внесены в мой контейнер / приложение / модуль?
  2. Нет ли возможности избежать сопоставления на шаге 1 и поместить все секреты в env?
  3. они пишут -Dspring.cloud.kubernetes.secrets.paths = / etc / secrets для источника всех секретов, откуда они узнали, что секреты находятся в папке с именем / etc /

person Funzo    schedule 25.01.2021    source источник


Ответы (1)


Вы можете смонтировать все переменные env из секрета следующим образом:

      containers:
        - name: app
          envFrom:
          - secretRef:
              name: db-secret

Что касается того, откуда Spring черпает секреты - я не эксперт по Spring, но кажется, что в предоставленной вами ссылке уже есть объяснение:

Если этот параметр включен, Fabric8SecretsPropertySource ищет в Kubernetes секреты из следующих источников:

Рекурсивное чтение из секретов

Назван в честь приложения (как определено в spring.application.name)

Соответствие некоторым этикеткам

Таким образом, он берет секреты от монтирования секретов (если вы монтируете их как тома). Он также сканирует Kubernetes API на предмет секретов (я думаю, в тех же пространствах имен, в которых работает приложение). Он может сделать это, используя токен сервисного аккаунта Kubernetes, который по умолчанию всегда установлен в модуль. Это зависит от того, какие разрешения Kubernetes RBAC предоставляются сервисному аккаунту пода.

Поэтому он пытается искать секреты с помощью Kubernetes API и сопоставлять их с именем приложения или ярлыками приложений.

person Vasili Angapov    schedule 26.01.2021