Couchbase Sync Gateway采用mTLS认证时随机失败求助
排查与解决建议
这类问题属于K8S环境下Sync Gateway切换mTLS认证时的常见部署配置问题,并非核心组件的已知BUG,可按以下步骤排查:
1. 检查证书挂载与权限
- K8S中通过Secret挂载证书时,可能存在挂载延迟,导致Pod启动初期Sync Gateway无法读取到证书文件,引发认证失败。可添加Init容器等待证书就绪:
initContainers: - name: wait-for-certs image: busybox:1.35 command: ['sh', '-c', 'until [ -f /etc/certs/truststore.pem ] && [ -f /etc/certs/sg_client.pem ] && [ -f /etc/certs/sg_client.key ]; do echo waiting for certs; sleep 2; done;'] volumeMounts: - name: certs-volume mountPath: /etc/certs - 验证证书文件权限:确保Sync Gateway运行用户有读取权限,可在Init容器中添加权限配置:
chown sg-user:sg-group /etc/certs/* chmod 644 /etc/certs/truststore.pem /etc/certs/sg_client.pem chmod 400 /etc/certs/sg_client.key
2. 验证Couchbase Server的mTLS配置
- 确认Couchbase的
client_cert_auth已设置为required或enabled,允许客户端证书认证; - 检查Sync Gateway的客户端证书是否已导入到Couchbase的信任根池中,确保证书链完整有效(无过期、CN/SAN与Couchbase地址匹配)。
3. 清理旧连接池
切换认证方式后,Sync Gateway可能复用了旧的用户名密码连接池,导致初期请求认证失败。可:
- 在配置中临时添加
"max_connections": 0(测试后调整为合理值),强制关闭旧连接; - 重启Pod时添加清理逻辑,确保所有旧连接被销毁。
4. 查看详细日志
- 检查Couchbase Server对应时间点的认证日志,获取更具体的失败原因(如证书验证不通过、客户端证书未被信任等);
- 开启Sync Gateway的Debug日志,查看连接建立阶段的详细过程,定位是否存在证书读取或握手失败的情况。
内容的提问来源于stack exchange,提问作者João Casarin
相关产品推荐
相关产品推荐

