clustergen

package
v0.0.0-...-32f485c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 19, 2024 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Overview

Package clustergen provides individual Cluster Generators to generate an xDS cluster config.

Index

Constants

This section is empty.

Variables

View Source
var (
	// IAMServerClusterName is the name of the IAM xDS cluster.
	IAMServerClusterName = "iam-cluster"
)
View Source
var (
	// MetadataServerClusterName is the name of the IMDS xDS cluster.
	MetadataServerClusterName = "metadata-cluster"
)
View Source
var (
	// ServiceControlClusterName is the name of the Service Control v1 xDS cluster.
	ServiceControlClusterName = "service-control-cluster"
)
View Source
var (
	// TokenAgentClusterName is the name of the token agent xDS cluster.
	TokenAgentClusterName = "token-agent-cluster"
)

Functions

func IsHTTPBackendEnabled

func IsHTTPBackendEnabled(rule *servicepb.BackendRule) *servicepb.BackendRule

IsHTTPBackendEnabled returns the sub-backend rule if the backend rule has an associated HTTP backend.

func MakeLocalBackendClusterName

func MakeLocalBackendClusterName(serviceConfig *servicepb.Service) string

func RemoteAddressToClusterName

func RemoteAddressToClusterName(address string) string

RemoteAddressToClusterName returns the corresponding remote backend cluster for the remote address.

Types

type ClusterGenerator

type ClusterGenerator interface {

	// GetName returns the debug name of the cluster.
	// May differ from actual xDS cluster name.
	GetName() string

	// GenConfig generates the full xDS cluster config.
	GenConfig() (*clusterpb.Cluster, error)
}

ClusterGenerator is an object that generates config for Envoy clusters.

func NewIAMClustersFromOPConfig

func NewIAMClustersFromOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)

NewIAMClustersFromOPConfig creates a IAMCluster from OP service config + descriptor + ESPv2 options. It is a ClusterGeneratorOPFactory.

func NewIMDSClustersFromOPConfig

func NewIMDSClustersFromOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)

NewIMDSClustersFromOPConfig creates a IMDSCluster from OP service config + descriptor + ESPv2 options. It is a ClusterGeneratorOPFactory.

func NewJWTProviderClustersFromOPConfig

func NewJWTProviderClustersFromOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)

NewJWTProviderClustersFromOPConfig creates all JWTProviderCluster from OP service config + descriptor + ESPv2 options. It is a ClusterGeneratorOPFactory.

Generates multiple clusters, one per each JWT provider address. Automatically de-duplicates multiple clusters with the same remote socket address.

func NewLocalBackendClustersFromOPConfig

func NewLocalBackendClustersFromOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)

NewLocalBackendClustersFromOPConfig creates a LocalBackendCluster from OP service config + descriptor + ESPv2 options. It is a ClusterGeneratorOPFactory.

func NewRemoteBackendClustersFromOPConfig

func NewRemoteBackendClustersFromOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)

NewRemoteBackendClustersFromOPConfig creates all RemoteBackendCluster from OP service config + descriptor + ESPv2 options. It is a ClusterGeneratorOPFactory.

Generates multiple clusters, 1 per remote backend. Automatically de-duplicates multiple clusters with the same remote socket address.

func NewServiceControlClustersFromOPConfig

func NewServiceControlClustersFromOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)

NewServiceControlClustersFromOPConfig creates a ServiceControlCluster from OP service config + descriptor + ESPv2 options. It is a ClusterGeneratorOPFactory.

func NewTokenAgentClustersFromOPConfig

func NewTokenAgentClustersFromOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)

NewTokenAgentClustersFromOPConfig creates a TokenAgentCluster from OP service config + descriptor + ESPv2 options. It is a ClusterGeneratorOPFactory.

type ClusterGeneratorOPFactory

type ClusterGeneratorOPFactory func(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)

ClusterGeneratorOPFactory is the factory function to create an ordered slice of ClusterGenerator from One Platform config.

The majority of factories will only return 1 ClusterGenerator, but they should be encapsulated by a slice for generalization.

type IAMCluster

type IAMCluster struct {
	IamURL                string
	ClusterConnectTimeout time.Duration

	DNS *helpers.ClusterDNSConfiger
	TLS *helpers.ClusterTLSConfiger
}

IAMCluster is an Envoy cluster to communicate with the GCP Cloud IAM. This is primarily used to generate access tokens and ID tokens for API Gateway use case.

func (*IAMCluster) GenConfig

