You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Kubernetes Secret作为SQLCMD密码时始终为空的问题求助

Kubernetes Secret作为SQLCMD密码时始终为空的问题求助

我最近碰到个特别头疼的问题:想通过Kubernetes Secret来存储SQL Server的SA密码,结果不管试什么语法、什么方法,启动脚本里拿到的密码始终是空的!但要是直接把密码硬编码进脚本,所有操作都能正常跑,完全没毛病。

我已经确认Pod是能访问这个Secret的——在Pod里执行kubectl exec -it podname -- printenv MSSQL_SA_PASSWORD,能正常输出存在Secret里的密码,说明环境变量确实已经注入到Pod里了啊。

下面是我写的启动SQL Server的健康检查脚本start-sql.sh:

#!/bin/bash

# Start SQL Server in the background
/opt/mssql/bin/sqlservr &

echo "The password being used is: $MSSQL_SA_PASSWORD"
echo "Waiting for SQL Server to start..."
for i in {1..120}; do
  /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "$MSSQL_SA_PASSWORD" -Q "SELECT 1"
  if [ $? -eq 0 ]; then
    echo "SQL Server is up and running."
    break
  else
    echo -n "."
    sleep 1
  fi
done

脚本里的echo语句输出的密码是空值,导致后面的sqlcmd连接一直失败,但我明明已经验证过Pod能拿到这个环境变量了,有没有大佬能帮我看看这到底是哪里出问题了?

备注:内容来源于stack exchange,提问作者Snooker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:09:49