如何在Kubernetes的HTTP活跃度探测中使用基本身份验证?

Joh*_*han 9 kubernetes

我有一个Docker容器,它公开了一个受基本身份验证保护的运行状况检查.我读过活跃度探头的文件在这里,但我找不到如何指定基本身份验证凭据的任何细节.这不是Kubernetes支持的吗?有没有解决方法?

DDS*_*DDS 20

现在可以为活动探针添加标头:

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
    httpHeaders:
      - name: Authorization
        value: Basic aGE6aGE=
Run Code Online (Sandbox Code Playgroud)

值得注意的是:

如果浏览器使用Aladdin作为用户名并使用OpenSesame作为密码,那么该字段的值是Aladdin:OpenSesame或QWxhZGRpbjpPcGVuU2VzYW1l的base64编码.然后Authorization标头将显示为:

授权:基本QWxhZGRpbjpPcGVuU2VzYW1l

资料来源:https://en.wikipedia.org/wiki/Basic_access_authentication

您可以base64在shell中使用该命令来创建此字符串:

echo -n "Aladdin:OpenSesame" | base64
Run Code Online (Sandbox Code Playgroud)


Tim*_*air 5

对经过身份验证的HTTP探测没有直接支持.如果您无法公开未经身份验证的运行状况检查(在集群内部IP上),那么我认为您最好的选择是使用带有ExecAction的探测器,以及如下命令:

curl -G --fail --silent --output=/dev/null -u ${AUTH_USER}:${AUTH_PASSWD} localhost:${AUTH_PORT}
Run Code Online (Sandbox Code Playgroud)

请注意,该命令在运行状况检查的容器内执行,因此如果设置为绕过auth进行localhost连接,则需要执行稍微不同的操作.