Ресурсы (ConfigMaps/Secrets)

Secrets

Объекты секретов могут создаваться как пользователем так и системой, например кубер автоматически создает нужные ему секреты для доступа к API и модифицирует поды для использования этих секретов
Объект секретов можно создать командой kubectl create secret либо вручную заполнить yaml манифест данными в base64

:!: Создание секретов

Создать секрет из файлов командой кубера:

kubectl create secret generic my-secret --from-file=first.txt --from-file=second.txt
 
kubectl get secrets
kubectl describe secrets/my-secret

Создание через yaml манифест. Данные предварительно закодированы в base64

apiVersion: v1
kind: Secret
metadata: 
  name: my-secret
type: Opaque
data:
  username: wefwef=
  password: ssv=

Далее создаем файлом

kubectl create -f my-file.yaml
kubectl get secret my-secret -o yaml

Секреты можно примонтировать к поду как тома с данными либо как переменные окружения

:!: Использование
(...)
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret

Можно примонтировать значение отдельного ключа из секрета

(...)
spec:
  containers:
  - name: mypod
    image: redis
    volumeMounts:
    - name: foo
      mountPath: "/etc/foo"
      readOnly: true
  volumes:
  - name: foo
    secret:
      secretName: mysecret
      items:
      - key: username
        path: my-group/my-username

В данном случае, значение username будет доступно по пути «/etc/foo/my-group/my-username» вместо «/etc/foo/username»
Задавать права доступа можно к объектам и даже ключам

Подключение в виде переменных окружения выглядит так:

(...)
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
:!: