使用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
相关产品推荐
相关产品推荐

