...

Source file src/github.com/linkerd/linkerd2/viz/metrics-api/client/client.go

Documentation: github.com/linkerd/linkerd2/viz/metrics-api/client

     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  // NewInternalClient creates a new Viz API client intended to run inside a
    19  // Kubernetes cluster.
    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  // NewExternalClient creates a new Viz API client intended to run from
    30  // outside a Kubernetes cluster.
    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