func InitETCDClient()

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
}