首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最后把钥匙库和AKS结合起来.但不清楚在那之后我需要做些什么才能读到env

最后把钥匙库和AKS结合起来.但不清楚在那之后我需要做些什么才能读到env
EN

Stack Overflow用户
提问于 2021-02-20 21:19:09
回答 1查看 1.6K关注 0票数 1

文档有点混乱,有两组:

无论如何,我能做以下几件事来证明秘密存在于波德之中:

代码语言:javascript
复制
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部署的方式。

代码语言:javascript
复制
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

现在需要对所有这些做些什么?

代码语言:javascript
复制
env:
  - name: PGDATABASE
    valueFrom:
      secretKeyRef:
        name: k8stut-dev-secrets
        key: PGDATABASE
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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.

代码语言:javascript
复制
- name: POSTGRES_DB_FILE
  value: /mnt/secrets-store/db-secret

在一般情况下,如果您需要环境变量中的秘密,我通常会在容器中使用一个启动脚本来读取CSI挂载的机密并导出它们。如果它是一个自定义容器,这通常很容易添加;如果它是一个标准容器,则可以使用一小组shell命令进行重写命令,这些命令可以通过读取文件导出适当的变量,然后再调用容器的任何正常入口点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66296659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档