文档有点混乱,有两组:
无论如何,我能做以下几件事来证明秘密存在于波德之中:
kubectl exec -it nginx-secrets-store-inline -- ls /mnt/secrets-store/
kubectl exec -it nginx-secrets-store-inline -- cat /mnt/secrets-store/secret1这基本上就是我所看到的文档和教程的结尾。
酷..。但是,要让它们进入Pod中运行的应用程序中的环境变量,需要做些什么呢?
例如,这就是我在执行kubectl create secret generic app-secrets --from-literal=PGUSER=$pguser...时如何设置API部署的方式。
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-deployment-dev
namespace: production
spec:
replicas: 3
revisionHistoryLimit: 5
selector:
matchLabels:
component: api
template:
metadata:
labels:
component: api
spec:
containers:
- name: api
image: api
ports:
- containerPort: 5000
env:
- name: PGDATABASE
valueFrom:
secretKeyRef:
name: k8stut-dev-secrets
key: PGDATABASE
- name: PGHOST
value: postgres-cluster-ip-service-dev
- name: PGPORT
valueFrom:
secretKeyRef:
name: k8stut-dev-secrets
key: PGPORT
- name: PGUSER
valueFrom:
secretKeyRef:
name: k8stut-dev-secrets
key: PGUSER
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: k8stut-dev-secrets
key: PGPASSWORD
volumeMounts:
- mountPath: /mnt/file-storage
name: file-storage-dev
subPath: file-storage
volumes:
- name: file-storage-dev
persistentVolumeClaim:
claimName: file-storage-dev
---
apiVersion: v1
kind: Service
metadata:
name: api-cluster-ip-service-dev
namespace: development
spec:
type: ClusterIP
selector:
component: api
ports:
- port: 5000
targetPort: 5000现在需要对所有这些做些什么?
env:
- name: PGDATABASE
valueFrom:
secretKeyRef:
name: k8stut-dev-secrets
key: PGDATABASE发布于 2021-02-22 16:11:51
CSI秘密存储驱动程序是一个容器存储接口驱动程序,它只能装入文件。
具体来说,对于postgres,您可以使用码头保密性环境变量指向您要挂载秘密的路径,然后它将从文件中读取它。这是通过将_FILE附加到变量名来实现的。
根据该文档:Currently, this is only supported for POSTGRES_INITDB_ARGS, POSTGRES_PASSWORD, POSTGRES_USER, and POSTGRES_DB.
- name: POSTGRES_DB_FILE
value: /mnt/secrets-store/db-secret在一般情况下,如果您需要环境变量中的秘密,我通常会在容器中使用一个启动脚本来读取CSI挂载的机密并导出它们。如果它是一个自定义容器,这通常很容易添加;如果它是一个标准容器,则可以使用一小组shell命令进行重写命令,这些命令可以通过读取文件导出适当的变量,然后再调用容器的任何正常入口点。
https://stackoverflow.com/questions/66296659
复制相似问题