【问题标题】:Helm add secrets from another YAML fileHelm 从另一个 YAML 文件添加秘密
【发布时间】:2021-07-13 15:05:25
【问题描述】:

我有一个 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

【问题讨论】:

  • 您是否尝试将来自credential.yaml 的密钥、值引用到密钥中?

标签: kubernetes-helm helmfile


【解决方案1】:

1、如果使用文件名作为key,文件内容作为value,可以这样写:

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                                                                                            

这种写法限制较多,不推荐。 首先,它只能处理单行数据。其次,它假设这一行中只有一个 ':'。

helm doc

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 2019-06-04
    • 2018-05-12
    • 2021-08-03
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    相关资源
    最近更新 更多