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

时间:2015-11-02 19:01:29

标签: kubernetes

我有一个Docker容器,它公开了一个受基本身份验证保护的运行状况检查。我已经阅读了关于活动探测here的文档,但我找不到有关如何指定基本身份验证凭据的任何详细信息。这不是Kubernetes支持的吗?有没有解决方法?

3 个答案:

答案 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

TCP Liveness Probe on kubernetes