kubernetes:如何将秘密 tls crt/key 与文件或 configMap 链接?

kubernetes:如何将秘密 tls crt/key 与文件或 configMap 链接?

有没有办法将秘密 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  }}

相关内容