Kubernetes + consul: kv.get: connect ETIMEDOUT

1/28/2021

I have deployed consul using hashicorp-consul-helm-chart now, I want to connect to the consul from my Node.js project.

Therefore, I created an object like this : (using 'consul' npm package)

import consul from 'consul';

var consulObj = new consul({
  host: 'xxx.xxx.xxx.xxx',
  promisify: true
});

var watch = consulObj.watch({
  method: consulObj.kv.get,
  options: { key: 'config' },
  backoffFactor: 1000,
});

I have got the host value from kubectl get endpoints used the value opposite to consul-server

enter image description here

still, i get consul: kv.get: connect ETIMEDOUT when I run the code. what could be the reason? Thanks in advance!

-- Keval Bhogayata
consul
kubernetes
node.js

1 Answer

1/28/2021

You should be accessing the Consul client which is running on the node where your app is located instead of directly accessing the server.

Details can be found in the accepted answer for https://stackoverflow.com/questions/64770593/hashicorp-consul-agent-client-access/64780058#64780058.

-- Blake Covarrubias
Source: StackOverflow