k8s resolver for @grpc/grpc-js
$ yarn add @zcong/grpc-resolver-k8s
# or npm
$ npm i @zcong/grpc-resolver-k8s --save
Make sure the client pod service account have enough permissions to access k8s resource endpoints. Can see account.yaml.
import { K8sScheme, setup } from '@zcong/grpc-resolver-k8s'
setup()
const serviceName = process.env.SERVICE_NAME || 'test-grpc-server'
const servicePort = process.env.SERVICE_PORT || '8080'
const serviceNs = process.env.SERVICE_NS || 'default'
const main = async () => {
const c = new HelloClient(
`${K8sScheme}://${serviceNs}/${serviceName}:${servicePort}`, // use service name with K8sScheme
grpc.credentials.createInsecure(),
{ 'grpc.service_config': '{"loadBalancingConfig": [{"round_robin": {}}]}' } // don't forget use round_robin lb, default is pick first
)
}
For more details, please check example.
Set env GRPC_NODE_TRACE=k8s_resolver
and GRPC_NODE_VERBOSITY=DEBUG
.
MIT © zcong1993