Kubernetes - Секреты
Секреты можно определить как объекты Kubernetes, используемые для хранения конфиденциальных данных, таких как имя пользователя и пароли, с шифрованием.
В Kubernetes есть несколько способов создания секретов.
- Создание из файлов txt.
- Создание из файла yaml.
Создание из текстового файла
Чтобы создать секреты из текстового файла, такие как имя пользователя и пароль, нам сначала нужно сохранить их в текстовом файле и использовать следующую команду.
$ kubectl create secret generic tomcat-passwd –-from-file = ./username.txt –fromfile = ./.
password.txt
Создание из файла Yaml
apiVersion: v1
kind: Secret
metadata:
name: tomcat-pass
type: Opaque
data:
password: <User Password>
username: <User Name>
Создание секрета
$ kubectl create –f Secret.yaml
secrets/tomcat-pass
Использование секретов
После того, как мы создали секреты, их можно использовать в модуле или контроллере репликации как -
- Переменная среды
- Volume
Как переменная среды
Чтобы использовать секрет в качестве переменной среды, мы будем использовать env в разделе spec файла pod yaml.
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: mysecret
key: tomcat-pass
Как объем
spec:
volumes:
- name: "secretstest"
secret:
secretName: tomcat-pass
containers:
- image: tomcat:7.0
name: awebserver
volumeMounts:
- mountPath: "/tmp/mysec"
name: "secretstest"
Секретная конфигурация как переменная среды
apiVersion: v1
kind: ReplicationController
metadata:
name: appname
spec:
replicas: replica_count
template:
metadata:
name: appname
spec:
nodeSelector:
resource-group:
containers:
- name: appname
image:
imagePullPolicy: Always
ports:
- containerPort: 3000
env: -----------------------------> 1
- name: ENV
valueFrom:
configMapKeyRef:
name: appname
key: tomcat-secrets
В приведенном выше коде под env По определению, мы используем секреты в качестве переменной среды в контроллере репликации.
Секреты крепления тома
apiVersion: v1
kind: pod
metadata:
name: appname
spec:
metadata:
name: appname
spec:
volumes:
- name: "secretstest"
secret:
secretName: tomcat-pass
containers:
- image: tomcat: 8.0
name: awebserver
volumeMounts:
- mountPath: "/tmp/mysec"
name: "secretstest"