从Helm中的文件中读取秘密

时间:2017-11-28 17:10:34

标签: kubernetes kubernetes-helm

我已经创建了一些秘密,我试图以这种方式导入文件:

apiVersion: v1
kind: Secret
metadata:
  name: {{ template "amq.broker.fullname" . }}-tls
  labels:
    app: {{ template "amq.name" . }}
    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
    component: "{{ .Values.broker.name }}"
    release: "{{ .Release.Name }}"
    heritage: "{{ .Release.Service }}"
type: Opaque
data:
{{ (.Files.Glob "secrets/broker.ks").AsSecrets | indent 2 }}

该文件位于secrets目录下。当我运行安装时,broker.ks秘密不在那里。但是秘密在secrets文件夹下。有什么想法吗?

这里是dir struct

├── Chart.yaml
├── README.md
├── secrets
│   ├── broker.ks
│   ├── broker_cert
│   ├── client.ks
│   └── client.ts
├── templates
│   ├── NOTES.txt
│   ├── _helpers.tpl
└── values.yaml

2 个答案:

答案 0 :(得分:7)

根据docs,对此的解决方案如下:

{{- $root := . -}}
{{- range $path, $bytes := .Files.Glob "secrets/broker.ks" }}
{{ base $path }}: '{{ $root.Files.Get $path | b64enc }}'
{{- end }}

您还可以使用.Files.Glob "secrets/*.ks"

提取文件夹中特定类型的所有文件

另外,请确保该文件夹尚未添加到.helmignore,否则无法访问这些文件。

答案 1 :(得分:-1)

您可以使用KUBECTL

的必要选项从文件中创建一个秘密

语法:kubectl< - 使用auth>定义集群/命名空间的泛型参数创建秘密< .type> < .secret-名称> --from文件= LT; .file-地点>

例如 - kubectl --username = xxxxxx --password = yyyy --server = zzzzz.com --namespace = com-test-sample 创建秘密通用 sample-secret --from-file =秘密/ broker.ks

您可以在kubernetes集群中单独创建密钥,然后通过部署下的卷安装将它们安装到您的微服务容器中