必须对明文使用echo -n加base64编码,确保data字段值为长度是4整数倍、仅含a–z/a–z/0–9/+//=的合法base64字符串,否则kubectl apply会因illegal base64 data报错拒绝创建。

在 Kubernetes 中为数据库凭证、API 密钥等敏感信息创建 Secret 时,必须确保 data 字段中的值是合法 Base64 编码——否则 kubectl apply 会直接报错并拒绝创建,且不会提示具体哪一字段非法。
确认明文内容并生成合法 Base64 编码
先准备好要存入 Secret 的明文,例如用户名 admin 和密码 S3cre!2023。注意:echo 默认会加换行符,导致编码后末尾多出 Kgo= 类似字符,引发 illegal base64 data 错误。
执行以下命令(-n 参数必须加上):
echo -n "admin" | base64 → 输出 YWRtaW4=
echo -n "S3cre!2023" | base64 → 输出 UzNjcmUhMjAyMwo=
验证编码合法性:结果长度必须是 4 的整数倍,且只含 A–Z、a–z、0–9、+、/、=。若出现空格或换行,说明 echo 没加 -n,需重做。
编写 Secret YAML 文件
新建文件 db-secret.yaml,内容如下:
apiVersion: v1
kind: Secret
metadata:
name: db-creds
namespace: default
type: Opaque
data:
username: YWRtaW4=
password: UzNjcmUhMjAyMwo=
注意:data 下的键名(如 username)将作为挂载后文件名或环境变量名;值必须是你上一步生成的、无多余字符的 Base64 字符串;不能写成明文,也不能漏掉等号。
应用 YAML 创建 Secret
运行命令:
kubectl apply -f db-secret.yaml
若输出 secret/db-creds created 或 configured,表示成功。若报错,请回溯检查 Base64 是否含换行、空格或长度非 4 倍数。
验证是否生效:
kubectl get secret db-creds -o yaml
观察 data 字段是否与你填入的一致;解码验证可执行:echo "YWRtaW4=" | base64 -d,应输出 admin。











