Documentation ¶
Overview ¶
Package ingress is a generated GoMock package.
Index ¶
- Constants
- Variables
- func EncodeGroupIDToReconcileRequest(gID GroupID) ctrl.Request
- func NewACMCertDiscovery(acmClient services.ACM, logger logr.Logger) *acmCertDiscovery
- func NewDefaultAuthConfigBuilder(annotationParser annotations.Parser) *defaultAuthConfigBuilder
- func NewDefaultEnhancedBackendBuilder(k8sClient client.Client, annotationParser annotations.Parser, ...) *defaultEnhancedBackendBuilder
- func NewDefaultFinalizerManager(k8sFinalizerManager k8s.FinalizerManager) *defaultFinalizerManager
- func NewDefaultGroupLoader(client client.Client, eventRecorder record.EventRecorder, ...) *defaultGroupLoader
- func NewDefaultModelBuilder(k8sClient client.Client, eventRecorder record.EventRecorder, ...) *defaultModelBuilder
- func NewDefaultReferenceIndexer(enhancedBackendBuilder EnhancedBackendBuilder, ...) *defaultReferenceIndexer
- func NewDefaultRuleOptimizer(logger logr.Logger) *defaultRuleOptimizer
- type Action
- type ActionType
- type AuthConfig
- type AuthConfigBuilder
- type AuthIDPConfigCognito
- type AuthIDPConfigOIDC
- type AuthType
- type CertDiscovery
- type ClassAnnotationMatcher
- type ClassConfiguration
- type ClassLoader
- type ClassifiedIngress
- type EnhancedBackend
- type EnhancedBackendBuildOption
- type EnhancedBackendBuildOptions
- type EnhancedBackendBuilder
- type FinalizerManager
- type FixedResponseActionConfig
- type ForwardActionConfig
- type Group
- type GroupID
- type GroupLoader
- type HTTPHeaderConditionConfig
- type HTTPRequestMethodConditionConfig
- type HostHeaderConditionConfig
- type MockCertDiscovery
- type MockCertDiscoveryMockRecorder
- type ModelBuilder
- type PathPatternConditionConfig
- type QueryStringConditionConfig
- type QueryStringKeyValuePair
- type RedirectActionConfig
- type ReferenceIndexer
- type Rule
- type RuleCondition
- type RuleConditionField
- type RuleOptimizer
- type SSLRedirectConfig
- type SourceIPConditionConfig
- type TargetGroupStickinessConfig
- type TargetGroupTuple
Constants ¶
const ( // IndexKeyServiceRefName is index key for services referenced by Ingress. IndexKeyServiceRefName = "ingress.serviceRef.name" // IndexKeySecretRefName is index key for secrets referenced by Ingress or Service. IndexKeySecretRefName = "ingress.secretRef.name" // IndexKeyIngressClassRefName is index key for ingressClass referenced by Ingress. IndexKeyIngressClassRefName = "ingress.ingressClassRef.name" // IndexKeyIngressClassParamsRefName is index key for ingressClassParams referenced by IngressClass. IndexKeyIngressClassParamsRefName = "ingressClass.ingressClassParamsRef.name" )
const (
// the controller name used in IngressClass for ALB.
IngressClassControllerALB = "ingress.k8s.aws/alb"
)
Variables ¶
var ErrInvalidIngressClass = errors.New("invalid ingress class")
ErrInvalidIngressClass is an sentinel error that represents the IngressClass configuration for Ingress is invalid.
Functions ¶
func EncodeGroupIDToReconcileRequest ¶
EncodeGroupIDToReconcileRequest encodes a GroupID into a controller-runtime reconcile request
func NewACMCertDiscovery ¶
NewACMCertDiscovery constructs new acmCertDiscovery
func NewDefaultAuthConfigBuilder ¶
func NewDefaultAuthConfigBuilder(annotationParser annotations.Parser) *defaultAuthConfigBuilder
NewDefaultAuthConfigBuilder constructs new defaultAuthConfigBuilder.
func NewDefaultEnhancedBackendBuilder ¶
func NewDefaultEnhancedBackendBuilder(k8sClient client.Client, annotationParser annotations.Parser, authConfigBuilder AuthConfigBuilder) *defaultEnhancedBackendBuilder
NewDefaultEnhancedBackendBuilder constructs new defaultEnhancedBackendBuilder.
func NewDefaultFinalizerManager ¶
func NewDefaultFinalizerManager(k8sFinalizerManager k8s.FinalizerManager) *defaultFinalizerManager
NewDefaultFinalizerManager constructs new defaultFinalizerManager
func NewDefaultGroupLoader ¶
func NewDefaultGroupLoader(client client.Client, eventRecorder record.EventRecorder, annotationParser annotations.Parser, classLoader ClassLoader, classAnnotationMatcher ClassAnnotationMatcher, manageIngressesWithoutIngressClass bool) *defaultGroupLoader
NewDefaultGroupLoader constructs new GroupLoader instance.
func NewDefaultModelBuilder ¶
func NewDefaultModelBuilder(k8sClient client.Client, eventRecorder record.EventRecorder, ec2Client services.EC2, acmClient services.ACM, annotationParser annotations.Parser, subnetsResolver networkingpkg.SubnetsResolver, authConfigBuilder AuthConfigBuilder, enhancedBackendBuilder EnhancedBackendBuilder, trackingProvider tracking.Provider, elbv2TaggingManager elbv2deploy.TaggingManager, featureGates config.FeatureGates, vpcID string, clusterName string, defaultTags map[string]string, externalManagedTags []string, defaultSSLPolicy string, defaultTargetType string, backendSGProvider networkingpkg.BackendSGProvider, sgResolver networkingpkg.SecurityGroupResolver, enableBackendSG bool, disableRestrictedSGRules bool, enableIPTargetType bool, logger logr.Logger) *defaultModelBuilder
NewDefaultModelBuilder constructs new defaultModelBuilder.
func NewDefaultReferenceIndexer ¶
func NewDefaultReferenceIndexer(enhancedBackendBuilder EnhancedBackendBuilder, authConfigBuilder AuthConfigBuilder, logger logr.Logger) *defaultReferenceIndexer
NewDefaultReferenceIndexer constructs new defaultReferenceIndexer.
func NewDefaultRuleOptimizer ¶
NewDefaultRuleOptimizer constructs new defaultRuleOptimizer.
Types ¶
type Action ¶
type Action struct { // The type of action. Type ActionType `json:"type"` // The Amazon Resource Name (ARN) of the target group. Specify only when Type // is forward and you want to route to a single target group. To route to one // or more target groups, use ForwardConfig instead. TargetGroupARN *string `json:"targetGroupARN"` // [Application Load Balancer] Information for creating an action that returns a custom HTTP response. // +optional FixedResponseConfig *FixedResponseActionConfig `json:"fixedResponseConfig,omitempty"` // [Application Load Balancer] Information for creating a redirect action. // +optional RedirectConfig *RedirectActionConfig `json:"redirectConfig,omitempty"` // Information for creating an action that distributes requests among one or more target groups. // +optional ForwardConfig *ForwardActionConfig `json:"forwardConfig,omitempty"` }
type ActionType ¶
type ActionType string
The type of action.
const ( ActionTypeFixedResponse ActionType = "fixed-response" ActionTypeForward ActionType = "forward" ActionTypeRedirect ActionType = "redirect" )
type AuthConfig ¶
type AuthConfig struct { Type AuthType IDPConfigCognito *AuthIDPConfigCognito IDPConfigOIDC *AuthIDPConfigOIDC OnUnauthenticatedRequest string Scope string SessionCookieName string SessionTimeout int64 }
Auth config for Service / Ingresses
type AuthConfigBuilder ¶
type AuthConfigBuilder interface {
Build(ctx context.Context, svcAndIngAnnotations map[string]string) (AuthConfig, error)
}
AuthConfig builder can build auth configuration for service or ingresses.
type AuthIDPConfigCognito ¶
type AuthIDPConfigCognito struct { // The Amazon Resource Name (ARN) of the Amazon Cognito user pool. UserPoolARN string `json:"userPoolARN"` // The ID of the Amazon Cognito user pool client. UserPoolClientID string `json:"userPoolClientID"` // The domain prefix or fully-qualified domain name of the Amazon Cognito user pool. UserPoolDomain string `json:"userPoolDomain"` // The query parameters (up to 10) to include in the redirect request to the authorization endpoint. // +optional AuthenticationRequestExtraParams map[string]string `json:"authenticationRequestExtraParams,omitempty"` }
type AuthIDPConfigOIDC ¶
type AuthIDPConfigOIDC struct { // The OIDC issuer identifier of the IdP. Issuer string `json:"issuer"` // The authorization endpoint of the IdP. AuthorizationEndpoint string `json:"authorizationEndpoint"` // The token endpoint of the IdP. TokenEndpoint string `json:"tokenEndpoint"` // The user info endpoint of the IdP. UserInfoEndpoint string `json:"userInfoEndpoint"` // The k8s secretName. SecretName string `json:"secretName"` // The query parameters (up to 10) to include in the redirect request to the authorization endpoint. // +optional AuthenticationRequestExtraParams map[string]string `json:"authenticationRequestExtraParams,omitempty"` }
configuration for IDP of OIDC
type CertDiscovery ¶
type CertDiscovery interface { // Discover will try to find valid certificateARNs for each tlsHost. Discover(ctx context.Context, tlsHosts []string) ([]string, error) }
CertDiscovery is responsible for auto-discover TLS certificates for tls hosts.
type ClassAnnotationMatcher ¶
ClassAnnotationMatcher tests whether the kubernetes.io/ingress.class annotation on Ingresses matches the IngressClass of this controller.
func NewDefaultClassAnnotationMatcher ¶
func NewDefaultClassAnnotationMatcher(ingressClass string) ClassAnnotationMatcher
NewDefaultClassAnnotationMatcher constructs new defaultClassAnnotationMatcher.
type ClassConfiguration ¶
type ClassConfiguration struct { // The IngressClass for Ingress if any. IngClass *networking.IngressClass // The IngressClassParams for Ingress if any. IngClassParams *elbv2api.IngressClassParams }
ClassConfiguration contains configurations for IngressClass
type ClassLoader ¶
type ClassLoader interface { // Load loads the ClassConfiguration for Ingress with IngressClassName. Load(ctx context.Context, ing *networking.Ingress) (ClassConfiguration, error) }
ClassLoader loads IngressClass configurations for Ingress.
func NewDefaultClassLoader ¶
func NewDefaultClassLoader(client client.Client, loadParams bool) ClassLoader
NewDefaultClassLoader constructs new defaultClassLoader instance.
type ClassifiedIngress ¶
type ClassifiedIngress struct { Ing *networking.Ingress IngClassConfig ClassConfiguration }
ClassifiedIngress is Ingress with it's associated IngressClass Configuration
func (ClassifiedIngress) GetObjectMeta ¶
func (c ClassifiedIngress) GetObjectMeta() metav1.Object
type EnhancedBackend ¶
type EnhancedBackend struct { Conditions []RuleCondition Action Action AuthConfig AuthConfig }
EnhancedBackend is an enhanced version of Ingress backend. It contains additional routing conditions and authentication configurations we parsed from annotations. Also, when magic string `use-annotation` is specified as backend, the actions will be parsed from annotations as well.
type EnhancedBackendBuildOption ¶
type EnhancedBackendBuildOption func(opts *EnhancedBackendBuildOptions)
func WithLoadAuthConfig ¶
func WithLoadAuthConfig(loadAuthConfig bool) EnhancedBackendBuildOption
WithLoadAuthConfig is a option that sets the LoadAuthConfig.
func WithLoadBackendServices ¶
func WithLoadBackendServices(loadBackendServices bool, backendServices map[types.NamespacedName]*corev1.Service) EnhancedBackendBuildOption
WithLoadBackendServices is a option that sets the WithLoadBackendServices and BackendServices.
type EnhancedBackendBuildOptions ¶
type EnhancedBackendBuildOptions struct { // whether to load backend services LoadBackendServices bool // BackendServices contains all services referenced in Action, indexed by service's key. // Note: we support to pass BackendServices during backend build, so that we can use the same service snapshot for same service during entire Ingress build process. BackendServices map[types.NamespacedName]*corev1.Service // whether to load auth configuration. when load authConfiguration, LoadBackendServices must be enabled as well. LoadAuthConfig bool }
func (*EnhancedBackendBuildOptions) ApplyOptions ¶
func (opts *EnhancedBackendBuildOptions) ApplyOptions(options ...EnhancedBackendBuildOption)
type EnhancedBackendBuilder ¶
type EnhancedBackendBuilder interface {
Build(ctx context.Context, ing *networking.Ingress, backend networking.IngressBackend, opts ...EnhancedBackendBuildOption) (EnhancedBackend, error)
}
EnhancedBackendBuilder is capable of build EnhancedBackend for Ingress backend.
type FinalizerManager ¶
type FinalizerManager interface { // AddGroupFinalizer add Ingress group finalizer for active member Ingresses. // Ingresses will be in-place updated. AddGroupFinalizer(ctx context.Context, groupID GroupID, members []ClassifiedIngress) error // RemoveGroupFinalizer remove Ingress group finalizer from inactive member Ingresses. // Ingresses will be in-place updated. RemoveGroupFinalizer(ctx context.Context, groupID GroupID, inactiveMembers []*networking.Ingress) error }
FinalizerManager manages finalizer for ingresses.
type FixedResponseActionConfig ¶
type FixedResponseActionConfig struct { // The content type. // +optional ContentType *string `json:"contentType,omitempty"` // The message. // +optional MessageBody *string `json:"messageBody,omitempty"` // The HTTP response code. StatusCode string `json:"statusCode"` }
Information about an action that returns a custom HTTP response.
type ForwardActionConfig ¶
type ForwardActionConfig struct { // One or more target groups. // [Network Load Balancers] you can specify a single target group. TargetGroups []TargetGroupTuple `json:"targetGroups"` // The target group stickiness for the rule. // +optional TargetGroupStickinessConfig *TargetGroupStickinessConfig `json:"targetGroupStickinessConfig,omitempty"` }
Information about a forward action.
type Group ¶
type Group struct { ID GroupID // Members are Ingresses that is belong to this group. Members []ClassifiedIngress // InactiveMembers are Ingresses that no longer belong to this group, but still hold the finalizers. InactiveMembers []*networking.Ingress }
An Ingress Group is an group of Ingresses that should be hosted by a single LoadBalancer. It's our customization for Kubernetes's Ingress Spec, an Ingress group represents an "LoadBalancer", where each member Ingress defines rules for that LoadBalancer. There are two types of group: explicit and implicit. Explicit groups are defined by either annotation(group.name) on Ingress or field(group.name) on associated IngressClassParams Implicit groups are for ingresses without explicit group, each ingress become a standalone group of itself.
type GroupID ¶
type GroupID types.NamespacedName
GroupID is the unique identifier for an IngressGroup within cluster.
func DecodeGroupIDFromReconcileRequest ¶
DecodeGroupIDFromReconcileRequest decodes a GroupID from a controller-runtime reconcile request
func NewGroupIDForExplicitGroup ¶
NewGroupIDForExplicitGroup generates GroupID for an explicit group.
func NewGroupIDForImplicitGroup ¶
func NewGroupIDForImplicitGroup(ingKey types.NamespacedName) GroupID
NewGroupIDForImplicitGroup generates GroupID for an implicit group.
func (GroupID) IsExplicit ¶
IsExplicit tests whether this is an explicit group. Explicit groups are defined by either:
- annotation on Ingress: `group.name`
- field on associated IngressClassParams: `group.name`
type GroupLoader ¶
type GroupLoader interface { // Load returns an Ingress group given groupID. Load(ctx context.Context, groupID GroupID) (Group, error) // LoadGroupIDIfAny loads the groupID for Ingress if Ingress belong to any IngressGroup. // Ingresses that is not managed by this controller or in deletion state won't have a groupID. LoadGroupIDIfAny(ctx context.Context, ing *networking.Ingress) (*GroupID, error) // LoadGroupIDsPendingFinalization returns groupIDs that have associated finalizer on Ingress. LoadGroupIDsPendingFinalization(ctx context.Context, ing *networking.Ingress) []GroupID }
GroupLoader loads Ingress groups.
type HTTPHeaderConditionConfig ¶
type HTTPHeaderConditionConfig struct { // The name of the HTTP header field. HTTPHeaderName string `json:"httpHeaderName"` // One or more strings to compare against the value of the HTTP header. Values []string `json:"values"` }
Information for an HTTP header condition.
type HTTPRequestMethodConditionConfig ¶
type HTTPRequestMethodConditionConfig struct { // The name of the request method. Values []string `json:"values"` }
Information for an HTTP method condition.
type HostHeaderConditionConfig ¶
type HostHeaderConditionConfig struct { // One or more host names. Values []string `json:"values"` }
Information for a host header condition.
type MockCertDiscovery ¶
type MockCertDiscovery struct {
// contains filtered or unexported fields
}
MockCertDiscovery is a mock of CertDiscovery interface.
func NewMockCertDiscovery ¶
func NewMockCertDiscovery(ctrl *gomock.Controller) *MockCertDiscovery
NewMockCertDiscovery creates a new mock instance.
func (*MockCertDiscovery) EXPECT ¶
func (m *MockCertDiscovery) EXPECT() *MockCertDiscoveryMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
type MockCertDiscoveryMockRecorder ¶
type MockCertDiscoveryMockRecorder struct {
// contains filtered or unexported fields
}
MockCertDiscoveryMockRecorder is the mock recorder for MockCertDiscovery.
func (*MockCertDiscoveryMockRecorder) Discover ¶
func (mr *MockCertDiscoveryMockRecorder) Discover(arg0, arg1 interface{}) *gomock.Call
Discover indicates an expected call of Discover.
type ModelBuilder ¶
type ModelBuilder interface { // build mode stack for a IngressGroup. Build(ctx context.Context, ingGroup Group) (core.Stack, *elbv2model.LoadBalancer, []types.NamespacedName, bool, error) }
ModelBuilder is responsible for build mode stack for a IngressGroup.
type PathPatternConditionConfig ¶
type PathPatternConditionConfig struct { // One or more path patterns to compare against the request URL. Values []string `json:"values"` }
Information about a path pattern condition.
type QueryStringConditionConfig ¶
type QueryStringConditionConfig struct { // One or more key/value pairs or values to find in the query string. Values []QueryStringKeyValuePair `json:"values"` }
Information about a query string condition.
type QueryStringKeyValuePair ¶
type QueryStringKeyValuePair struct { // The key. // +optional Key *string `json:"key,omitempty"` // The value. Value string `json:"value"` }
Information about a key/value pair.
type RedirectActionConfig ¶
type RedirectActionConfig struct { // The hostname. // +optional Host *string `json:"host,omitempty"` // The absolute path. // +optional Path *string `json:"path,omitempty"` // The port. // +optional Port *string `json:"port,omitempty"` // The protocol. // +optional Protocol *string `json:"protocol,omitempty"` // The query parameters // +optional Query *string `json:"query,omitempty"` // The HTTP redirect code. StatusCode string `json:"statusCode"` }
Information about a redirect action.
type ReferenceIndexer ¶
type ReferenceIndexer interface { // BuildServiceRefIndexes returns the name of related Service objects. BuildServiceRefIndexes(ctx context.Context, ing *networking.Ingress) []string // BuildSecretRefIndexes returns the name of related Secret objects. BuildSecretRefIndexes(ctx context.Context, ingOrSvc client.Object) []string // BuildIngressClassRefIndexes returns the name of related IngressClass objects. BuildIngressClassRefIndexes(ctx context.Context, ing *networking.Ingress) []string // BuildIngressClassParamsRefIndexes returns the name of related IngressClassParams objects. BuildIngressClassParamsRefIndexes(ctx context.Context, ingClass *networking.IngressClass) []string }
ReferenceIndexer has the ability to index Ingresses with referenced objects.
type Rule ¶
type Rule struct { Conditions []elbv2model.RuleCondition Actions []elbv2model.Action Tags map[string]string }
type RuleCondition ¶
type RuleCondition struct { // The field in the HTTP request. Field RuleConditionField `json:"field"` // Information for a host header condition. HostHeaderConfig *HostHeaderConditionConfig `json:"hostHeaderConfig"` // Information for an HTTP header condition. HTTPHeaderConfig *HTTPHeaderConditionConfig `json:"httpHeaderConfig"` // Information for an HTTP method condition. HTTPRequestMethodConfig *HTTPRequestMethodConditionConfig `json:"httpRequestMethodConfig"` // Information for a path pattern condition. PathPatternConfig *PathPatternConditionConfig `json:"pathPatternConfig"` // Information for a query string condition. QueryStringConfig *QueryStringConditionConfig `json:"queryStringConfig"` // Information for a source IP condition. SourceIPConfig *SourceIPConditionConfig `json:"sourceIPConfig"` }
Information about a condition for a rule.
func (*RuleCondition) Validate ¶
func (c *RuleCondition) Validate() error
type RuleConditionField ¶
type RuleConditionField string
const ( RuleConditionFieldHTTPHeader RuleConditionField = "http-header" RuleConditionFieldHTTPRequestMethod RuleConditionField = "http-request-method" RuleConditionFieldHostHeader RuleConditionField = "host-header" RuleConditionFieldPathPattern RuleConditionField = "path-pattern" RuleConditionFieldQueryString RuleConditionField = "query-string" RuleConditionFieldSourceIP RuleConditionField = "source-ip" )
type RuleOptimizer ¶
type RuleOptimizer interface {
Optimize(ctx context.Context, port int64, protocol elbv2model.Protocol, rules []Rule) ([]Rule, error)
}
RuleOptimizer will optimize the listener Rules for a single Listener.
type SSLRedirectConfig ¶
type SSLRedirectConfig struct { // The SSLPort to redirect to for all HTTP port SSLPort int64 // The HTTP response code. StatusCode string }
SSLRedirectConfig contains configuration for SSLRedirect feature.
type SourceIPConditionConfig ¶
type SourceIPConditionConfig struct { // One or more source IP addresses, in CIDR format. Values []string `json:"values"` }
Information about a source IP condition.
type TargetGroupStickinessConfig ¶
type TargetGroupStickinessConfig struct { // Indicates whether target group stickiness is enabled. // +optional Enabled *bool `json:"enabled,omitempty"` // The time period, in seconds, during which requests from a client should be routed to the same target group. // +optional DurationSeconds *int64 `json:"durationSeconds,omitempty"` }
Information about the target group stickiness for a rule.
type TargetGroupTuple ¶
type TargetGroupTuple struct { // The Amazon Resource Name (ARN) of the target group. TargetGroupARN *string `json:"targetGroupARN"` // the K8s service Name ServiceName *string `json:"serviceName"` // the K8s service port ServicePort *intstr.IntOrString `json:"servicePort"` // The weight. // +optional Weight *int64 `json:"weight,omitempty"` }
Information about how traffic will be distributed between multiple target groups in a forward rule.
Source Files ¶
- auth_config_builder.go
- cert_discovery.go
- cert_discovery_mocks.go
- class.go
- class_annotation_matcher.go
- class_loader.go
- config_types.go
- enhanced_backend_builder.go
- finalizer.go
- group.go
- group_loader.go
- model_build_actions.go
- model_build_listener.go
- model_build_listener_rules.go
- model_build_load_balancer.go
- model_build_load_balancer_addons.go
- model_build_load_balancer_attributes.go
- model_build_managed_sg.go
- model_build_tags.go
- model_build_target_group.go
- model_builder.go
- reference_indexer.go
- rule_optimizer.go
- ssl_redirect_config.go