如何在 Kubernetes 的 HTTP 活性探测中使用基本身份验证?
How to use basic authentication in a HTTP liveness probe in Kubernetes?
我有一个 Docker 容器,它公开了受基本身份验证保护的健康检查。我已阅读有关 liveness probes here 的文档,但我找不到有关如何指定基本身份验证凭据的任何详细信息。 Kubernetes 不支持吗?有什么解决方法吗?
不直接支持经过身份验证的 HTTP 探测。如果您无法公开未经身份验证的健康检查(在集群内部 IP 上),那么我认为您最好的选择是使用带有 ExecAction 的探测器和如下命令:
curl -G --fail --silent --output=/dev/null -u ${AUTH_USER}:${AUTH_PASSWD} localhost:${AUTH_PORT}
请注意,该命令是在经过健康检查的容器内执行的,因此如果它设置为绕过本地主机连接的身份验证,您将需要做一些稍微不同的事情。
现在可以为活性探测添加 headers:
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Authorization
value: Basic aGE6aGE=
可能值得注意的是:
if the browser uses Aladdin as the username and OpenSesame as the
password, then the field's value is the base64-encoding of
Aladdin:OpenSesame, or QWxhZGRpbjpPcGVuU2VzYW1l. Then the
Authorization header will appear as:
Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l
来源:https://en.wikipedia.org/wiki/Basic_access_authentication
您可以在 shell 中使用命令 base64
来创建此字符串:
echo -n "Aladdin:OpenSesame" | base64
我也遇到了这个问题,我用的是Openshift的TCP Socket Checks。您必须提供服务器 运行.
所在的端口
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 15
timeoutSeconds: 1
我有一个 Docker 容器,它公开了受基本身份验证保护的健康检查。我已阅读有关 liveness probes here 的文档,但我找不到有关如何指定基本身份验证凭据的任何详细信息。 Kubernetes 不支持吗?有什么解决方法吗?
不直接支持经过身份验证的 HTTP 探测。如果您无法公开未经身份验证的健康检查(在集群内部 IP 上),那么我认为您最好的选择是使用带有 ExecAction 的探测器和如下命令:
curl -G --fail --silent --output=/dev/null -u ${AUTH_USER}:${AUTH_PASSWD} localhost:${AUTH_PORT}
请注意,该命令是在经过健康检查的容器内执行的,因此如果它设置为绕过本地主机连接的身份验证,您将需要做一些稍微不同的事情。
现在可以为活性探测添加 headers:
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Authorization
value: Basic aGE6aGE=
可能值得注意的是:
if the browser uses Aladdin as the username and OpenSesame as the password, then the field's value is the base64-encoding of Aladdin:OpenSesame, or QWxhZGRpbjpPcGVuU2VzYW1l. Then the Authorization header will appear as:
Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l
来源:https://en.wikipedia.org/wiki/Basic_access_authentication
您可以在 shell 中使用命令 base64
来创建此字符串:
echo -n "Aladdin:OpenSesame" | base64
我也遇到了这个问题,我用的是Openshift的TCP Socket Checks。您必须提供服务器 运行.
所在的端口livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 15
timeoutSeconds: 1