func (c *IAMCluster) GenConfig() (*clusterpb.Cluster, error)

GenConfig implements the ClusterGenerator interface.

func (*IAMCluster) GetName

func (c *IAMCluster) GetName() string

GetName implements the ClusterGenerator interface.

type IMDSCluster

type IMDSCluster struct {
	MetadataURL           string
	ClusterConnectTimeout time.Duration

	DNS *helpers.ClusterDNSConfiger
	TLS *helpers.ClusterTLSConfiger // Not sure why IMDS would ever be TLS...
}

IMDSCluster is an Envoy cluster to communicate with the GCP Compute Engine Instance Metadata Service. This is primarily used to generate access tokens and ID tokens.

func (*IMDSCluster) GenConfig

func (c *IMDSCluster) GenConfig() (*clusterpb.Cluster, error)

GenConfig implements the ClusterGenerator interface.

func (*IMDSCluster) GetName

func (c *IMDSCluster) GetName() string

GetName implements the ClusterGenerator interface.

type JWTProviderCluster

type JWTProviderCluster struct {
	ID                    string
	JWKSURI               string
	ClusterConnectTimeout time.Duration

	DNS *helpers.ClusterDNSConfiger
	TLS *helpers.ClusterTLSConfiger
}

JWTProviderCluster is an Envoy cluster to communicate with a remote JWKS provider. Each cluster talks to one remote server.

func (*JWTProviderCluster) GenConfig

func (c *JWTProviderCluster) GenConfig() (*clusterpb.Cluster, error)

GenConfig implements the ClusterGenerator interface.

func (*JWTProviderCluster) GetName

func (c *JWTProviderCluster) GetName() string

GetName implements the ClusterGenerator interface.

type LocalBackendCluster

type LocalBackendCluster struct {
	BackendCluster *helpers.BaseBackendCluster
	GRPCHealth     *helpers.ClusterGRPCHealthCheckConfiger
}

LocalBackendCluster is an Envoy cluster to communicate with a local backend that speaks HTTP (OpenAPI) or gRPC (service config) protocol.

func (*LocalBackendCluster) GenConfig

func (c *LocalBackendCluster) GenConfig() (*clusterpb.Cluster, error)

GenConfig implements the ClusterGenerator interface.

func (*LocalBackendCluster) GetName

func (c *LocalBackendCluster) GetName() string

GetName implements the ClusterGenerator interface.

type RemoteBackendCluster

type RemoteBackendCluster struct {
	BackendCluster *helpers.BaseBackendCluster
}

RemoteBackendCluster is an Envoy cluster to communicate with remote backends via dynamic routing. Primarily for API Gateway use case.

func (*RemoteBackendCluster) GenConfig

func (c *RemoteBackendCluster) GenConfig() (*clusterpb.Cluster, error)

GenConfig implements the ClusterGenerator interface.

func (*RemoteBackendCluster) GetName

func (c *RemoteBackendCluster) GetName() string

GetName implements the ClusterGenerator interface.

type ServiceControlCluster

type ServiceControlCluster struct {
	ServiceControlURL url.URL

	DNS *helpers.ClusterDNSConfiger
	TLS *helpers.ClusterTLSConfiger
}

ServiceControlCluster is an Envoy cluster to communicate with the remote Service Control v1 server.

func (*ServiceControlCluster) GenConfig

func (c *ServiceControlCluster) GenConfig() (*clusterpb.Cluster, error)

GenConfig implements the ClusterGenerator interface.

func (*ServiceControlCluster) GetName

func (c *ServiceControlCluster) GetName() string

GetName implements the ClusterGenerator interface.

type TokenAgentCluster

type TokenAgentCluster struct {
	ClusterConnectTimeout time.Duration
	TokenAgentPort        uint

	DNS *helpers.ClusterDNSConfiger
}

TokenAgentCluster is an Envoy cluster to communicate with the localhost golang token agent.

func (*TokenAgentCluster) GenConfig

func (c *TokenAgentCluster) GenConfig() (*clusterpb.Cluster, error)

GenConfig implements the ClusterGenerator interface.

func (*TokenAgentCluster) GetName

func (c *TokenAgentCluster) GetName() string

GetName implements the ClusterGenerator interface.

Directories

Path Synopsis
Package clustergentest contains test helpers to test cluster generators.
Package clustergentest contains test helpers to test cluster generators.
Package helpers contains utility structs that operate on cluster generators.
Package helpers contains utility structs that operate on cluster generators.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL