Documentation ¶
Index ¶
- Constants
- Variables
- func CreateUpstreamsFromService(service *ServiceMeta, ...) []*v1.Upstream
- func DestinationToUpstreamRef(consulDest *v1.ConsulServiceDestination) *core.ResourceRef
- func IsConsulUpstream(upstreamName string) bool
- func NewConsulUpstreamClient(consul ConsulWatcher, ...) v1.UpstreamClient
- type ConsulClient
- type ConsulWatcher
- type ServiceMeta
Constants ¶
const UpstreamNamePrefix = "consul-svc:"
Variables ¶
var ForbiddenDataCenterErr = func(dataCenter string) error { return eris.Errorf("not allowed to query data center [%s]. "+ "Use the settings to configure the data centers Gloo is allowed to query", dataCenter) }
Functions ¶
func CreateUpstreamsFromService ¶ added in v1.6.0
func CreateUpstreamsFromService(service *ServiceMeta, consulConfig *v1.Settings_ConsulUpstreamDiscoveryConfiguration) []*v1.Upstream
This function normally returns 1 upstream. It instead returns two upstreams if both automatic tls discovery and service-splitting is on for consul, and this service's tag list contains the tag specified by the tlsTagName config. In this case, it returns 2 upstreams that are identical save for the presence of the tlsTagName in the instanceTags array for the tls upstream, and the same value in the instanceBlacklistTags array for the non-tls upstream.
func DestinationToUpstreamRef ¶
func DestinationToUpstreamRef(consulDest *v1.ConsulServiceDestination) *core.ResourceRef
func IsConsulUpstream ¶
func NewConsulUpstreamClient ¶
func NewConsulUpstreamClient(consul ConsulWatcher, consulDiscoveryConfig *v1.Settings_ConsulUpstreamDiscoveryConfiguration) v1.UpstreamClient
This client can list and watch Consul services. A Gloo upstream will be generated for each unique Consul service name. The Consul EDS will discover and characterize all endpoints for each one of these upstreams across the available data centers.
NOTE: any method except List and Watch will panic!
Types ¶
type ConsulClient ¶
type ConsulClient interface { // DataCenters is used to query for all the known data centers. // Results will be filtered based on the data center whitelist provided in the Gloo settings. DataCenters() ([]string, error) // Services is used to query for all known services Services(q *consulapi.QueryOptions) (map[string][]string, *consulapi.QueryMeta, error) // Service is used to query catalog entries for a given service Service(service, tag string, q *consulapi.QueryOptions) ([]*consulapi.CatalogService, *consulapi.QueryMeta, error) // Connect is used to query catalog entries for a given Connect-enabled service Connect(service, tag string, q *consulapi.QueryOptions) ([]*consulapi.CatalogService, *consulapi.QueryMeta, error) }
TODO(marco): consider adding ctx to signatures instead on relying on caller to set it Wrap the Consul API in an interface to allow mocking
func NewConsulClient ¶
func NewConsulClient(client *consulapi.Client, dataCenters []string) (ConsulClient, error)
type ConsulWatcher ¶
type ConsulWatcher interface { ConsulClient WatchServices(ctx context.Context, dataCenters []string) (<-chan []*ServiceMeta, <-chan error) }
func NewConsulWatcher ¶
func NewConsulWatcher(client *consulapi.Client, dataCenters []string) (ConsulWatcher, error)
func NewConsulWatcherFromClient ¶
func NewConsulWatcherFromClient(client ConsulClient) ConsulWatcher
type ServiceMeta ¶
Data for a single consul service (not serviceInstance)