我有一个Docker容器,它公开了一个受基本身份验证保护的运行状况检查。我已经阅读了关于活动探测here的文档,但我找不到有关如何指定基本身份验证凭据的任何详细信息。这不是Kubernetes支持的吗?有没有解决方法?
答案 0 :(得分:13)
现在可以为活动探针添加标题:
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Authorization
value: Basic aGE6aGE=
值得注意的是:
如果浏览器使用Aladdin作为用户名而OpenSesame作为 密码,然后字段的值是base64编码 阿拉丁:OpenSesame,或QWxhZGRpbjpPcGVuU2VzYW1l。那么 授权标题将显示为:
授权:基本QWxhZGRpbjpPcGVuU2VzYW1l
来源:https://en.wikipedia.org/wiki/Basic_access_authentication
您可以在shell中使用命令base64
来创建此字符串:
echo -n "Aladdin:OpenSesame" | base64
答案 1 :(得分:5)
对经过身份验证的HTTP探测没有直接支持。如果您无法公开未经身份验证的运行状况检查(在集群内部IP上),那么我认为您最好的选择是使用ExecAction的探测,以及如下命令:
curl -G --fail --silent --output=/dev/null -u ${AUTH_USER}:${AUTH_PASSWD} localhost:${AUTH_PORT}
请注意,该命令在运行状况检查的容器中执行,因此如果设置为绕过auth进行localhost连接,则需要执行稍微不同的操作。
答案 2 :(得分:0)
我也遇到了这个问题,我使用了Openshift的 TCP Socket Checks 。您必须提供运行服务器的端口。
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 15
timeoutSeconds: 1