We are using Kubernetes DNS as HAProxy DNS resolver in config file for resolve service Redis pod DNS name in Kubernetes cluster.
Now, we are set server
base on DNS hostname, but tcp-check send
command return service pod IP in http content. I need to compare this IP address with expected DNS hostname.
I tried as follow:
resolvers kubedns
nameserver namedns kube-dns.kube-system.svc.cluster.local:53
backend check_sentinel_vote_0
option tcp-check
tcp-check send PING\r\n
tcp-check expect string +PONG
tcp-check send SENTINEL\ get-master-addr-by-name\ myredismaster\r\n <--- return "10.38.0.5"
tcp-check expect string redis-0.redis.default.svc.cluster.local <--- expected this DNS hostname IP
tcp-check send QUIT\r\n
tcp-check expect string +OK
server redis-0 redis-0.redis.default.svc.cluster.local:26379
server redis-1 redis-1.redis.default.svc.cluster.local:26379
server redis-2 redis-2.redis.default.svc.cluster.local:26379
backend check_sentinel_vote_1
option tcp-check
tcp-check send PING\r\n
tcp-check expect string +PONG
tcp-check send SENTINEL\ get-master-addr-by-name\ myredismaster\r\n
tcp-check expect string redis-1.redis.default.svc.cluster.local
tcp-check send QUIT\r\n
tcp-check expect string +OK
server redis-0 redis-0.redis.default.svc.cluster.local:26379
server redis-1 redis-1.redis.default.svc.cluster.local:26379
server redis-2 redis-2.redis.default.svc.cluster.local:26379
backend check_sentinel_vote_2
option tcp-check
tcp-check send PING\r\n
tcp-check expect string +PONG
tcp-check send SENTINEL\ get-master-addr-by-name\ myredismaster\r\n
tcp-check expect string redis-2.redis.default.svc.cluster.local
tcp-check send QUIT\r\n
tcp-check expect string +OK
server redis-0 redis-0.redis.default.svc.cluster.local:26379
server redis-1 redis-1.redis.default.svc.cluster.local:26379
server redis-2 redis-2.redis.default.svc.cluster.local:26379
127.0.0.1:26379> SENTINEL get-master-addr-by-name
command return:
1) "10.38.0.5"
2) "6379"
How can I resolve my redis-0.redis.default.svc.cluster.local
DNS hostname IP as expected IP returned by tcp-check expect string
? How can I put some expression (as do-resolve
) before tcp-check expect string
?