Skip to content

@richardcase richardcase released this Aug 16, 2021

Release notes for Cluster API Provider AWS (CAPA) v0.7.0

Documentation

Changelog since v0.6.5

Urgent Upgrade Notes

(No, really, you MUST read this before you upgrade)

  • v0.7.0 is based on Cluster API v1alpha4 and MUST be used in conjunction with Cluster API v0.4.x
  • EKS support has graduated out of experimental and is now enabled by default. 🎉
    Please see the additional section below for details. (#2648, @richardcase)

All users of Cluster API Provider AWS (whether you use EKS or not) should read the notes below regarding the EKS graduation as it impacts the provider as a whole (e.g. IAM permissions)

  • Cluster API Provider AWS will now be preferentially pinned to control plane nodes. This is especially helpful when running self-managed management clusters in AWS as for EC2-based control planes, the control plane EC2 instances have the controlplane.cluster-api.sigs.k8s.io IAM role which has sufficient permissions for Cluster API Provider AWS to run.
    Please ensure your control plane nodes have sufficient resources to run Cluster API Provider AWS. (#2377, @vespian)
  • Controllers policy updated with missing KMS permissions required to use EKS encryption, if you are planning to use EKS encryption then you will need to update your controllers policy by running clusterawsadm bootstrap iam create-cloudformation-stack again. And then when you create a cluster with encryption enabled you will need to use a KMS key that has an alias name starting with cluster-api-provider-aws-. For further information see the docs. (#2447, @richardcase, #2505, @Ankitasw)
  • Controllers policy updated with missing key pairs permission, if you are using or plan to use AWSManagedMachinePool with an SSH key then you will need to update your controllers policy by running clusterawsadm bootstrap iam create-cloudformation-stack again. (#2404, @richardcase)
  • During v0.6.x to v0.7.x upgrade: All secrets that are used for AWSClusterStaticIdentity should be moved to controller namespace manually if they are not already in the capa-system namespace. (#2425, @sedefsavas)
  • Renamed field networkSpec as network. Check AWSCluster and AWSManagedControlPlane manifests when switching versions. (#2571, @Ankitasw)

Changes by Kind

Feature

  • Adds the ability to configure EBS volume throughput in supported EBS types (#2468, @cnmcavoy)
  • Add controller related commands to clusterawsadm: zero/update/print bootstrap credentials and rollout controllers (#2457, @sedefsavas)
  • Add externally managed predicate. Clusters marked with "cluster.x-k8s.io/managed-by" annotation should be skipped from reconciliation. (#2383, @alexander-demichev)
  • Apply clusterctl.cluster.x-k8s.io/move-hierarchy label on the infrastructure cluster global identity CRDs. (#2524, @shivi28)
  • CLI command to list AWS resources created by CAPA (#2509, @shivi28)
  • Clusterawsadm ARM64 builds for both Linux and macOS are now available (#2557, @scottslowe)
  • No longer mandatory to set encryption value to True for root volumes when using encrypted AMIs (#2556, @shivi28)
  • OIDC provider association for EKS clusters. (#2422, @sadysnaat)
  • Tagging elastic IPs on creation (#2551, @Madhur97)
  • Taints supported on EKS node groups created via AWSmanagedMachinePool (#2405, @richardcase)
  • NAT gateways are now deleted in parallel, which should reduce cluster deletion time by >50% for multi-AZ clusters (#2600, @shivi28)
  • Add support for G4ad xlarge and 2xlarge instances powered by AMD Radeon Pro V520 GPUs and AMD 2nd Generation EPYC processors (#2626, @dependabot[bot])
  • Enable usage of GPU optimized AMIs for EKS
    Removed unused fields like ARN and Filters from AMIReference (#2549, @shivi28)
  • Validate label selector for AWS Identity CRDs
  • Add AWSClusterStaticIdentity webhook with validation checks (#2436, @Ankitasw)

Bug or Regression

  • AWSMachine objects successfully deleted in case of invalid credentials (#2601, @shivi28)
  • AWSMachinePool controller removes one old LaunchTemplate version before creating a new version, preventing the number of versions from growing without bound, and reaching the maximum limit. (#2525, @dlipovetsky)
  • Add root storage device tags through additionalTags in ec2 instance (#2463, @Ankitasw)
  • Align region resolution in create/delete cloudformation stack commands (#2423, @Szymongib)
  • Fixes bug in elb.DescribeTags when the user has more than 20 load balancers in an account (#2500, @faiq)
  • Correct field being used for endpoint column on kubectl get AWSCluster (#2529, @njuettner)
  • Do not delete security groups when provided as overrides (#2555, @sedefsavas)
  • EKS Nodepool min/max will be updated to match the AWSManagedMachinePool spec, overriding changes to min/max made via the AWS Console, CLI, or SDK. (#2375, @richardcase)
  • RBAC permission and update documentation for multi-tenancy (#2373, @paulcarlton-ww)
  • Specifying no SSH key for machine pool launch templates. (#2362, @jimmidyson)
  • When the AWSMachinePool controller scales an AWS Auto Scaling Group, it updates the Launch Template with a valid bootstrap token. (#2354, @dlipovetsky)
  • Patch VPC ID immediately after VPC creation, to deal with edge case where multiple VPCs may get created with the same tags. (#2587, @sedefsavas)
  • Process extra statements for Cluster API Controllers (#2437, @Szymongib)
  • Update RBAC with missing awsclustercontrolleridentities permission (#2359, @martin-ducar-gd)
  • Update EKSConfig secret on kubeletExtraArgs changes (#2579, @trutx)
  • Fix for reconciling LaunchTemplates. (#2411, @dkoshkin)
  • Fix typo in AWSFargateProfile validation webhook which cause the webhook not called. (#2445, @jzhoucliqr)

Documentation

Other (Cleanup or Flake)

Images

The images for this release are:

  • k8s.gcr.io/cluster-api-aws/cluster-api-aws-controller:v0.7.0

Thanks to all our contributors.

EKS Graduation

All users of Cluster API Provider AWS need to be aware of the following:

EKS support is now enabled by default

If you don't want to enable the EKS functionality then you will need to disable the creation of the IAM permissions via a clusterawsadm configuration file:

apiVersion: bootstrap.aws.infrastructure.cluster.x-k8s.io/v1alpha1
kind: AWSIAMConfiguration
spec:
  eks:
    disable: true

which you can then use to create/update the CloudFormation stack:

clusterawsadm bootstrap iam create-cloudformation-stack --config bootstrap-config.yaml

Additionally, you need to disable the EKS controllers by setting the CAPA_EKS environment variable to false before doing clusterctl init. For example:

export CAPA_EKS=false
clusterctl init --infrastructure=aws

Removal of EKS Bootstrap & Controlplane Providers

The EKS bootstrap and controlplane providers have been merged into the main infrastructure provider/manager. You will need to remove any reference to aws-eks in the control-plane/bootstrap flags for clusterctl init:

For example, change this:

clusterctl init --infrastructure=aws --control-plane aws-eks --bootstrap aws-eks

to this:

clusterctl init --infrastructure=aws

AWSManagedCluster has been removed

If you are using AWSManagedCluster then you will need to replace it with a reference to the AWSmanagedControlPlane. For example, change this:

apiVersion: cluster.x-k8s.io/v1alpha4
kind: Cluster
metadata:
  name: "cl1"
spec:
  clusterNetwork:
    pods:
      cidrBlocks: ["192.168.0.0/16"]
  infrastructureRef:
    apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
    kind: AWSManagedCluster
    name: "cl1"
  controlPlaneRef:
    kind: AWSManagedControlPlane
    apiVersion: controlplane.cluster.x-k8s.io/v1alpha4
    name: "cl1-control-plane"

to this:

apiVersion: cluster.x-k8s.io/v1alpha4
kind: Cluster
metadata:
  name: "cl1"
spec:
  clusterNetwork:
    pods:
      cidrBlocks: ["192.168.0.0/16"]
  infrastructureRef:
    kind: AWSManagedControlPlane
    apiVersion: controlplane.cluster.x-k8s.io/v1alpha4
    name: "cl1-control-plane"
  controlPlaneRef:
    kind: AWSManagedControlPlane
    apiVersion: controlplane.cluster.x-k8s.io/v1alpha4
    name: "cl1-control-plane"

Fargate profile support remains experimental

To use Faregate Profiles with EKS it must be enabled using the EKSFargate feature flag. This can be done before running clusterctl init using the EXP_EKS_FARGATE environment variable:

export EXP_EKS_FARGATE=true
clusterctl init --infrastructure=aws

You will also need to ensure you have the fargate default profile created. See the docs for further information.

Dependency Updates

Added

  • bazil.org/fuse: 371fbbd
  • cloud.google.com/go/bigquery: v1.8.0
  • cloud.google.com/go/datastore: v1.1.0
  • cloud.google.com/go/firestore: v1.1.0
  • cloud.google.com/go/pubsub: v1.3.1
  • cloud.google.com/go/storage: v1.10.0
  • dmitri.shuralyov.com/gpu/mtl: 666a987
  • github.com/Azure/azure-sdk-for-go: v16.2.1+incompatible
  • github.com/Azure/go-autorest: v14.2.0+incompatible
  • github.com/Microsoft/hcsshim/test: 43a75bb
  • github.com/Shopify/logrus-bugsnag: 577dee2
  • github.com/antihax/optional: v1.0.0
  • github.com/armon/circbuf: bbbad09
  • github.com/armon/go-metrics: f0300d1
  • github.com/armon/go-radix: 7fddfc3
  • github.com/benbjohnson/clock: v1.1.0
  • github.com/bitly/go-simplejson: v0.5.0
  • github.com/bketelsen/crypt: v0.0.4
  • github.com/bmizerany/assert: b7ed37b
  • github.com/bshuster-repo/logrus-logstash-hook: v0.4.1
  • github.com/bugsnag/bugsnag-go: b1d1530
  • github.com/bugsnag/osext: 0dd3f91
  • github.com/bugsnag/panicwrap: e2c2850
  • github.com/chai2010/gettext-go: c6fed77
  • github.com/checkpoint-restore/go-criu/v4: v4.1.0
  • github.com/chzyer/logex: v1.1.10
  • github.com/chzyer/readline: 2972be2
  • github.com/chzyer/test: a1ea475
  • github.com/cilium/ebpf: v0.4.0
  • github.com/cncf/xds/go: fbca930
  • github.com/containerd/aufs: v1.0.0
  • github.com/containerd/btrfs: v1.0.0
  • github.com/containerd/cgroups: v1.0.1
  • github.com/containerd/console: v1.0.2
  • github.com/containerd/containerd: v1.5.2
  • github.com/containerd/continuity: v0.1.0
  • github.com/containerd/fifo: v1.0.0
  • github.com/containerd/go-cni: v1.0.2
  • github.com/containerd/go-runc: v1.0.0
  • github.com/containerd/imgcrypt: v1.1.1
  • github.com/containerd/nri: v0.1.0
  • github.com/containerd/ttrpc: v1.0.2
  • github.com/containerd/typeurl: v1.0.2
  • github.com/containerd/zfs: v1.0.0
  • github.com/containers/ocicrypt: v1.1.1
  • github.com/coredns/caddy: v1.1.0
  • github.com/coreos/go-systemd/v22: v22.3.2
  • github.com/cyphar/filepath-securejoin: v0.2.2
  • github.com/daviddengcn/go-colortext: 511bcaf
  • github.com/denverdino/aliyungo: a747050
  • github.com/dnaeon/go-vcr: v1.0.1
  • github.com/docker/go-connections: v0.4.0
  • github.com/docker/go-events: e31b211
  • github.com/docker/go-metrics: v0.0.1
  • github.com/docker/libtrust: fa56704
  • github.com/drone/envsubst/v2: 7bf45db
  • github.com/evanphx/json-patch/v5: v5.2.0
  • github.com/exponent-io/jsonpath: d6023ce
  • github.com/fatih/camelcase: v1.0.0
  • github.com/form3tech-oss/jwt-go: v3.2.3+incompatible
  • github.com/frankban/quicktest: v1.11.3
  • github.com/fullsailor/pkcs7: d7302db
  • github.com/fvbommel/sortorder: v1.0.1
  • github.com/garyburd/redigo: 535138d
  • github.com/go-errors/errors: v1.0.1
  • github.com/go-gl/glfw/v3.3/glfw: 6f7a984
  • github.com/go-gl/glfw: e6da0ac
  • github.com/go-ini/ini: v1.25.4
  • github.com/go-kit/log: v0.1.0
  • github.com/go-task/slim-sprig: 348f09d
  • github.com/gobuffalo/here: v0.6.0
  • github.com/godbus/dbus/v5: v5.0.4
  • github.com/gogo/googleapis: v1.4.0
  • github.com/golangplus/testing: af21d9c
  • github.com/google/go-github/v33: v33.0.0
  • github.com/google/martian/v3: v3.1.0
  • github.com/google/shlex: e7afc7f
  • github.com/gorilla/handlers: 60c7bfd
  • github.com/gorilla/mux: v1.7.2
  • github.com/hashicorp/consul/api: v1.1.0
  • github.com/hashicorp/consul/sdk: v0.1.1
  • github.com/hashicorp/errwrap: v1.0.0
  • github.com/hashicorp/go-cleanhttp: v0.5.1
  • github.com/hashicorp/go-immutable-radix: v1.0.0
  • github.com/hashicorp/go-msgpack: v0.5.3
  • github.com/hashicorp/go-multierror: v1.0.0
  • github.com/hashicorp/go-rootcerts: v1.0.0
  • github.com/hashicorp/go-sockaddr: v1.0.0
  • github.com/hashicorp/go-uuid: v1.0.1
  • github.com/hashicorp/go.net: v0.0.1
  • github.com/hashicorp/logutils: v1.0.0
  • github.com/hashicorp/mdns: v1.0.0
  • github.com/hashicorp/memberlist: v0.1.3
  • github.com/hashicorp/serf: v0.8.2
  • github.com/ianlancetaylor/demangle: 28f6c0f
  • github.com/jessevdk/go-flags: v1.4.0
  • github.com/jpillora/backoff: v1.0.0
  • github.com/klauspost/compress: v1.11.13
  • github.com/kr/fs: v0.1.0
  • github.com/markbates/pkger: v0.17.1
  • github.com/marstr/guid: v1.1.0
  • github.com/miekg/pkcs11: v1.0.3
  • github.com/mistifyio/go-zfs: f784269
  • github.com/mitchellh/cli: v1.0.0
  • github.com/mitchellh/go-testing-interface: v1.0.0
  • github.com/mitchellh/go-wordwrap: v1.0.0
  • github.com/mitchellh/gox: v0.4.0
  • github.com/mitchellh/iochan: v1.0.0
  • github.com/mitchellh/osext: 5e2d6d4
  • github.com/moby/locker: v1.0.1
  • github.com/moby/spdystream: v0.2.0
  • github.com/moby/sys/mountinfo: v0.4.1
  • github.com/moby/sys/symlink: v0.1.0
  • github.com/moby/term: df9cb8a
  • github.com/monochromegane/go-gitignore: 205db1a
  • github.com/morikuni/aec: v1.0.0
  • github.com/mrunalp/fileutils: v0.5.0
  • github.com/ncw/swift: v1.0.47
  • github.com/niemeyer/pretty: a10e7ca
  • github.com/opencontainers/image-spec: v1.0.1
  • github.com/opencontainers/runc: v1.0.0-rc93
  • github.com/opencontainers/runtime-spec: e6143ca
  • github.com/opencontainers/runtime-tools: 1d69bd0
  • github.com/opencontainers/selinux: v1.8.0
  • github.com/pascaldekloe/goe: 57f6aae
  • github.com/pkg/sftp: v1.10.1
  • github.com/posener/complete: v1.1.1
  • github.com/rivo/uniseg: v0.2.0
  • github.com/ryanuber/columnize: 9b3edd6
  • github.com/satori/go.uuid: v1.2.0
  • github.com/sean-/seed: e2103e2
  • github.com/seccomp/libseccomp-golang: v0.9.1
  • github.com/stefanberger/go-pkcs11uri: 78d3cae
  • github.com/stoewer/go-strcase: v1.2.0
  • github.com/syndtr/gocapability: 42c35b4
  • github.com/tchap/go-patricia: v2.2.6+incompatible
  • github.com/willf/bitset: v1.1.11
  • github.com/xlab/treeprint: a009c39
  • github.com/yuin/goldmark: v1.3.5
  • github.com/yvasiyarov/go-metrics: 57bccd1
  • github.com/yvasiyarov/gorelic: a9bba5b
  • github.com/yvasiyarov/newrelic_platform_go: b21fdbd
  • go.etcd.io/etcd/api/v3: v3.5.0
  • go.etcd.io/etcd/client/pkg/v3: v3.5.0
  • go.etcd.io/etcd/client/v2: v2.305.0
  • go.etcd.io/etcd/client/v3: v3.5.0
  • go.mozilla.org/pkcs7: 432b235
  • go.opentelemetry.io/proto/otlp: v0.7.0
  • go.starlark.net: 8dd3e2e
  • go.uber.org/goleak: v1.1.10
  • golang.org/x/term: 6a3ed07
  • google.golang.org/cloud: 975617b
  • gotest.tools/v3: v3.0.3
  • k8s.io/component-helpers: v0.21.2
  • k8s.io/kubectl: v0.21.2
  • k8s.io/kubernetes: v1.13.0
  • k8s.io/metrics: v0.21.2
  • rsc.io/binaryregexp: v0.2.0
  • sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.0.22
  • sigs.k8s.io/cluster-api/test: v0.4.1
  • sigs.k8s.io/kustomize/api: v0.8.8
  • sigs.k8s.io/kustomize/cmd/config: v0.9.10
  • sigs.k8s.io/kustomize/kustomize/v4: v4.1.2
  • sigs.k8s.io/kustomize/kyaml: v0.10.17
  • sigs.k8s.io/structured-merge-diff/v3: v3.0.0
  • sigs.k8s.io/structured-merge-diff/v4: v4.1.2

Changed

Removed

  • github.com/bifurcation/mint: 93c51c6
  • github.com/caddyserver/caddy: v1.0.3
  • github.com/cenkalti/backoff: v2.1.1+incompatible
  • github.com/cheekybits/genny: 9127e81
  • github.com/drone/envsubst: efdb65b
  • github.com/go-acme/lego: v2.5.0+incompatible
  • github.com/go-sql-driver/mysql: v1.5.0
  • github.com/google/go-github: v17.0.0+incompatible
  • github.com/google/gopacket: v1.1.17
  • github.com/jimstudt/http-authentication: 3eca13d
  • github.com/klauspost/cpuid: v1.2.0
  • github.com/kylelemons/godebug: d65d576
  • github.com/lucas-clemente/aes12: cd47fb3
  • github.com/lucas-clemente/quic-clients: v0.1.0
  • github.com/lucas-clemente/quic-go-certificates: d2f8652
  • github.com/lucas-clemente/quic-go: v0.10.2
  • github.com/marten-seemann/qtls: v0.2.3
  • github.com/mholt/certmagic: 6a42ef9
  • github.com/naoina/go-stringutil: v0.1.0
  • github.com/naoina/toml: v0.1.1
  • github.com/operator-framework/operator-sdk: v0.0.7
  • gopkg.in/mcuadros/go-syslog.v2: v2.2.1
  • sigs.k8s.io/kustomize: v2.0.3+incompatible
  • sigs.k8s.io/structured-merge-diff/v2: v2.0.1
Contributors
richardcase, jimmidyson, and 20 other contributors
Assets 20
Pre-release
Pre-release

@sedefsavas sedefsavas released this Jul 30, 2021

🚨 This is an ALPHA RELEASE. Use it only for testing purposes, if you find any bugs file an issue. v1alpha4 API is not yet complete.

The images for this release are:
k8s.gcr.io/cluster-api-aws/cluster-api-aws-controller:v0.7.0-alpha.0
k8s.gcr.io/cluster-api-aws/eks-controlplane-controller:v0.7.0-alpha.0
k8s.gcr.io/cluster-api-aws/eks-bootstrap-controller:v0.7.0-alpha.0

Thanks to all our contributors.

Assets 20

@sedefsavas sedefsavas released this Jul 30, 2021

Changelog since v0.6.7

Bug or Regression

The images for this release are:
k8s.gcr.io/cluster-api-aws/cluster-api-aws-controller:v0.6.8
k8s.gcr.io/cluster-api-aws/eks-controlplane-controller:v0.6.8
k8s.gcr.io/cluster-api-aws/eks-bootstrap-controller:v0.6.8

Thanks to all our contributors.

Contributors
sedefsavas
Assets 21

@randomvariable randomvariable released this Jul 20, 2021

IMPORTANT:

!!Do not use this release!! There is a critical bug in this release that causes cluster deletion failures, which is solved in v0.6.8. This bug does not impact any other release.

Urgent Upgrade Notes

(No, really, you MUST read this before you upgrade)

  • Action required
    Controllers policy updated with missing KMS permissions required to use EKS encryption, if you are planning to use EKS encryption then you will need to update your controllers policy by running clusterawsadm bootstrap iam create-cloudformation-stack again. And then when you create a cluster with encryption enabled you will need to use a KMS key that has an alias name starting with cluster-api-provider-aws-. For further information see docs. (#2448, @richardcase)

Changes by Kind

Feature

  • Taints supported on EKS node groups created via AWSManagedMachinePool (#2450, @richardcase)

Bug or Regression

  • AWSMachinePool controller removes one old LaunchTemplate version before creating a new version, preventing the number of versions from growing without bound, and reaching the maximum limit. (#2531, @dlipovetsky)
  • Fix for ELB deletion when there are more than 20 ELBs. (#2512, @faiq)
  • Fix for only deleting Security Groups managed by CAPA controllers, not the overridden ones. (#2560, @sedefsavas)
  • Patch VPC ID immediately after VPC creation, to deal with edge case where multiple VPCs may get created with the same tags. (#2587, @sedefsavas)
  • Fix for reconciling LaunchTemplates. (#2410, @dkoshkin)
  • Fix typo in AWSFargateProfile validation webhook which cause the webhook not called. (#2446, @jzhoucliqr)

Other (Cleanup or Flake)

See CHANGELOG.md for dependency updates.

Contributors
richardcase, randomvariable, and 5 other contributors
Assets 20

@sedefsavas sedefsavas released this May 21, 2021

Release notes for Cluster API Provider AWS (CAPA) v0.6.6

Documentation

Changelog since v0.6.5

Urgent Upgrade Notes

(No, really, you MUST read this before you upgrade)

!Important Release Note !(This node is added after the release)
A new Launch Template Version gets created almost at each reconcile and since there is a 10,000 versions per launch template limitation, AWSMachinePools stop working after 2 months and needs to be recreated (#2368). This will be fixed in the next release.

!Action required!
Controllers policy updated with missing key pairs permission, if you are using or plan to use AWSManagedMachinePool with an SSH key then you will need to update your controllers policy by running clusterawsadm bootstrap iam create-cloudformation-stack again. (#2408, @richardcase)

Changes by Kind

Bug or Regression

  • Update EKS Nodepool min/max to match the AWSManagedMachinePool spec, overriding changes to min/max made via the AWS Console, CLI, or SDK (#2407, @richardcase)
  • Fix for reconciling LaunchTemplates after "clusterctl move"(#2394, @sedefsavas) (#2410, @dkoshkin)
  • Fix specifying no SSH key for machine pool launch templates (#2362, @jimmidyson)
  • Update LaunchTemplate with a valid bootstrap token after ASG scale (#2401, @dlipovetsky)
  • Add identity ref support for fargate controller (#2406, @jzhoucliqr)

The images for this release are:
us.gcr.io/k8s-artifacts-prod/cluster-api-aws/cluster-api-aws-controller:v0.6.6
us.gcr.io/k8s-artifacts-prod/cluster-api-aws/eks-controlplane-controller:v0.6.6
us.gcr.io/k8s-artifacts-prod/cluster-api-aws/eks-bootstrap-controller:v0.6.6

Thanks to all our contributors.

Assets 20

@sedefsavas sedefsavas released this Apr 16, 2021

Release notes for Cluster API Provider AWS (CAPA) v0.6.5

Documentation

Changelog since v0.6.4

Urgent Upgrade Notes

(No, really, you MUST read this before you upgrade)

  • The behaviour when selecting which subnets to use with machine pools (AWSMachinePool & AWSManagedMachinePool) when subnet ids haven't been included has changed. There is now a defined order of precedence that will determine which subnets to use:
    1. Subnets defined explicitly in the spec of AWSMachinePool/AWSManagedMachinePool
    2. If AvailabilityZones is specified on AWSMachinePool/AWSManagedMachinePool then the subnets associated with those AZs will be used
    3. If failureDomains are specified in the MachinePool then subnets that are in those failureDomains (a.k.a. Availability Zones) will be used
    4. All the private subnets from the control plane are used (#2302, @richardcase)
  • EKS: New AWSManagedMachinePool resources with non-empty remoteAccess now require remoteAccess.public: true in order to allow public access to SSH on port 22 (#2243, @michaelbeaumont)

Changes by Kind

API Change

  • Add the following cluster-scoped resources for multi-tenancy support:
    • AWSClusterStaticIdentity - Static credentials using a Access Key ID and Secret Key
    • AWSClusterControllerIdentity - A singleton resource that states a cluster can use inherited credentials
    • AWSClusterRoleIdentity - An IAM role definition (#2253)
  • Add ability to toggle the new AWS Capacity Rebalance feature by setting a new .spec.capacityRebalance field in AWSMachinePool objects. (#2288, @trutx)

Feature

  • Add Multi-tenancy support (multi-tenancy proposal) (#2253)
  • For migration of current cluster resources to the new multi-tenancy model, there is a new experimental controller
    AutoControllerIdentityCreator that will create and apply AWSClusterControllerIdentity to all existing resources. This will be enabled by default until v1alpha4.
    No additional steps are needed to migrate existing clusters, multi-tenancy model is fully backward-compatible when this controller is kept enabled (#2253)
  • Add clusterawsadm ami list command to list AMIs that can be filtered by region, OS, and Kubernetes version. (#2304, @sedefsavas)
  • clusterawsadm ami commands now support --source-region to copy AMIs across regions (#2345)
  • clusterawsadm ami commands now output versioned AWSAMIList and AWSAMI resources to stdout (#2345, @randomvariable)
  • Add the ability to enable the AWS SDK debug logging (#2229, @shuheiktgw)
  • Adopt the release-notes tool from kubernetes/release to generate the changelog for a release (#2247, @richardcase)
  • PRs now require release-notes code block, which is used in the release notes generation (#2232, @richardcase)
  • EKS: Ability to declaratively remove the Amazon VPC CNI when using an alternate CNI (#2292, @richardcase)
  • EKS: Add the AWSFargateProfile resource for managing EKS Fargate profiles (#2265, @michaelbeaumont)
  • EKS: Add/update conditions for the AWSManagedControlPlane to detect when EKS control plane is being created or updated. (#2246, @michaelbeaumont)
  • EKS: Add new cluster template for a GPU-accelerated EKS cluster (#2278, @richardcase)

Documentation

Failing Test

Bug or Regression

  • AWSMachine: Add filters support for additional security groups (#2241, @alexander-demichev)
  • Fix AWSCluster & AWSMachine validation webhooks to accept an empty string for the SSHKeyName field (#2308, @dlipovetsky)
  • Fix bug where custom bootstrap user name was not accepted (#2341, @randomvariable)
  • Restore GovCloud and other AWS partition support for CloudFormation generation. If using EKS, you must provide the relevant value for partition in your clusterawsadm configuration file. (#2289, @randomvariable)

Other (Cleanup or Flake)

  • Add validation for loadbalancer scheme to allow only Internet-facing and internal values (#2290, @sedefsavas)
  • Add test coverage to test grid (#2350, @sedefsavas)
  • Add upgrade to Kubernetes main test (#2313, @sedefsavas)
  • EKS: Removal of AWSManagedCluster from templates/docs to help with the future deprecation in v1alpha4 (#2264, @richardcase)

Support

The images for this release is:
us.gcr.io/k8s-artifacts-prod/cluster-api-aws/cluster-api-aws-controller:v0.6.5
us.gcr.io/k8s-artifacts-prod/cluster-api-aws/eks-controlplane-controller:v0.6.5
us.gcr.io/k8s-artifacts-prod/cluster-api-aws/eks-bootstrap-controller:v0.6.5

Thanks to all our contributors!

Special thanks to @detiber for his contributions to CAPA from its inception who moves to emeritus status now.

Assets 20

@richardcase richardcase released this Jan 22, 2021

Changes since v0.6.3

New Features

  • Add fine-grained service rate limiters (#2201)
  • Add list of instances to AWSMachinePool status (#2197)
  • Add support for AWS_CONTROLLER_IAM_ROLE environment variable using Kiam or IRSA (#2100)
  • clusterawsadm: Allow to take a configuration file to print IAM policy documents (#2147)
  • clusterawsadm: Add ability to copy AMIs to a target account with encryption (#2112, #2203)
  • EKS: addon support (#2202)
  • EKS: Support custom AMI lookup (#2057)
  • EKS: Secondary cidr support for workload clusters (#2086)
  • EKS: Add provisioning of IRSA to workload clusters (#2070)

🐛 Bug Fixes

  • Fix OpenAPI defaulting for secrets backend and add OpenAPI testing (#2135)
  • Updated service account for leader election (#2183)
  • AWSCluster: Error if a loadbalancer exist with the same name in the same region with a different scheme (#2154)
  • AWSCluster: Fix NPE when comparing load balancers (#2163)
  • AWSMachinePool: Trigger rolling replacement upon launch template change (#2193)
  • AWSMachinePool: Remove unused ID field on launch template spec (#2184)
  • EKS: Set Subnets as an optional property (#2140)
  • clusterawsadm: Add UpdateAutoScalingGroup to controller IAM (#2194)

📖 Documentation

  • EKS console documentation (#2187)
  • Fix broken links and emojis (#2159, #2150)
  • Add config example to docs specifying IAM role (#2151)
  • Updated wording on prerequisites doc (#2149)
  • Update consuming-existing-aws-infrastructure.md to provide context to where networkSpec belongs (#2103)
  • ADR: EKS packaging (#2126)
  • ADR: e2e test structure (#2127)
  • AMI Updates (#2164, #2190, #2206)

🌱 Others

  • EKS: e2e tests added (#2168, #2220, #2199, #2188, #2211, #2214)
  • EKS: deletion checks (#2175)
  • AWSCluster: CAPI E2E tests (#2138)
  • Consolidating boskos scripts for CAPA (#2101)
  • Upgrade AWS SDK version to 1.36.26 (#2204)
  • Add Interruptible field to AWSMachine status (#2120)
  • Upgrade CAPI version to v0.3.12 (#2129, #2133, #2198)
  • Refactor image build and release process (#2213, #2215, #2216, #2217)
  • Enable use of shared configuration file in clusterawsadm (#2077)
  • Update CAPA maintainer and reviewers (#2031, #2161)
  • Refactor release process for Github and Staging (#2096)

The images for this release is:
us.gcr.io/k8s-artifacts-prod/cluster-api-aws/cluster-api-aws-controller:v0.6.4
us.gcr.io/k8s-artifacts-prod/cluster-api-aws/eks-controlplane-controller:v0.6.4
us.gcr.io/k8s-artifacts-prod/cluster-api-aws/eks-bootstrap-controller:v0.6.4

Thanks to all our contributors!

Special thanks to @ncdc for his contributions to Cluster API from its inception who moves to emeritus status.

Shoutout to @richardcase for joining the maintainers of Cluster API Provider AWS, as well as @michaelbeaumont, @dthorsen, and @sedefsavas joining the project reviewers.

😊

Assets 18

@randomvariable randomvariable released this Nov 18, 2020

Changes since v0.6.2

🐛 Bug Fixes

  • awsmachinetemplates: Allow cloudInit.secureSecretsBackend to be defaulted (#2111)
  • fix ASG event message (#2108)

🌱 Others

  • Upgrade e2e Kubernetes version to 1.19.4 (#2114)
  • Remove old terraform scripts (#2113)
  • Build new AMIs (#2109)
  • refactor: e2e test reorganisation (#2102)

The images for this release are:
us.gcr.io/k8s-artifacts-prod/cluster-api-aws/cluster-api-aws-controller:v0.6.3
us.gcr.io/k8s-artifacts-prod/cluster-api-aws/eks-controlplane-controller:v0.6.3
us.gcr.io/k8s-artifacts-prod/cluster-api-aws/eks-bootstrap-controller:v0.6.3

Thanks to all our contributors! 😊

Assets 13

@randomvariable randomvariable released this Nov 10, 2020

Changes since v0.6.1

🐛 Bug Fixes

  • Validate that additional security groups can not have filters (#2072)
  • AWSManagedMachinePool: Fix cloud provider key usage and nodegroup IAM role name (#2085)
  • Fallback to cluster subnets on update ASG (#2095)
  • Fix ownerref group on kube secret and configmap (#2092)
  • Add CNI defaulting to the controller (#2090)
  • Update in-controller AWSMachine CloudInit defaulting logic (#2082)
  • Add fallback if subnets not provided on AWSMachinePool (#2051)
  • Make the regex less restrictive to allow underscore etc. for ssh key file name (#2071)
  • Add required iam permission for managed node groups (#2043)
  • Ensure env var enables AWSMachinePool webhooks (#2046)
  • Add more conditions for resource status filtering (#2049)
  • Validate subnet's AZ with failure domain when subnet id is passed (#2011)

📖 Documentation

  • Update docs to use capa-system namespace (#2094)
  • Add ADR template and first ADR (#2080)
  • Updated flavours and docs for machine pools (#2030, #2044)
  • Fix typos in EKS commands (#2038)

🌱 Others

  • Remove unused allow additional roles feature flag related code (#2035)
  • Updated Bastion node's AMIs. Changed the OS version to Ubuntu 20.04 from Ubuntu 16.04 (#2068)
  • Makefile: Ensure manifests compile during verify (#2098)
  • Fix roundtrip conversions between v1alpha2 and v1alpha3 (#2074)

The images for this release are:

  • us.gcr.io/k8s-artifacts-prod/cluster-api-aws/cluster-api-aws-controller:v0.6.2
  • us.gcr.io/k8s-artifacts-prod/cluster-api-aws/eks-controlplane-controller:v0.6.2
  • us.gcr.io/k8s-artifacts-prod/cluster-api-aws/eks-bootstrap-controller:v0.6.2

Thanks to all our contributors! 😊

Assets 13

@randomvariable randomvariable released this Oct 15, 2020

Changes since v0.6.0

⚠️ Breaking Changes

  • EKS Control Plane Provider (aws-eks) has been introduced (#1949, #1997, #1939, #1973, #1966, #1960, #1943)
    As part of this work the infrastructure manager has been refactored to remove the EKS control plane functionality. This means the new provider along with the existing EKS bootstrap provider (which has been renamed aws-eks) will need to be used if you want to create EKS based clusters with Cluster API Provider AWS. For example:
export EXP_EKS=true
clusterctl --infrastructure=aws --control-plane=aws-eks --bootstrap=aws-eks

New Features

  • Allow AWS Systems Manager Parameter Store to be used as a secrets backend for userdata for regions where AWS Secrets Manager is not available (#1924)
  • Add a tag to instances during creation that matches the Cluster API machine name (#2015)
  • Additional user & role mappings for aws-iam-authenticator are now configurable (#1995, #2002, #1938)
  • AWSMachinePools support for EC2 autoscaling groups (#1860, #2010, #2014, #2007, #1863, #2021, #2006, #2000)
  • AWSManagedMachinePool (EKS managed nodegroup) support (#1916, #2024, #2013)
  • Allow specifying subnet IDs to be used for control plane load balancers (#1931)
  • Add ability to specify instance tenancy, i.e. dedicated EC2 instances (#1926)
  • Add conditions for the reconcile delete workflow (#1905)
  • Cluster API Provider AWS can be configured to use custom endpoints for connecting to AWS services (#1858)
  • Improved validation around fields that are passed in as AWS API parameters (#1978)

🐛 Bug Fixes

  • Persist subnet changes into the AWSCluster spec early when using default subnets (#1915)
  • Allow the usage of unmanaged VPCs without public subnets (#1884)
  • Fix NPE when deleting security groups on cluster deletion (#1996)
  • Add externalManagedControlPlane Status to allow node drains under EKS (#1992, #1994)
  • Fix for allowing nodes to join the EKS cluster (#1962)
  • Fix bastion reconcilation and connection error when using eks flavor (#1957)
  • Retry with listing all ELBs when listing by tag fails, fixing an issue in environments where the ResourceTagging API is not available (#1952)
  • AWSMachine ssh key should defer to that configured on the AWSCluster resource when nil (#1932)
  • Add capi exp schema and fix manager args and rbac (#1936)
  • Fix volume description to remove 'root' since it's also used for non-root volume (#2005)
  • Fix incorrect capitalization for eks field (#1998)

📖 Documentation

🌱 Others

  • Remove unused integration test on pull requests (#2012)
  • e2e: Add test for spot instances (#1963)
  • e2e: Verify code compiles on pull requests (#1953)
  • e2e: Install CNI using ClusterResourceSet (#1816)
  • unit tests: instances - Sort tag keys so unit tests can succeed (#1937)
  • Show more helpful error message when duplicate clusters are created across namespaces, resulting in duplicate VPCs (#1880)
  • Golang version updated to 1.13.15 (#1944)
  • Controller runtime updated to 0.5.11 (#1950)

The images for this release is:

Core AWS Controller: us.gcr.io/k8s-artifacts-prod/cluster-api-aws/cluster-api-aws-controller:v0.6.1
EKS Bootstrap Controller: us.gcr.io/k8s-artifacts-prod/cluster-api-aws/eks-bootstrap-controller:v0.6.1
EKS ControlPlane Controller: us.gcr.io/k8s-artifacts-prod/cluster-api-aws/eks-controlplane-controller:v0.6.1

Thanks to all our contributors! 😊

Assets 12