razorpay/kubestashkubestash 是一个用于将 Credstash 密钥推送到 Kubernetes 的工具,可实现 Credstash 存储的密钥与 Kubernetes Secret 的同步,方便在 Kubernetes 环境中管理和使用这些密钥。
bashpip3 install kubestash
bashkubestash push [-h] [-p PROXY] [-v] [--trace] [-f] [-n NAMESPACE] [-l] [-c CONTEXT] [-r REGION] table secret
| 参数 | 描述 |
|---|---|
| table | 要拉取密钥的 Credstash 表名 |
| secret | 目标 Kubernetes Secret 名称 |
| 参数 | 描述 |
|---|---|
| -h, --help | 显示帮助信息并退出 |
| -p PROXY, --proxy PROXY | Kubernetes API 服务器主机名,例如:--proxy 127.0.0.1:8080 |
| -v, --verbose | 启用详细输出模式 |
| --trace | 发生 SSLError 时显示完整堆栈跟踪 |
| -f, --force | 强制替换已存在的 Secret |
| --preserve-metadata | 替换 Secret 时保留对象元数据 |
| -n NAMESPACE, --namespace NAMESPACE | 指定 Kubernetes 命名空间 |
| -U, --uppercase | 将 Credstash 中的小写密钥转换为大写环境变量(UPPER_CASE) |
| -l, --lowercase | 将 SECRET 密钥转换为小写并将 "_" 转换为 "-"(DNS_SUBDOMAIN),用于兼容旧版 Kubernetes(已弃用) |
| -c CONTEXT, --context CONTEXT | 指定 Kubernetes 上下文 |
| -r REGION, --region REGION | 指定 AWS 区域 |
将以下配置添加到容器定义中,从 Secret 导入环境变量:
yamlenvFrom: - secretRef: name: secret-name # 替换为实际的 Secret 名称
示例配置可参考 test/example.deploy.yaml。
kubestash 适用于以下场景:
手动将 Credstash 表中的密钥推送到 Kubernetes Secret:
bashkubestash push -v TABLE SECRET
通过 daemon 模式监控 DynamoDB 更新并自动同步:
bashkubestash daemon -v TABLE SECRET
该模式利用 DynamoDB Streams 监控 Credstash 表变化,密钥更新时自动触发同步。
Kubernetes Secret 密钥名称需符合以下规范:
使用 credstash -t=table put KEY VALUE 时,需确保 KEY 符合上述约束。对于旧版 Kubernetes,可使用 -l --lowercase 标志转换密钥格式(已弃用)。
[1] []
[2] []
使用旧版 Python 时可能出现以下 SSL 错误:
SSLError(SSLError(1, u'[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)'),)
bashbrew update brew install openssl brew uninstall python3 brew install python3
bashkubectl proxy -p 8080 kubestash --proxy 127.0.0.1:8080 table secret

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务