Объекты секретов могут создаваться как пользователем так и системой, например кубер автоматически создает нужные ему секреты для доступа к 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