如何在 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>
更改为它们的值。
注意:解决方案可以使用 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>
更改为它们的值。