Внедрение секретов хранилища в переменную среды Kubernetes Pod - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь установить Sonarqube в среде Kubernetes, для которой требуется PostgresSQL. Я использую внешний экземпляр Postgres, и у меня есть секретный ключ kv в Vault. Сводная диаграмма SonarQube создает переменную окружения в контейнере, которая принимает имя пользователя и пароль для Postgres.

Как я могу ввести секрет из моего хранилища в переменную окружения модуля sonarqube, работающего в Kubernetes?

Создание секрета Kubernetes и предъявление секрета в секретной таблице работает, но мы управляем всеми секретами в Vault и нуждаемся в том, чтобы секреты Vault вводили в капсулы.

Спасибо

Ответы [ 4 ]

2 голосов
/ 16 апреля 2020

Если вы столкнулись с проблемой при вводе секрета с использованием контейнера для коляски консула и обнаружили, что его очень сложно настроить, вы можете использовать это: https://github.com/DaspawnW/vault-crd

Это определение ресурса, определяемое хранилищем, которое напрямую синхронизируйте переменные окружения хранилища c с секретом kuberntes, так что теперь вы можете напрямую добавлять секрет в POD. с помощью secretref.

vault crd создайте один модуль, в котором необходимо передать имя или URL-адрес службы хранилища, с помощью которого приложение может подключиться к хранилищу, и при изменении значения хранилища оно автоматически синхронизирует значение c с kubernetes. секрет.

https://vault.koudingspawn.de/

1 голос
/ 16 апреля 2020

Вам нужно использовать родительский процесс, который будет общаться с хранилищем и получать значение, а затем запускать ваш реальный процесс. https://github.com/hashicorp/envconsul является незначительным официальным инструментом для этого от команды Убежища, но есть много других вариантов, если вы go ищете.

0 голосов
/ 16 апреля 2020

В документации kubernetes (https://kubernetes.io/docs/concepts/configuration/secret/#using -secrets-as-variable-environment * ) есть пример YAML, который заполняет переменную среды секретом.

apiVersion: v1
kind: Pod
metadata:
  name: secret-env-pod
spec:
  containers:
  - name: mycontainer
    image: redis
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: username
      - name: SECRET_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: password
  restartPolicy: Never
0 голосов
/ 16 апреля 2020

Вот метод, который может дать некоторое представление: https://banzaicloud.com/blog/inject-secrets-into-pods-vault-revisited/#kubernetes -mutating-webhook-for-injecting-секреты

...