...
1 package client
2
3 import (
4 "context"
5
6 "github.com/linkerd/linkerd2/pkg/k8s"
7 pb "github.com/linkerd/linkerd2/viz/metrics-api/gen/viz"
8 "go.opencensus.io/plugin/ocgrpc"
9 "google.golang.org/grpc"
10 "google.golang.org/grpc/credentials/insecure"
11 )
12
13 const (
14 apiPort = 8085
15 apiDeployment = "metrics-api"
16 )
17
18
19
20 func NewInternalClient(addr string) (pb.ApiClient, error) {
21 conn, err := grpc.NewClient(addr, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithStatsHandler(&ocgrpc.ClientHandler{}))
22 if err != nil {
23 return nil, err
24 }
25
26 return pb.NewApiClient(conn), nil
27 }
28
29
30
31 func NewExternalClient(ctx context.Context, namespace string, kubeAPI *k8s.KubernetesAPI) (pb.ApiClient, error) {
32 portforward, err := k8s.NewPortForward(
33 ctx,
34 kubeAPI,
35 namespace,
36 apiDeployment,
37 "localhost",
38 0,
39 apiPort,
40 false,
41 )
42 if err != nil {
43 return nil, err
44 }
45
46 addr := portforward.AddressAndPort()
47 if err = portforward.Init(); err != nil {
48 return nil, err
49 }
50
51 conn, err := grpc.NewClient(addr, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithStatsHandler(&ocgrpc.ClientHandler{}))
52 if err != nil {
53 return nil, err
54 }
55
56 return pb.NewApiClient(conn), nil
57 }
58
View as plain text