Skip to content

Commit

Permalink
NE-1530: Add API for AWS LB Subnet Selection
Browse files Browse the repository at this point in the history
Allows users to specify subnets (i.e. Availability Zones) for
IngressControllers in AWS. Introduce under the
`AWSLoadBalancerSubnetSelection` FeatureGate.
  • Loading branch information
gcs278 committed Apr 3, 2024
1 parent f28a8dc commit f4b084d
Show file tree
Hide file tree
Showing 10 changed files with 6,818 additions and 2 deletions.
16 changes: 16 additions & 0 deletions openapi/generated_openapi/zz_generated.openapi.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 10 additions & 1 deletion openapi/openapi.json
Expand Up @@ -25114,6 +25114,14 @@
"description": "networkLoadBalancerParameters holds configuration parameters for an AWS network load balancer. Present only if type is NLB.",
"$ref": "#/definitions/com.github.openshift.api.operator.v1.AWSNetworkLoadBalancerParameters"
},
"subnets": {
"description": "subnets specifies the list of subnets for the load balancer to route traffic to. The values can be either a subnet ID or name. Each subnet must be from a different availability zones otherwise the load balancer will not be provisioned. Additionally, if a subnet is not found, the load balancer will not be provisioned.\n\nWhen omitted, the subnets will be auto-discovered per availability zone.",
"type": "array",
"items": {
"type": "string",
"default": ""
}
},
"type": {
"description": "type is the type of AWS load balancer to instantiate for an ingresscontroller.\n\nValid values are:\n\n* \"Classic\": A Classic Load Balancer that makes routing decisions at either\n the transport layer (TCP/SSL) or the application layer (HTTP/HTTPS). See\n the following for additional details:\n\n https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#clb\n\n* \"NLB\": A Network Load Balancer that makes routing decisions at the\n transport layer (TCP/SSL). See the following for additional details:\n\n https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb",
"type": "string",
Expand All @@ -25125,7 +25133,8 @@
"discriminator": "type",
"fields-to-discriminateBy": {
"classicLoadBalancer": "ClassicLoadBalancerParameters",
"networkLoadBalancer": "NetworkLoadBalancerParameters"
"networkLoadBalancer": "NetworkLoadBalancerParameters",
"subnets": "Subnets"
}
}
]
Expand Down
13 changes: 13 additions & 0 deletions operator/v1/types_ingress.go
Expand Up @@ -545,6 +545,19 @@ type AWSLoadBalancerParameters struct {
//
// +optional
NetworkLoadBalancerParameters *AWSNetworkLoadBalancerParameters `json:"networkLoadBalancer,omitempty"`

// subnets specifies the list of subnets for the load balancer to
// route traffic to. The values can be either a subnet ID or name.
// Each subnet must be from a different availability zones otherwise
// the load balancer will not be provisioned. Additionally, if a subnet
// is not found, the load balancer will not be provisioned.
//
// When omitted, the subnets will be auto-discovered per availability zone.
//
// +optional
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="subnets is immutable once set"
// +openshift:enable:FeatureGate=AWSLoadBalancerSubnetSelection
Subnets []string `json:"subnets,omitempty"`
}

// AWSLoadBalancerType is the type of AWS load balancer to instantiate.
Expand Down

Large diffs are not rendered by default.

Expand Up @@ -7,6 +7,7 @@ metadata:
capability.openshift.io/name: Ingress
include.release.openshift.io/ibm-cloud-managed: "true"
include.release.openshift.io/self-managed-high-availability: "true"
release.openshift.io/feature-set: Default
name: ingresscontrollers.operator.openshift.io
spec:
group: operator.openshift.io
Expand Down

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions operator/v1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion operator/v1/zz_generated.featuregated-crd-manifests.yaml
Expand Up @@ -174,7 +174,8 @@ ingresscontrollers.operator.openshift.io:
CRDName: ingresscontrollers.operator.openshift.io
Capability: Ingress
Category: ""
FeatureGates: []
FeatureGates:
- AWSLoadBalancerSubnetSelection
FilenameOperatorName: ingress
FilenameOperatorOrdering: "00"
FilenameRunLevel: "0000_50"
Expand Down

0 comments on commit f4b084d

Please sign in to comment.