如何在initContainer中使用netcat ping一个密码保护的Redis服务器?

3
注意:解决方案可以使用netcat或任何其他内置的Linux实用程序
我需要实现一个initContainer和liveness探针,以确认我的redis pod是否为我的一个redis依赖pod所需。我尝试了在这里提供的netcat解决方案((printf "PING\r\n"; sleep 1) | nc 10.233.38.133 6379),但是我得到了-NOAUTH需要身份验证。的错误响应。有什么办法绕过这个问题吗?我知道我可以安装redis-cli或在我的Django代码中创建一个管理命令,但我不想这样做。我也不想为我的Redis实例实现一个Web服务器并使用curl命令。
2个回答

8
您可以将AUTH命令作为探测的一部分发送,例如:
`"AUTH ....\r\nPING\r\n"`

除非你从服务器获取INFO,否则你似乎不关心响应的性质,因此不需要进行身份验证,只需测试NOAUTH即可。


好主意,但我还想确认密码是否正确。 - undefined
这就是为什么我建议在那里添加一行新代码。 - undefined
2
接受为答案。最终解决方案 (printf "AUTH <password>\r\n"; sleep 1) | nc <redis IP> 6379 - undefined

0
这是你可以使用的initContainers段落:
  initContainers:
    - name: wait-for-redis
      image: busybox
      command:
      - /bin/sh
      - -c
      - >
        set -x;
        until ((printf "AUTH <password>\r\n"; sleep 1) | nc <redis-host> 6379);
        do echo waiting for redis;
        sleep 2; done

只是别忘了将<redis-host><password>更改为它们的值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接