kubernetes-helm - Helm 从另一个 YAML 文件添加秘密
问题描述
我有一个 credential.yaml 作为:
key1: value1
key2: value2
...and so on
如何在 credential.yaml 中添加这些键值作为机密?我可以通过循环来添加在 Values 对象中定义的秘密,如下所示:
apiVersion: v1
kind: Secret
metadata:
name: {{ include "ocp-auth.fullname" . }}
labels:
{{- include "ocp-auth.labels" . | nindent 4 }}
type: Opaque
data:
{{- range $key,$value := .Values.secrets }}
{{ $key }}: {{ $value | b64enc | quote }}
{{- end }}
但这不适用于 credential.yaml
解决方案
1、如果使用文件名作为key,文件内容作为value,可以这样写:</p>
apiVersion: v1
kind: Secret
metadata:
name: {{ include "ocp-auth.fullname" . }}
labels:
{{- include "ocp-auth.labels" . | nindent 4 }}
type: Opaque
data:
{{ (.Files.Glob "data/credential.yaml").AsSecrets | indent 2 }}
data/credential.yaml
yaml文件所在的路径在哪里。
结果:
apiVersion: v1
data:
credential.yaml: a2V5MTogdmFsdWUxCmtleTI6IHZhbHVlMg==
kind: Secret
metadata:
name: ocp-auth
type: Opaque
解码:
# echo "a2V5MTogdmFsdWUxCmtleTI6IHZhbHVlMg==" | base64 -D
key1: value1
key2: value2
2、如果需要将文件中的每个key作为data中的一个item,可以这样写:
apiVersion: v1
kind: Secret
metadata:
name: {{ include "ocp-auth.fullname" . }}
type: Opaque
data:
{{- range .Files.Lines "data/credential.yaml" }}
{{- range $i, $v := . | split ":" }}
{{- if eq $i "_0" }}
{{ $v }}:
{{- else }}
{{ $v | trim | b64enc }}
{{- end }}
{{- end }}
{{- end }}
结果:
apiVersion: v1
data:
key1: dmFsdWUx
key2: dmFsdWUy
kind: Secret
metadata:
name: ops-auth
type: Opaque
解码:
# echo "dmFsdWUx" | base64 -D
value1
# echo "dmFsdWUy" | base64 -D
value2
这种写法限制较多,不推荐。首先,它只能处理单行数据。其次,它假设这一行中只有一个“:”。
推荐阅读
- r - 使用 R 和 Leaflet,我怎样才能让我的地图显示用逗号格式化的数字?
- angular - canActivate 订阅前返回
- javascript - 尝试编写一个不和谐的音乐机器人,我得到一个无法将“null”转换为 int
- python - 如何将我的 Python 方法合并到 Kivy 代码中?
- html - 为什么媒体在手机屏幕上工作?
- java - 如何使用 MediaStore 删除文件?
- google-cloud-platform - 如何在现有网站的子域上托管 Google Cloud Platform 项目?
- sql - JSON 中的 UPDATE 命令
- php - 在 WordPress 中使用 get_template_part 会删除我的页脚
- r - 一个简单的问题:如何使用“rtweets”包在指定时间下载推文?