in api/internal/core/storage/etcd.go [57:88]
func InitETCDClient(etcdConf *conf.Etcd) error {
config := clientv3.Config{
Endpoints: etcdConf.Endpoints,
DialTimeout: 5 * time.Second,
Username: etcdConf.Username,
Password: etcdConf.Password,
}
// mTLS
if etcdConf.MTLS != nil && etcdConf.MTLS.CaFile != "" &&
etcdConf.MTLS.CertFile != "" && etcdConf.MTLS.KeyFile != "" {
tlsInfo := transport.TLSInfo{
CertFile: etcdConf.MTLS.CertFile,
KeyFile: etcdConf.MTLS.KeyFile,
TrustedCAFile: etcdConf.MTLS.CaFile,
}
tlsConfig, err := tlsInfo.ClientConfig()
if err != nil {
return err
}
config.TLS = tlsConfig
}
cli, err := clientv3.New(config)
if err != nil {
log.Errorf("init etcd failed: %s", err)
return fmt.Errorf("init etcd failed: %s", err)
}
etcdClient = cli
utils.AppendToClosers(Close)
return nil
}