Как обращаться с неполными предоставленными секретами - PullRequest
1 голос
/ 03 августа 2020

Фон

В настоящее время я разрабатываю Helm Chart для своего приложения. График имеет зависимость от bitnami/mongodb. Эта диаграмма создает следующий секрет:

---
# Source: mongodb/templates/secrets.yaml
apiVersion: v1
kind: Secret
metadata:
  name: RELEASENAME-mongodb
  namespace: default
  labels:
    app.kubernetes.io/name: mongodb
    helm.sh/chart: mongodb-8.2.1
    app.kubernetes.io/instance: RELEASENAME
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: mongodb
type: Opaque
data:
  mongodb-root-password:  "ZHVtbXlwYXNzd29yZA=="
  mongodb-password:  "cGFzc3dvcmQ="

(helm template RELEASENAME bitnami/mongodb --set auth.rootPassword=dummypassword,auth.username=username,auth.password=password,auth.database=database)

Мое приложение, конечно, хочет использовать предоставленную MongoDB, однако мне нужно предоставить больше, чем просто пароль но также имя пользователя, база данных и URI подключения к ней, чтобы иметь возможность подключиться к базе данных.

Вопрос

Как лучше всего предоставить всю конфигурацию (имя пользователя, пароль, база данных, URI подключения) в контейнер моего приложения без дублирования существующего секрета, а также без распределения конфигурации среди нескольких источников конфигурации (configmap, secret, environment)?

Edit (конкретизация): Поскольку этот вопрос вращается вокруг разработки Helm Chart, я бы хотел иметь автономное решение в моем Chart вместо того, чтобы полагаться на исправление / обновление объектов развертывания в кластере после запуска helm install.

Мысли / Remarks

Наверное, самый простой способ - предоставить все через окружающую среду. Однако список будет становиться все длиннее и длиннее, чем больше зависимостей будет добавлено в мое приложение. Я заметил, что люди, похоже, предпочитают конфигурационные карты / секреты простой конфигурации среды.

Однако Я не могу найти способ ссылаться на один секрет из другого секрета таким образом, как это возможно в конфигурации среды через EnvVarSource .

Затем я подумал об исправлении существующего секрета, чтобы каким-то образом добавить недостающие учетные данные, пока диаграмма все еще отображается, однако я не могу найти способ сделать это.

Наконец, я мог предоставить имя пользователя, базу данных и URI подключения через второй секрет или карту конфигурации (в зависимости от того, рассматриваете ли вы эту часть учетных данных [ ref ]) и предоставить пароль только через среду. Что мне не нравится в этом подходе, так это то, что мне пришлось бы разделить одну логическую конфигурацию на несколько источников.

...