如何在Kubernetes Pod中挂载带.yml后缀的Secret?
解决Secret挂载后无.yml后缀的问题
有两种常见思路可以解决这个问题,具体如下:
方法一:修改ExternalSecret的secretKey为带.yml后缀的名称
Kubernetes挂载Secret时,Secret中的键名(secretKey)就是最终挂载到Pod里的文件名。所以你只需要把ExternalSecret中data字段的secretKey改成带.yml后缀的名称即可:
apiVersion: external-secrets.io/v1beta1 kind: ExternalSecret metadata: name: test namespace: test-nm spec: secretStoreRef: kind: name: refreshInterval: "24h" target: name: test creationPolicy: 'Owner' deletionPolicy: "Delete" data: - secretKey: some_key_name.yml # 这里加上.yml后缀 remoteRef: key: some_key.yml
同时注意你的Deployment配置里有个小问题:secretName应该填ExternalSecret生成的Secret名称test,而不是some_key_name,修正后的Deployment挂载部分:
volumes: - name: some-secret secret: secretName: test # 这里改为ExternalSecret的target.name containers: - name: some_app volumeMounts: - name: some-secret mountPath: /user/secrets/
这样挂载后,/user/secrets/目录下就会出现some_key_name.yml文件。
方法二:通过Secret挂载的items字段指定文件名
如果你不想修改Secret里的键名,可以在Deployment的secret卷配置中添加items字段,手动映射Secret的键到带后缀的文件名:
volumes: - name: some-secret secret: secretName: test # 同样要修正为正确的Secret名称 items: - key: some_key_name # Secret里原有的键名 path: some_key_name.yml # 指定挂载后的文件名(带.yml后缀) containers: - name: some_app volumeMounts: - name: some-secret mountPath: /user/secrets/
这种方式适合需要保留Secret内部键名,但挂载时要自定义文件名的场景。
内容的提问来源于stack exchange,提问作者Paul Arellano
相关产品推荐
相关产品推荐

