-
Notifications
You must be signed in to change notification settings - Fork 592
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
✨ Support of managing subnets on AWS Wavelength Zones #4901
✨ Support of managing subnets on AWS Wavelength Zones #4901
Conversation
Hi @mtulio. Thanks for your PR. I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
d545d8d
to
edeba21
Compare
939ef72
to
73f5db7
Compare
/test pull-cluster-api-provider-aws-test |
73f5db7
to
2b0fe5b
Compare
/test pull-cluster-api-provider-aws-build |
/test pull-cluster-api-provider-aws-test |
1b9c633
to
0e6b4dc
Compare
@richardcase , feedback addressed. 👍🏽 |
e2e finished successfully in the first run after rebase. Triggering again after adding cloudformation permissions. /test pull-cluster-api-provider-aws-e2e /assign @richardcase |
e2e job 1782910662712758272 failed, looks like timeout. /test pull-cluster-api-provider-aws-e2e |
It passed on a re-run |
🎉 Perfect! Thanks! @richardcase Let me know if you are ok with the current changes. My plan to fully address the #4874, aligned w/ we discussed in last community meeting, is to create individual e2e tests for Local Zones and Wavelength Zones (or mixed to save infra/runtime) in follow up PRs. cc @damdo @nrb |
Create a dedicated document, "topic", with instructions to deploy network infrastructure (subnets, gateways and route tables) in "edge zones" - Local Zone and Wavelength Zone infrastructure.
This change introduce support of required network components to deploy subnets on AWS Wavelength Zones infrastructure. The NetworkSpec API handles the CarrierGatewayId on NetworkSpec with the unique identifier of Carrier Gateway resource attached to the VPC.
Subnets in AWS Wavelength Zone is a classified as a type of edge subnets, not used to create regular control plane resources, like nodes, NAT Gateways or API Load Balancers. The ZoneType is used to group the zones from regular and the edge zones. Regular zones are with type 'availability-zone', and the edge zones are types 'local-zone' and 'wavelength-zone'. The following statements are valid for edge subnets: - private subnets supports egress traffic only using NAT Gateway in the region. - public subnets in Wavelength must be attached to a route table with valid Carrier Gateway as a default route. - public subnets in Wavelength zones does not support map public ip on launch flag, instead, the runInstance must set the network interface flag to assign public ip from carrier gateway - IPv6 subnets is not supported in edge zones - subnet tags for load balancer are not set in edge subnets. Edge subnets should not be elected by CCM to create service load balancers. Use ALB ingress instead
✨ edge subnets/cagw: carrier gateway for public subnets in Wavelength Introduce Carrier Gateway resource reconciliator in the network service. Carrier Gateway is the gateway responsible to route ingress and egress traffic **in/out the Wavelength Zone**, located in the Carrier Infrastructure - communications service providers’ (CSP) 5G networks. Carrier Gateway is similar Internet Gatewat resource, responsible for the network border groups in the Region and Local Zones for public subnets. ✨ edge subnets/routes: supporting custom routes for Wavelength For private and public subnets in edge zones, the following changes is introduced according to each rule: General: - IPv6 subnets is not be supported in AWS Local Zones and Wavelength zone, consequently no ip6 routes will be created - nat gateways is not supported, default gateway's route for private subnets will use nat gateways from the zones in the Region (availability-zone's zone type) - one route table by zone's role by zone (standard flow) Private tables for Local Zones and Wavelength: - default route's gateways is assigned using nat gateway created in the region (availability-zones). Public tables for Wavelength zones: - default route's gateways is assigned using Carrier Gateway, resource introduced in the edge zone's feature. The changes in the standard flow (without edge subnets' support) was isolated in the PR kubernetes-sigs#4900
Add IAM policy on cloudformation templates for clusterawsadm to manipulate gateways in Wavelength zone: carrier gateway.
0e6b4dc
to
2270604
Compare
Hi @richardcase - let me share the e2e tests we are running on OpenShift using this version and a few details about how the e2e for edge zones is built to hear from you if it makes sense to use a similar approach on CAPA. e2e results on OpenShift using this PR/CAPA version: e2e details - the "edge subnets" CI workflow is built on openshift using the flow similar to this:
Note 0: the edge zone is randomly selected to increase coverage and dynamically test new zones while AWS is adding it. |
Thanks for the details on how OpenShift is testing this! It's good to know there's downstream testing of this feature, though of course we'd like to see similar tests added to this repo as well. /lgtm |
@mtulio - just to let you know that i updated the "release note" section to mark it as action required. |
/test pull-cluster-api-provider-aws-e2e-eks |
From my side: /approve When the e2e passes then we can unhold to merge. |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: richardcase The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/unhold |
What type of PR is this?
/kind feature
/kind api-change
What this PR does / why we need it:
This PR implements support of managed subnets and carrier gateway for AWS Wavelength zones. Feature request #4874 .
There API is changed to introduce the following fields:
VPCSpec.CarrierGatewayID
: representation of Carrier Gateway resource ("internet gateway" for AWS Wavelength Zones)SubnetSpec.ZoneType
: representation of subnet's zone typeSubnetSpec.ParentZoneName
: representation of subnet's parent zone name (an availability zone in the Region which the edge zone is tied)The subnets in AWS Local Zones and Wavelength Zones are not eligible to create core components for the cluster, like NAT Gateway, Control Plane nodes, and Network Load Balancers, keeping compatibility with existing flow when edge subnets are added.
To create subnets in edge zones, the subnet must be added for each zone you want to create the subnet in
NetworkSpec.Subnets
. For example to create subnets in Wavelength Zoneus-east-1-wl1-nyc-wlz-1
, set:This PR is a super set and includes it's dependencies, isolated on each PRs (and it is blocked by those):
Which issue(s) this PR fixes *
Ref #4874
Special notes for your reviewer:
Checklist:
Release note: