Consul is a distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

42 lines
982 B

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package sprawl
import (
"context"
"crypto/tls"
"fmt"
"github.com/hashicorp/go-rootcerts"
"google.golang.org/grpc"
"github.com/hashicorp/consul/testing/deployer/sprawl/internal/secrets"
"github.com/hashicorp/consul/testing/deployer/topology"
"github.com/hashicorp/consul/testing/deployer/util"
)
func (s *Sprawl) dialServerGRPC(cluster *topology.Cluster, node *topology.Node, token string) (*grpc.ClientConn, func(), error) {
var (
logger = s.logger.With("cluster", cluster.Name)
)
tls := &tls.Config{
ServerName: fmt.Sprintf("server.%s.consul", cluster.Datacenter),
}
rootConfig := &rootcerts.Config{
CACertificate: []byte(s.secrets.ReadGeneric(cluster.Name, secrets.CAPEM)),
}
if err := rootcerts.ConfigureTLS(tls, rootConfig); err != nil {
return nil, nil, err
}
return util.DialExposedGRPCConn(
context.Background(),
logger,
node.ExposedPort(8503),
token,
tls,
)
}