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

How can I ping a password protected Redis server using netcat in an initContainer?

注意:解决方案可以使用 netcat 或任何其他内置 Linux 实用程序

我需要实施一个 initContainer 和 liveness 探测器来确认我的 redis pod 是否适合我的 redis 依赖 pods。我已经尝试了作为答案 ((printf "PING\r\n"; sleep 1) | nc 10.233.38.133 6379) 提供的 netcat 解决方案,但我收到 -NOAUTH Authentication required. 错误响应。有办法解决这个问题吗?我知道我可以在我的 Django 代码中安装 redis-cli 或创建管理命令,但我不想这样做。我也不想为我的 Redis 实例实现 Web 服务器并使用 curl 命令。

您始终可以将 AUTH 命令作为探测的一部分发送,例如:

`"AUTH ....\r\nPING\r\n"`

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

这是您可以使用的 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> 更改为它们的值。