kubernetes-sigs / cluster-api-provider-aws

Kubernetes Cluster API Provider AWS provides consistent deployment and day 2 operations of "self-managed" and EKS Kubernetes clusters on AWS.
http://cluster-api-aws.sigs.k8s.io/
Apache License 2.0
629 stars 549 forks source link

Create network resources for AWS Local Zones and Wavelength Zones #4874

Open mtulio opened 4 months ago

mtulio commented 4 months ago

/kind feature

Describe the solution you'd like:

Support of creation network infrastructure, subnets, and gateways, required for AWS Local Zones and Wavelength zones, allowing users to create compute nodes (non-control plane) specifying those subnets.

AWS Local Zones allow end-users to deploy cloud resources closer to the metropolitan regions and offer a limited resource, like Instance Type, Block Storage, Application Load Balancers, Nat Gateways etc. The network infrastructure required to create nodes in Local Zones are:

AWS Wavelength zones are infrastructure running in carrier infrastructure. It also have limitations of resources offered in those locations.

Network resources required for Wavelength zones:

Not Goal:

Anything else you would like to add: [Miscellaneous information that will assist in solving the issue.]

Currently, OpenShift creates the network resources required to deploy only compute nodes in AWS Local Zones and Wavelength zones, and we would like to use Cluster API to deploy those resources. Machines (compute nodes) are then created, outside Cluster API.

Considering the limitation of network-based load balancers, we used to recommend to the users to use the AWS Application Load Balancer controller to create ingress traffic into those zones (day-2).

For the gateway for private subnets, we are reusing the same Nat Gateway for the Parent Zone (zone attribute), when it exists, otherwise, the "default" private route table will be used to associate the zone in the remote location. If possible, it would be nice to deploy Nat Gateway in the location, when supported (currently, only a few Local Zone locations support it), otherwise, use some strategy like that.

For the gateway for public subnets in Wavelength Zones, we are creating a single "public carrier" route table, with the default route entry to the Carrier Gateway, previously created and associated with the VPC,

For more details feel free to read the enhancement with more details here.

The suggested Local Zones workflow looks like this:

*Required API changes for the proposed workflow:

The suggested Wavelength Zones workflow looks like this:

*Required API changes for the proposed workflow:

### Tasks
- [ ] https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/4882
- [ ] https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/4901
- [ ] 🌱 Implement e2e tests for edge subnets
k8s-ci-robot commented 4 months ago

This issue is currently awaiting triage.

If CAPA/CAPI contributors determines this is a relevant issue, they will accept it by applying the triage/accepted label and provide further guidance.

The triage/accepted label can be added by org members by writing /triage accepted in a comment.

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md). If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
k8s-triage-robot commented 1 month ago

The Kubernetes project currently lacks enough contributors to adequately respond to all issues.

This bot triages un-triaged issues according to the following rules:

You can:

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

k8s-triage-robot commented 4 days ago

The Kubernetes project currently lacks enough active contributors to adequately respond to all issues.

This bot triages un-triaged issues according to the following rules:

You can:

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle rotten