使用机密将敏感数据存储在掌舵kubernetes中

时间:2019-11-01 05:26:58

标签: kubernetes kubernetes-helm

我在模板目录中有一个secret.yaml文件,其中包含以下数据:

apiVersion: v1
kind: Secret
metadata: 
  name: appdbpassword
stringData:
  password: password

我也有一个ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: appdbconfigmap
data:
  jdbcUrl: jdbc:oracle:thin:@proxy:service
  username: bhargav

我正在使用以下吊舱:

apiVersion: v1
kind: Pod
metadata:
  name: expense-pod-sample-1
spec:
  containers:
    - name: expense-container-sample-1
      image: exm:1
      command: [ "/bin/sh", "-c", "--" ]
      args: [ "while true; do sleep 30; done;" ]
      envFrom:
      - configMapRef:
              name: appdbconfigmap
      env:
      - name: password
        valueFrom:
          secretKeyRef:
            name: appdbpassword
            key: password

当我使用helm install命令时,我看到Pod正在运行,但是如果我尝试在应用程序中使用环境变量${password},它将无法正常工作。提示密码错误。它不会抱怨用户名是ConfigMap。仅当我使用头盔时才会发生这种情况。如果我不使用头盔,而是使用kubectl独立运行所有YAML文件,则我的应用程序可以正确访问用户名和密码。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:2)

apiVersion: v1
kind: Secret
metadata:
  name: test-secret
data:
  password : cGFzc3dvcmQK

您还可以在将数据转换为base64格式时添加这样的秘密。虽然stringData在创建机密时会自动执行此操作。

尝试以这种方式在环境中添加机密

envFrom:
        - secretRef:
            name: test-secret