K8S

1 Example

获取K8S信息K8S - 图1 (opens new window) 根据K8S endpoints调用gRPCK8S - 图2 (opens new window)

2 K8S配置

  1. type Config struct {
  2. Addr string // 地址
  3. Debug bool // 调试信息
  4. Token string // token信息
  5. Namespaces []string // 命名空间列表
  6. DeploymentPrefix string // 前缀
  7. TLSClientConfigInsecure bool // 是否开启tls
  8. }

3 默认配置

  • host: KUBERNETES_SERVICE_HOST 环境变量
  • port: KUBERNETES_SERVICE_PORT 环境变量
  • token: /var/run/secrets/kubernetes.io/serviceaccount/token 文件路径

4 获取K8S信息

5 根据K8S信息,调用gRPC

5.1 K8S配置

  1. [k8s]
  2. addr=""
  3. token=""
  4. namespaces=["default"]
  5. [grpc.test]
  6. debug = true # 开启后并加上export EGO_DEBUG=true,可以看到每次grpc请求,配置名、地址、耗时、请求数据、响应数据
  7. addr = "k8s:///test:9090"
  8. #balancerName = "round_robin" # 默认值
  9. #dialTimeout = "1s" # 默认值
  10. #enableAccessInterceptor = true
  11. #enableAccessInterceptorRes = true
  12. #enableAccessInterceptorReq = true

5.2 用户代码

配置创建一个 k8s 的配置项,其中内容按照上文配置进行填写。以上这个示例里这个配置key是k8s

代码中创建一个 k8s 客户端, ek8s.Load("k8s").Build(),代码中的 key 和配置中的 key 要保持一致。创建完 k8s 客户端后, 将他添加到你所需要的Registry里即可。

  1. // 构建k8s registry,并注册为grpc resolver
  2. registry.DefaultContainer().Build(registry.WithClient(ek8s.Load("k8s").Build()))
  3. // 构建gRPC.ClientConn组件
  4. grpcConn := egrpc.Load("grpc.test").Build()
  5. // 构建gRPC Client组件
  6. grpcComp := helloworld.NewGreeterClient(grpcConn.ClientConn)
  7. fmt.Printf("client--------------->"+"%+v\n", grpcComp)