Skip to content

Commit e379e6c

Browse files
committed
add ipv4 ipam support for alb
1 parent e942a0f commit e379e6c

23 files changed

+1021
-71
lines changed

apis/elbv2/v1beta1/ingressclassparams_types.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,13 @@ type MinimumLoadBalancerCapacity struct {
107107
CapacityUnits int32 `json:"capacityUnits"`
108108
}
109109

110+
// IPAMConfiguration defines the IPAM configuration for an Ingress.
111+
type IPAMConfiguration struct {
112+
// IPv4IPAMPoolId defines the IPAM pool ID used for IPv4 Addresses on the ALB.
113+
// +optional
114+
IPv4IPAMPoolId *string `json:"ipv4IPAMPoolId,omitempty"`
115+
}
116+
110117
// IngressClassParamsSpec defines the desired state of IngressClassParams
111118
type IngressClassParamsSpec struct {
112119
// CertificateArn specifies the ARN of the certificates for all Ingresses that belong to IngressClass with this IngressClassParams.
@@ -156,6 +163,10 @@ type IngressClassParamsSpec struct {
156163
// MinimumLoadBalancerCapacity define the capacity reservation for LoadBalancers for all Ingress that belong to IngressClass with this IngressClassParams.
157164
// +optional
158165
MinimumLoadBalancerCapacity *MinimumLoadBalancerCapacity `json:"minimumLoadBalancerCapacity,omitempty"`
166+
167+
// IPAMConfiguration defines the IPAM settings for a Load Balancer.
168+
// +optional
169+
IPAMConfiguration *IPAMConfiguration `json:"ipamConfiguration,omitempty"`
159170
}
160171

161172
// +kubebuilder:object:root=true

apis/elbv2/v1beta1/zz_generated.deepcopy.go

Lines changed: 25 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/bases/elbv2.k8s.aws_ingressclassparams.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,15 @@ spec:
8585
- dualstack
8686
- dualstack-without-public-ipv4
8787
type: string
88+
ipamConfiguration:
89+
description: IPAMConfiguration defines the IPAM settings for a Load
90+
Balancer.
91+
properties:
92+
ipv4IPAMPoolId:
93+
description: IPv4IPAMPoolId defines the IPAM pool ID used for
94+
IPv4 Addresses on the ALB.
95+
type: string
96+
type: object
8897
listeners:
8998
description: Listeners define a list of listeners with their protocol,
9099
port and attributes.

docs/guide/ingress/annotations.md

Lines changed: 63 additions & 48 deletions
Large diffs are not rendered by default.

docs/guide/ingress/ingress_class.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,4 +251,10 @@ They may specify `capacityUnits`. If the field is specified, LBC will ignore the
251251

252252
##### spec.minimumLoadBalancerCapacity.capacityUnits
253253

254-
If `capacityUnits` is specified, it must be to valid positive value greater than 0. If set to 0, the LBC will reset the capacity reservation for the load balancer.
254+
If `capacityUnits` is specified, it must be to valid positive value greater than 0. If set to 0, the LBC will reset the capacity reservation for the load balancer.
255+
256+
#### spec.ipv4IPAMPoolId
257+
258+
The IPAM pool you choose will be the preferred source of public IPv4 addresses.
259+
If the pool is depleted, IPv4 addresses will be assigned by AWS.
260+
To remove the IPAM pool from your ALB, remove `spec.ipv4IPAMPoolId` from the IngressClass definition.

docs/install/iam_policy.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"ec2:GetCoipPoolUsage",
3131
"ec2:DescribeCoipPools",
3232
"ec2:GetSecurityGroupsForVpc",
33+
"ec2:DescribeIpamPools",
3334
"elasticloadbalancing:DescribeLoadBalancers",
3435
"elasticloadbalancing:DescribeLoadBalancerAttributes",
3536
"elasticloadbalancing:DescribeListeners",
@@ -193,7 +194,8 @@
193194
"elasticloadbalancing:ModifyTargetGroupAttributes",
194195
"elasticloadbalancing:DeleteTargetGroup",
195196
"elasticloadbalancing:ModifyListenerAttributes",
196-
"elasticloadbalancing:ModifyCapacityReservation"
197+
"elasticloadbalancing:ModifyCapacityReservation",
198+
"elasticloadbalancing:ModifyIpPools"
197199
],
198200
"Resource": "*",
199201
"Condition": {

docs/install/iam_policy_cn.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"ec2:GetCoipPoolUsage",
3131
"ec2:DescribeCoipPools",
3232
"ec2:GetSecurityGroupsForVpc",
33+
"ec2:DescribeIpamPools",
3334
"elasticloadbalancing:DescribeLoadBalancers",
3435
"elasticloadbalancing:DescribeLoadBalancerAttributes",
3536
"elasticloadbalancing:DescribeListeners",
@@ -215,7 +216,8 @@
215216
"elasticloadbalancing:ModifyTargetGroupAttributes",
216217
"elasticloadbalancing:DeleteTargetGroup",
217218
"elasticloadbalancing:ModifyListenerAttributes",
218-
"elasticloadbalancing:ModifyCapacityReservation"
219+
"elasticloadbalancing:ModifyCapacityReservation",
220+
"elasticloadbalancing:ModifyIpPools"
219221
],
220222
"Resource": "*",
221223
"Condition": {

docs/install/iam_policy_iso.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"ec2:GetCoipPoolUsage",
3131
"ec2:DescribeCoipPools",
3232
"ec2:GetSecurityGroupsForVpc",
33+
"ec2:DescribeIpamPools",
3334
"elasticloadbalancing:DescribeLoadBalancers",
3435
"elasticloadbalancing:DescribeLoadBalancerAttributes",
3536
"elasticloadbalancing:DescribeListeners",
@@ -210,7 +211,8 @@
210211
"elasticloadbalancing:DeleteLoadBalancer",
211212
"elasticloadbalancing:ModifyTargetGroup",
212213
"elasticloadbalancing:ModifyTargetGroupAttributes",
213-
"elasticloadbalancing:DeleteTargetGroup"
214+
"elasticloadbalancing:DeleteTargetGroup",
215+
"elasticloadbalancing:ModifyIpPools"
214216
],
215217
"Resource": "*",
216218
"Condition": {

docs/install/iam_policy_isob.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"ec2:GetCoipPoolUsage",
3131
"ec2:DescribeCoipPools",
3232
"ec2:GetSecurityGroupsForVpc",
33+
"ec2:DescribeIpamPools",
3334
"elasticloadbalancing:DescribeLoadBalancers",
3435
"elasticloadbalancing:DescribeLoadBalancerAttributes",
3536
"elasticloadbalancing:DescribeListeners",
@@ -210,7 +211,8 @@
210211
"elasticloadbalancing:DeleteLoadBalancer",
211212
"elasticloadbalancing:ModifyTargetGroup",
212213
"elasticloadbalancing:ModifyTargetGroupAttributes",
213-
"elasticloadbalancing:DeleteTargetGroup"
214+
"elasticloadbalancing:DeleteTargetGroup",
215+
"elasticloadbalancing:ModifyIpPools"
214216
],
215217
"Resource": "*",
216218
"Condition": {

docs/install/iam_policy_isoe.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"ec2:GetCoipPoolUsage",
3131
"ec2:DescribeCoipPools",
3232
"ec2:GetSecurityGroupsForVpc",
33+
"ec2:DescribeIpamPools",
3334
"elasticloadbalancing:DescribeLoadBalancers",
3435
"elasticloadbalancing:DescribeLoadBalancerAttributes",
3536
"elasticloadbalancing:DescribeListeners",
@@ -210,7 +211,8 @@
210211
"elasticloadbalancing:DeleteLoadBalancer",
211212
"elasticloadbalancing:ModifyTargetGroup",
212213
"elasticloadbalancing:ModifyTargetGroupAttributes",
213-
"elasticloadbalancing:DeleteTargetGroup"
214+
"elasticloadbalancing:DeleteTargetGroup",
215+
"elasticloadbalancing:ModifyIpPools"
214216
],
215217
"Resource": "*",
216218
"Condition": {

0 commit comments

Comments
 (0)