Вставьте все секреты как переменные env в развертывание kubernetes

У меня есть десятки секретов, которые нужно передать в развертывание k8, которое становится очень многословным, ниже приведен пример передачи секретов redis из redis-secrets секрет.

- name: REDIS_HOST
  valueFrom:
    secretKeyRef:
      name: redis-secrets
      key: REDIS_HOST
- name: REDIS_PASSWORD
  valueFrom:
    secretKeyRef:
      name: redis-secrets
      key: REDIS_PASSWORD
- name: REDIS_PORT
  valueFrom:
    secretKeyRef:
      name: redis-secrets
      key: REDIS_PORT

Можно ли передать все секреты от redis-secrets в развертывание, причем ключи секретов являются ключом переменной env?

2 ответа

Решение

Я не пробовал это на секретах, но стоит попробовать. Я использовал это в configmaps.

Тот же уровень, что и env, который является.spec.containers

envFrom: - secretRef: name: redis-secrets

Я не уверен в вашем конкретном случае использования, но вы можете установить переменные окружения в своем развертывании следующим образом (два примера, один, где redis keyname - это "ключевое значение" переменной env, а другой - где у вас просто есть ключ в качестве ключ redis и значение как ожидаемое "значение ключа"):

   environment:
      - REDIS_PORT=12345
      - KEY1=REDIS_PASSWORD      
      - KEY2=REDIS_PORT

Ваше приложение может потреблять их по мере необходимости. Он может загрузить Key1/Key2 и затем искать REDIS_PORT и REDIS_PASSWORD из хранилища секретов ИЛИ вы можете загрузить REDIS_PORT напрямую и использовать номер порта из переменной env.

Другие вопросы по тегам