# Release notes for Cluster API Provider AWS (CAPA) v1.0.0
[Documentation](https://cluster-api-aws.sigs.k8s.io/)
# Changelog since v0.7.0
## Urgent Upgrade Notes
### (No, really, you MUST read this before you upgrade)
- v1.0.0 is based on Cluster API v1beta1 and must be used in conjunction with Cluster API v1.0.x. ([#2831](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2831), [@randomvariable](https://github.com/randomvariable))
- All Cluster API Provider AWS API types have been graduated to v1beta1, this includes:
- `AWSCluster*`, `AWSMachine*`, `AWSManaged*` and all experimental APIs, covering both EC2 and EKS.
- **clusterawsadm** configuration has also graduated to v1beta1. Clusterawsadm is backwards compatible with v1alpha1 configuration files and they are semantically the same. Running `clusterawsadm bootstrap iam print-config --config <old-file>` will do an automated conversion to v1beta1.
- Cluster API Provider AWS will support upgrades directly from v1alpha3 to v1beta1 as well as v1alpha4 to v1beta1.
## Changes by Kind
### API Change
- IAM types have been moved (back) out of the main `/api` package into a new `/iam/api` package where they are consumed by both EKS and clusterawsadm. ([#2820](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2820), [@randomvariable](https://github.com/randomvariable))
### Feature
- EKS: Add support to create and update tags for a Fargate Profile ([#2676](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2676), [@abhinavnagaraj](https://github.com/abhinavnagaraj))
- EKS: Support role additional policies for AWSManagedMachinePool ([#2751](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2751), [@abhinavnagaraj](https://github.com/abhinavnagaraj))
- EKS: Support spot capacity type for ManagedMachinePool ([#2702](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2702), [@abhinavnagaraj](https://github.com/abhinavnagaraj))
- Support adding AWS cloud provider tags to pre-existing infrastructure ([#2715](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2715), [@pydctw](https://github.com/pydctw))
- Add readiness and health checks to webhook server ([#2685](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2685), [@geetikabatra](https://github.com/geetikabatra))
- Controller log level can be set using the CAPA_LOGLEVEL variable. Defaults to 0. ([#2673](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2673), [@Ankitasw](https://github.com/Ankitasw))
### Documentation
- Add documentation for using external cloud provider and CSI driver add-on ([#2718](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2718), [@Ankitasw](https://github.com/Ankitasw))
- Updated readme with godoc shield and centered images. ([#2700]( https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2700), [@pshail](https://github.com/pshail))
- Add doc for using external CCM with CSI driver. ([#2724](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2724), [@Ankitasw](https://github.com/Ankitasw))
- Fix the broken link in the tilt development guide. ([#2724](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2742), [@mkumatag](https://github.com/mkumatag))
- Update contributing guide. ([#2756](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2756), [@richardcase](https://github.com/richardcase))
- Update docs to v1beta1. ([#2830](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2830), [@randomvariable](https://github.com/randomvariable))
### Bug or Regression
- Add v1alpha3 to v1alpha4 upgrade test ([#2770](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2770), [@Ankitasw](https://github.com/Ankitasw))
- Fixed a panic when there are extra routes with non-CIDR destinations (IPv6 CIDR, Prefix List) present in the managed routing table. ([#2705](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2705), [@dilyevsky](https://github.com/dilyevsky))
- Correct the casing of the ELB load balancer scheme from `Internet-facing` to `internet-facing`, allowing the ELB to be correctly continuously reconciled ([#2768](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2768), [@dlipovetsky](https://github.com/dlipovetsky), [#2832](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2832), [@sedefsavas](https://github.com/sedefsavas))
- Fix `findSubnet` function's logic when subnet ID is specified. It will find a matching subnet regardless of a failureDomain setting. ([#2728](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2728), [@pydctw](https://github.com/pydctw))
- Fix reconciliation of AWS ingress rules of same port ([#2813](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2813), [@pydctw](https://github.com/pydctw))
- Move EKS-related resources from `AWSIAMManagedPolicyControllers` to a separate policy to work around AWS size limit for managed policies. ([#2662](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2662), [@johananl](https://github.com/johananl))
- Resolves issue with KIAM annotation not appearing on Cluster API AWS Manager pod. ([#2800](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2800), [@voor](https://github.com/voor))
- Validation added for empty `InstanceType` in `AWSMachine` and `AWSMachineTemplate`. ([#2740](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2740), [@shivi28](https://github.com/shivi28))
- When `AWSMachine.Spec.PublicIP` is set true, an instance is launched in a public subnet with public IP. ([#2772](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2772), [@pydctw](https://github.com/pydctw))
- Retry fetching managed vpc attributes when vpc is 'NotFound'. ([#2678](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2678), [@abhinavnagaraj](https://github.com/abhinavnagaraj))
- Remove `elasticloadbalancing:AddTags` duplicate entries. ([#2692](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2692), [@rayandas](https://github.com/rayandas))
- Improve the netlify speed issues. ([#2682](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2682), [#2811](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2811), [@randomvariable](https://github.com/randomvariable))
- Fix inorrect api version in metadata.yml ([#2677](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2677), [@randomvariable](https://github.com/randomvariable))
- Add check for invalid memory address or nil pointer dereference in getImageSnapshotSize ([#2821](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2821), [@enxebre](https://github.com/enxebre))
- Error when capacity type or scaling config is missing. ([#2713](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2713), [@richardcase](https://github.com/richardcase))
- Fix node affinity rules in external CCM CRDs. ([#2722](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/272), [#2723](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2723), [@Ankitasw](https://github.com/Ankitasw))
- Fix the gomega errors in tests with the controller runtime version bump. ([#2745](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2745), [@Ankitasw](https://github.com/Ankitasw))
- Fix the timeout for conformance test due to prolonged log collection. ([#2766](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2766), [@Ankitasw](https://github.com/Ankitasw))
- Fix timeout due to delay in bringing up control plane in e2e tests. ([#2777](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2777), [@Ankitasw](https://github.com/Ankitasw))
- Correct typo in `AWSCluster` validation hook error. ([#2776](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2776),[@dlipovetsky](https://github.com/dlipovetsky))
- Make `PublicIP` field in `AWSMachine` spec work. ([#2772](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2772), [@pydctw](https://github.com/pydctw))
- Ensure destination pointer is non-nil before calling restore functions. ([#2809](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2809), [@dlipovetsky](https://github.com/dlipovetsky))
- Add bastion-sg to managedMachinePool remoteAccess source-sgs when bastion is enabled. ([#2659](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2659), [@abhinavnagaraj](https://github.com/abhinavnagaraj))
- If one type of webhook is not defined, testenv.Build hits a nil dereference. ([#2810](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2810), [@dlipovetsky](https://github.com/dlipovetsky))
### Other (Cleanup or Flake)
- Clean up unused Kubernetes RBAC permissions ([#2720](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2720), [@sayantani11](https://github.com/sayantani11))
- Expose leader-election-resource-lock as a flag ([#2822](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2822), [@enxebre](https://github.com/enxebre))
- Add external cloud provider end-to-end test ([#2647](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2647), [@Ankitasw](https://github.com/Ankitasw))
- Update to CAPA reviwers and maintainers. ([#2716](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2716), [@vincepri](https://github.com/vincepri), [#2667](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2667), [@richardcase](https://github.com/richardcase))
- Use same Golang version everywhere. ([#2735](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2735), [@mkumatag](https://github.com/mkumatag))
- Change references of wg-k8s-infra to sig-k8s-infra. ([#2786](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2786), [@spiffxp](https://github.com/spiffxp))
- Remove unnecessary conversion code. ([#2789](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2789),[@dlipovetsky](https://github.com/dlipovetsky))
- Download the e2e restart scripts outside the dockerfile. ([#2796](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2796), [@Ankitasw](https://github.com/Ankitasw))
- Update tilt-provider.json to add CAPA label in Tilt. ([#2806](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2806), [@pydctw](https://github.com/pydctw))
- Updated header verify to support go 1.17 build contraints. ([#2755](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2755), [@richardcase](https://github.com/richardcase))
- Add optional v1alpha4 and self-hosted management cluster tests. ([#2833](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2833), [@randomvariable](https://github.com/randomvariable))
### Dependency Updates
- Bump AWS SDK to v1.40.33, with support added for IMDS IPv6 endpoint ([#2721](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2721), [#2703](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2703), [#2681](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2681), [@dependabot[bot]](https://github.com/apps/dependabot))
- Bump controller runtime version to v0.10.1, controller-gen to v0.7.0 and controller-tools to 0.7.0 for v1beta1 release ([#2785](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2785), [#2739](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2739), [@Ankitasw](https://github.com/Ankitasw))
- Bump golangci-lint to 1.42.1 in `/hack/tools`. ([#2760](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2760), [#2695](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2695), [@dependabot[bot]](https://github.com/apps/dependabot))
- Bump sigs.k8s.io/cluster-api/test to 0.4.2. ([#2706](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2706), [@dependabot[bot]](https://github.com/apps/dependabot))
- Bump sigs.k8s.io/cluster-api to 0.4.2. ([#2707](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2707), [@dependabot[bot]](https://github.com/apps/dependabot))
- Bump sigs.k8s.io/kustomize/kustomize/v4 to 4.3.0 in `/hack/tools`. ([#2719](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2719), [@dependabot[bot]](https://github.com/apps/dependabot))
- Bump github.com/itchyny/gojq to 0.12.5 in `/hack/tools`. ([#2737](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2737), [@dependabot[bot]](https://github.com/apps/dependabot))
- Bump golang to 1.16.8. ([#2759](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2759), [@dependabot[bot]](https://github.com/apps/dependabot))
- Bump github.com/aws/amazon-vpc-cni-k8s to 1.9.1. ([#2769](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2769), [@dependabot[bot]](https://github.com/apps/dependabot))
- Bump k8s.io/release 0.11.0 in `/hack/tools`. ([#2772](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2773),[@dependabot[bot]](https://github.com/apps/dependabot))
- Bump github.com/aws/aws-lambda-go to 1.27.0. ([#2808](https://github.com/kubernetes-sigs/cluster-api-provider-aws/pull/2808), [@dependabot[bot]](https://github.com/apps/dependabot))
### Thanks
Thank you to all our contributors (current and past) for helping us to hit this amazing v1.0.0 milestone. :tada:
A special thanks to [@vincepri](https://github.com/vincepri) for his contributions to CAPA from its inception who moves to emeritus status now. And thanks to [@Ankitasw](https://github.com/Ankitasw), [@shivi28](https://github.com/shivi28), [@dlipovetsky](https://github.com/dlipovetsky) who move to reviewers.
### Images
The images for this release are:
k8s.gcr.io/cluster-api-aws/cluster-api-aws-controller:v1.0.0