code: func createDesignateServiceClient() (*gophercloud.ServiceClient, error) {
  	opts, err := getAuthSettings()
  	if err != nil {
  		return nil, err
  	}
  	log.Infof("Using OpenStack Keystone at %s", opts.IdentityEndpoint)
  	authProvider, err := openstack.NewClient(opts.IdentityEndpoint)
  	if err != nil {
  		return nil, err
  	}
  
  	tlsConfig, err := tlsutils.CreateTLSConfig("OPENSTACK")
  	if err != nil {
  		return nil, err
  	}
  
  	transport := &http.Transport{
  		Proxy: http.ProxyFromEnvironment,
  		DialContext: (&net.Dialer{
  			Timeout:   30 * time.Second,
  			KeepAlive: 30 * time.Second,
  		}).DialContext,
  		MaxIdleConns:          100,
  		IdleConnTimeout:       90 * time.Second,
  		TLSHandshakeTimeout:   10 * time.Second,
  		ExpectContinueTimeout: 1 * time.Second,
  		TLSClientConfig:       tlsConfig,
  	}
  	authProvider.HTTPClient.Transport = transport
  
  	if err = openstack.Authenticate(authProvider, opts); err != nil {
  		return nil, err
  	}
  
  	eo := gophercloud.EndpointOpts{
  		Region: os.Getenv("OS_REGION_NAME"),
  	}
  
  	client, err := openstack.NewDNSV2(authProvider, eo)
  	if err != nil {
  		return nil, err
  	}
  	log.Infof("Found OpenStack Designate service at %s", client.Endpoint)
  	return client, nil
  }
docs: // authenticate in OpenStack and obtain Designate service endpoint