有没有办法将秘密 tls crt/key 与文件链接起来?
apiVersion: v1
kind: Secret
metadata:
name: hello-app-tls
namespace: dev
type: kubernetes.io/tls
data:
tls.crt: <crt_filePath>
tls.key: <key_filePath>
或者引用 ConfigMap 中的值,例如:
apiVersion: v1
kind: Secret
metadata:
name: hello-app-tls
namespace: dev
type: kubernetes.io/tls
data:
tls.crt:
valueFrom:
configMapKeyRef:
name: configmap_tls
key: crt
tls.key:
valueFrom:
configMapKeyRef:
name: configmap_tls
key: key
错误:
Secret in version "v1" cannot be handled as a Secret: json: cannot unmarshal object into Go struct field Secret.data of type []uint8
答案1
关于将字符串解组为字符串映射的神秘错误意味着模块无法将值参数的内容解析为实际文件的内容。这导致了问题。
在您的机密中,您不能直接提供数据。您必须以 base64 格式对数据进行编码。
正如在 github 中提到的关联由@MadEngineX,尝试在数据字段运行以下命令:
tls.crt: {{ .Files.Get "api-gateway/google/files/tls.crt" | b64enc | quote }}
或者
tls.crt: {{ .Files.Get "api-gateway/google/files/tls.crt" | toString | b64enc | quote }}
例子-
apiVersion: v1
kind: Secret
metadata:
name: hello-app-tls
namespace: dev
type: kubernetes.io/tls
data:
tls.crt: {{ .Files.Get "api-gateway/google/files/tls.crt" | b64enc | quote }}