Как подключить один и тот же том ко всем модулям в пространстве имен kubernetes - PullRequest
0 голосов
/ 13 февраля 2020

У нас есть пространство имен в kubernetes, где я хотел бы, чтобы некоторые секреты (файлы, такие как jks, properties, ts и т. Д. c.) Были доступны для всех контейнеров во всех модулях (у нас есть одна JVM на контейнер & один контейнер для каждого типа развертывания).

Я создал секреты, используя kustomization, и планирую использовать его в качестве тома для spe c каждого Deployment, а затем volumeMount для контейнера этого Deployment. Я хотел бы, чтобы этот том был смонтирован на каждом из контейнеров, развернутых в нашем пространстве имен.

Я хочу знать, может ли kustomize (или что-то еще) помочь мне смонтировать этот том во всех развертываниях в этом namespace?

Я пробовал следующее patchesStrategicMerge

---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: myNamespace
spec:
  template:
    spec:
      imagePullSecrets:
        - name: pull-secret
      containers:
        - volumeMounts:
          - name: secret-files
            mountPath: "/secrets"
            readOnly: true
      volumes:
      - name: secret-files
        secret:
          secretName: mySecrets
          items:
          - key: key1
            path: ...somePath
          - key: key2
            path: ...somePath

Требуется имя в разделе metadata, что не помогает, поскольку все мои развертывания имеют разные имена.

Ответы [ 3 ]

1 голос
/ 14 февраля 2020

Внедрение информации в модули с использованием PodPreset

Вы можете использовать объект PodPreset для ввода информации, такой как секреты, монтирование томов и переменные среды и т. Д. c, во время создания.

0 голосов
/ 14 февраля 2020

PodPresent (https://kubernetes.io/docs/tasks/inject-data-application/podpreset/) - это один из способов сделать это, но для этого все модули в вашем пространстве имен должны соответствовать метке, указанной вами в PodPresent, spe c.

Другим способом. (что является наиболее популярным) - использовать Dynami c Admission Control (https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/) и написать в своем кластере Mutating webhook, который отредактирует ваш модуль c и добавит все секреты, которые вы хотите смонтировать. Используя это, вы также можете вносить другие изменения в свой модуль c, такие как монтирование томов, добавление меток и многое другое.

0 голосов
/ 13 февраля 2020

Для монтирования секрета как тома вам необходимо обновить конструкцию yaml для ваших файлов pod / manifest и развернуть их.

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: nginx
      volumeMounts:
        - name: my-secret-volume
          mountPath: /etc/secretpath
  volumes:
    - name: my-secret-volume
      secret:
        secretName: my-secret

kustomize (или что-то еще) не смонтирует его для вас.

...