github kubernetes-sigs/cluster-api-provider-aws v0.7.0

latest releases: v2.7.1, v2.7.0, v2.6.1...
3 years ago

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

Don't miss a new cluster-api-provider-aws release

NewReleases is sending notifications on new releases.