【发布时间】:2021-06-17 19:23:17
【问题描述】:
我有一个舵图,我需要在安装所有资源之前创建一个文件,以便能够将其存储在一个秘密中。我一直在阅读有关 Helm Hooks 的内容,我想我可以创建一个钩子,插入我的脚本文件,运行我的脚本并生成我需要的文件,我迷失的是如何将我的文件从 pod 中取出并插入作为一个秘密。
这些是我的钩子:
脚本的秘密钩子:
apiVersion: v1
kind: Secret
metadata:
name: hlf-genesis-block
namespace: hlf
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-weight": "0"
"helm.sh/hook-delete-policy": hook-succeeded
type: Opaque
data:
createfile.sh: |-
{{ .Files.Get "scripts/createfile.sh" | b64enc }}
工作挂钩:
apiVersion: batch/v1
kind: Job
metadata:
name: "post-install-hook"
annotations:
"helm.sh/hook": post-install
"helm.sh/hook-weight": "1"
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
spec:
volumes:
- name: scripts
secret:
secretName: scripts
restartPolicy: Never
containers:
- name: channel-config
image: "ubuntu:20.04"
command: ["bash", "-c", "
domainname=\"{{ .Values.domainName }}\"
./createfile.sh \"$domainname\"
"]
volumeMounts:
- mountPath: /home/
name: scripts
readOnly: true
最终机密文件:
apiVersion: v1
kind: Secret
metadata:
name: hlf-genesis-block
namespace: hlf
type: Opaque
data:
secret.txt: |-
{{ .Files.Get "generatedfile.txt" | b64enc }}
我在想也许像在工作中使用类似这样的东西来分配一个变量:
{{ $secret := echo generatedfile.txt }}
但是我还没有找到它的功能,或者暂时映射一个卷,但即使这样我也无法弄清楚如何从我的工作或临时存储中取出秘密,作为 . Files.Get 从运行 kubectl 的地方工作...
或者也许从作业内部运行 kubectl 来创建秘密?虽然那样我将无法在卸载时删除秘密。
任何想法都会很棒。
谢谢
编辑:
是否可以通过修改映射的秘密卷来修改秘密值?我要试试。
【问题讨论】:
标签: kubernetes-helm