Documentation ¶
Overview ¶
Package clustergen provides individual Cluster Generators to generate an xDS cluster config.
Index ¶
- Variables
- func IsHTTPBackendEnabled(rule *servicepb.BackendRule) *servicepb.BackendRule
- func MakeLocalBackendClusterName(serviceConfig *servicepb.Service) string
- func RemoteAddressToClusterName(address string) string
- type ClusterGenerator
- func NewIAMClustersFromOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)
- func NewIMDSClustersFromOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)
- func NewJWTProviderClustersFromOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)
- func NewLocalBackendClustersFromOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)
- func NewRemoteBackendClustersFromOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)
- func NewServiceControlClustersFromOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)
- func NewTokenAgentClustersFromOPConfig(serviceConfig *servicepb.Service, opts options.ConfigGeneratorOptions) ([]ClusterGenerator, error)
- type ClusterGeneratorOPFactory
- type IAMCluster
- type IMDSCluster
- type JWTProviderCluster
- type LocalBackendCluster
- type RemoteBackendCluster
- type ServiceControlCluster
- type TokenAgentCluster
Constants ¶
This section is empty.
Variables ¶
var (
// IAMServerClusterName is the name of the IAM xDS cluster.
IAMServerClusterName = "iam-cluster"
)
var (
// MetadataServerClusterName is the name of the IMDS xDS cluster.
MetadataServerClusterName = "metadata-cluster"
)
var (
// ServiceControlClusterName is the name of the Service Control v1 xDS cluster.
ServiceControlClusterName = "service-control-cluster"
)
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 RemoteAddressToClusterName ¶
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.
Source Files ¶
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. |