All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Add
global.podSecurityStandards.enforced
value for PSS migration.
8.2.0 - 2023-07-14
- Add necessary values for PSS policy warnings.
8.1.0 - 2023-07-04
- Add support for customizing
controller-manager
terminated-pod-gc-threshold
value through annotationgiantswarm.io/controllermanager-terminated-pod-gc-threshold
- Scripts: Remove
migrate-nginx-ingress-controller.sh
. (#1729)
8.0.1 - 2023-05-16
- Fix helm values json schema.
8.0.0 - 2023-05-16
- Add new control-plane label to detect master nodes.
- Remove logic that migrates CAPI CRDs from experimental group to new group.
- Kubernetes 1.25 support.
7.2.0 - 2023-03-07
- Bump k8s-api-healthz image to 0.2.0.
7.1.0 - 2023-02-07
- Bump k8scc to support improve reliability of calico deployment process for new clusters.
- Enable
CronJobTimeZone
feature gate.
7.0.0 - 2023-01-11
- Bump k8scc to support k8s 1.24.
6.0.3 - 2022-10-11
- Bump k8scc to improve calico crd installer startup time.
6.0.2 - 2022-09-01
- Ensure giantswarm user is always created first.
6.0.1 - 2022-08-31
- Bump k8scc to support cgroups v1 on containerd.
6.0.0 - 2022-08-31
- Bump
k8scc
to fix syntax error ink8s-addons
script. - Bump
k8scc
to enable authn and authz onscheduler
andcontroller-manager
. - Enable external cloud controller manager in k8scc.
- Bump
k8scc
to v14 to support kubernetes 1.23. - Change default storage classes in order to use out-of-tree CSI provisioner.
- Improved storage class migration resource.
- Remove --cloud-config flag from k8s components.
5.22.0 - 2022-07-04
- Tighten pod and container security contexts for PSS restricted policies.
- Fix handling of
MachinePools'
status fields for empty node pools.
- Bump
k8scc
to enableauditd
monitoring forexecve
syscalls.
5.21.0 - 2022-06-22
- Changes to EncryptionConfig in order to work with
encryption-provider-operator
.
- Add pause annotation before deleting old machinepool and azuremachinepool CRs during migration to non-exp.
- Update ownerReference UIDs during migration to non-exp.
- Avoid updating
AzureCluster
at every reconciliation loop in thesubnet
resource. - Avoid saving
AzureCluster
status if there are no changes to avoid useless reconciliation loops.
5.20.0 - 2022-06-07
- Bumped k8scc to latest version to fix
localhost
node name problem.
5.19.0 - 2022-06-07
- Added possibility to specify VNet CIDR in
AzureCluster
. - Migrate MachinePool CRs from
exp.cluster.x-k8s.io/v1alpha3
tocluster.x-k8s.io/v1beta1
- Migrate AzureMachinePool CRs from
exp.infrastructure.cluster.x-k8s.io/v1alpha3
toinfrastructure.cluster.x-k8s.io/v1beta1
- Use systemd cgroup driver on masters and cgroups v2 worker nodes.
- Update github.com/Azure/azure-sdk-for-go to v58.1.0+incompatible
- Update github.com/giantswarm/apiextensions to v6.0.0
- Update github.com/giantswarm/certs to v4.0.0
- Update github.com/giantswarm/conditions to v0.5.0
- Update github.com/giantswarm/conditions-handler to v0.3.0
- Update github.com/giantswarm/k8sclient to v7.0.1
- Update github.com/giantswarm/k8scloudconfig to v13.4.0
- Update github.com/giantswarm/operatorkit to v7.0.1
- Update github.com/giantswarm/release-operator to v3.2.0
- Update github.com/giantswarm/tenantcluster to v6.0.0
- Update k8s.io/api to v0.22.2
- Update k8s.io/apiextensions-apiserver to v0.22.2
- Update k8s.io/apimachinery to v0.22.2
- Update k8s.io/client-go to v0.22.2
- Update sigs.k8s.io/cluster-api to v1.0.5
- Update sigs.k8s.io/cluster-api-provider-azure to v1.0.2
- Update sigs.k8s.io/controller-runtime to v0.10.3
- Bump various other dependencies to address CVEs.
- Set
AzureMachine.Status.Ready
according to AzureMachine's Ready condition.
5.18.0 - 2022-03-21
- Add VerticalPodAutoscaler CR.
5.17.0 - 2022-03-15
- Fix panic while checking for cgroups version during upgrade.
- Add GiantSwarmCluster tag to Vnet.
5.16.0 - 2022-02-23
- Make nodepool nodes roll in case the user switches between cgroups v1 and v2.
5.15.0 - 2022-02-16
- Drop dependency on
giantswarm/apiextensions/v2
. - Bump
k8scloudconfig
to disablerpc-statd
.
5.14.0 - 2022-02-02
- Add support for feature that enables forcing cgroups v1 for Flatcar version
3033.2.0
and above.
- Upgraded to giantswarm/exporterkit v1.0.0
- Upgraded to giantswarm/microendpoint v1.0.0
- Upgraded to giantswarm/microkit v1.0.0
- Upgraded to giantswarm/micrologger v0.6.0
- Upgraded to giantswarm/versionbundle v1.0.0
- Upgraded to spf13/viper v1.10.0
5.13.0 - 2022-01-14
- Bumped k8scc to latest version to support Calico 3.21.
5.12.0 - 2021-12-14
- Deal with AzureClusterConfig CR to avoid cluster operator conflict.
5.11.0 - 2021-12-10
- Remove creation of legacy
AzureClusterConfig
CR as they are unused.
5.10.2 - 2021-12-07
- Consider case when API is down when checking if Master node is upgrading during node pool reconciliation.
5.10.1 - 2021-12-02
- When looking for the encryption secret, search on all namespaces (to support latest cluster-operator).
5.10.0 - 2021-11-08
- Delegate Storage account type selection for master VM's disks to Azure API.
- Separate the drain and node deletion phases during node pool upgrades to avoid stuck disks.
- During an upgrade, fixed the detection of a master node being upgraded to wait before upgrading node pools.
5.9.0 - 2021-09-13
- Use go embed in place of pkger.
- Rename API backend pool to comply with CAPZ.
- Rename API Load Balancing rule to comply with CAPZ.
- Rename API health probe to comply with CAPZ.
- Set
DisableOutputSnat
to true for API Load Balancer Load Balancing Rule to comply with CAPZ. - Bumped
k8scloudconfig
to support Kubernetes 1.21
- Ensure Spark CR release version label is updated when upgrading a cluster.
- Remove MSI extension from node pools.
- Remove VPN gateway cleanup code.
5.8.1 - 2021-07-22
- Fix namespace in secret reference of
AzureClusterIdentity
.
5.8.0 - 2021-07-13
- Allow using an existing public IP for the NAT gateway of worker nodes.
- Fix udev rules that caused
/boot
automount to fail
- Upgrade
k8scloudconfig
tov10.8.1
fromv10.5.0
.
5.7.2 - 2021-06-24
- Ensure the node pool deployment is applied when the node pool size is changed externally.
5.7.1 - 2021-06-21
- Consider node pools out of date if flatcar image has changed.
- Consider node pools out of date if kubernetes version has changed.
AzureClusterIdentity
, and the secret it references are created in theAzureCluster
namespace instead ofgiantswarm
.- Don't update
AzureClusterIdentity
CR's that are not managed by azure-operator.
- Don't get the node pool upgrade stuck if the current state of
AzureMachinePool
is invalid.
5.7.0 - 2021-05-13
- Avoid creating too many worker nodes at the same time when upgrading node pools.
- Don't reimage master instances unless the masters VMSS has the right model.
- Don't wait for new workers to be up during spot instances node pools upgrades.
- Bumped
k8scloudconfig
to10.5.0
to support kubernetes 1.20.
- Rely on k8s nodes instead of Azure instances when counting up-to-date nodes to decide if upgrade has finished.
- Fixed logic that decides whether or not to update an
AzureMachine
based on therelease.giantswarm.io/last-deployed-version
annotation. - When deleting a node pool, also delete the VMSS role assignment.
- Check errors coming from k8s API using the wrapped error.
5.6.0 - 2021-04-21
- Replace VPN Gateway with VNet Peering.
- Update OperatorKit to
v4.3.1
to drop usage of self-link which is not supported in k8s 1.20 anymore.
- Support for single tenant BYOC credentials (warning: the operator will error at startup if any organization credentials is not multi tenant).
5.5.2 - 2021-03-18
- Increase VMSS termination events timeout to 15 minutes.
- Avoid logging errors when trying to create the workload cluster k8s client and cluster is not ready yet.
5.5.1 - 2021-02-24
- Fix a race condition when upgrading node pools with 0 replicas.
- Fix Upgrading condition for node pools with autoscaler enabled.
5.5.0 - 2021-02-22
- Add new handler that creates
AzureClusterIdentity
CRs and the relatedSecrets
out of Giant Swarm's credential secrets. - Ensure
AzureCluster
CR has theSubscriptionID
field set. - Reference
Spark
CR as bootstrap reference from theMachinePool
CR. - Ensure node pools min size is applied immediately when changed.
- Avoid blocking the whole
AzureConfig
handler on cluster creation because we can't update theStorageClasses
. - Avoid overriding the NP size when the scaling is changed by autoscaler.
5.4.0 - 2021-02-05
- Changed
StorageClasses
volumeBindingMode
toWaitForFirstConsumer
. - When setting Cluster
release.giantswarm.io/last-deployed-version
annotation, ClusterReady
condition is not checked anymore, which effectively means that ClusterUpgrading
condition does not depend on ClusterReady
condition. - Use cluster-api-provider-azure v0.4.12-gsalpha1.
- Simplified the upgrade process by leveraging automated draining of nodes.
- Added spot instances support for node pools.
- Setting
release.giantswarm.io/last-deployed-version
onAzureMachine
CR when the control plane creation or upgrade is done. - Setting AzureMachine
Creating
andUpgrading
conditions. Existing condition handlersCreating
andUpgrading
are used.
5.3.0 - 2021-02-01
- Enable VMSS termination events.
- Bump
conditions-handler
to v0.2.1 to getMachinePool
ReplicasReady
fixes.
- When scaling up node pool VMSS during an upgrade, consider the real number of old workers running and not the value in the
MachinePool
CR to handle the case when the Autoscaler changed the size. - Handle WC API not available error in
nodestatus
handler. - Fix logging statements when using debug log level.
- Remove check for
germanywestcentral
region and assume availability zone settings are correct in the CRs.
5.2.1 - 2021-01-20
- Ensure the management cluster's network space is never used for workload clusters.
5.2.0 - 2021-01-14
- Bump
conditions-handler
to v0.2.0 to getMachinePool
ReplicasReady
condition.
- Ensure that availability zones are kept unchanged during migration from 12.x to 13.x.
- Don't set
MachinePool.Status.InfrastructureReady
innodestatus
handler. - Ensure autoscaler annotations during migration from 12.x to 13.x.
- Improve handling errors when accessing Kubernetes API.
5.1.0 - 2020-12-14
- Only submit Subnet ARM deployment when Subnet name or Subnet CIDR change.
- Use controller-runtime instead of typed clients.
- Move provider-independent conditions implementation to external
giantswarm/conditions
andgiantswarm/conditions-handlers
modules. - Replaced Cluster
ProviderInfrastructureReady
with upstreamInfrastructureReady
condition. - Fix incorrect (too early)
Upgrading
condition transition fromTrue
toFalse
.
- Tenant cluster k8s client lookup is cached.
- Add
terminate-unhealthy-node
feature to automaticaly terminate bad and unhealthy nodes in a Cluster. - Cluster
ControlPlaneReady
condition. - AzureMachine
Ready
,SubnetReady
andVMSSReady
conditions. - MachinePool
Creating
condition.
5.0.0 - 2020-12-01
- Use CP public IP's instead of TC public IP's to re-configure masters network security group.
5.0.0-beta7 - 2020-11-26
- Re-configure masters network security group to allow CP's public IPs to etcd LB ingress.
5.0.0-beta6 - 2020-11-26
- Avoid returning errors when still waiting for tenant cluster k8s API to be ready.
- Re-configure workers' network security group rules when upgrading from pre-NP cluster.
- Release allocated subnet when deleting node pool.
- Allow the control plane nodes to access the ETCD cluster for monitoring and backup purposes.
5.0.0-beta5 - 2020-11-18
- Don't set
Upgrading
conditionReason
when it'sFalse
and already contains aReason
.
5.0.0-beta4 - 2020-11-17
5.0.0-beta2 - 2020-11-16
- Roll nodes on release upgrade if major components involved in node creation changes (k8s, flatcar, etcd...).
5.0.0-beta1 - 2020-11-11
- Pass dockerhub token for kubelet authorized image pulling.
- Add missing registry mirrors in
spark
resource. - Set
Cluster
andAzureCluster
Ready status fields.
- Only try to save Azure VMSS IDs in Custom Resources if VMSS exists.
- Fix firewall rules to allow traffic between nodes in all node pools.
- Use
AzureCluster.Spec.NetworkSpec.Vnet.CIDRBlocks
field instead of deprecatedAzureCluster.Spec.NetworkSpec.Vnet.CidrBlock
. - Use
Subnet.CIDRBlocks
field instead of deprecatedSubnet.CidrBlock
. - Simplified master node's upgrade process.
- Upgraded
apiextensions
to3.7.0
. - Upgraded
e2e-harness
to3.0.0
. - Upgraded
helmclient
to3.0.1
. - Upgraded
k8sclient
to5.0.0
. - Upgraded
k8scloudconfig
to9.1.1
. - Upgraded
operatorkit
to4.0.0
. - Upgraded
statusresource
to3.0.0
.
5.0.0-alpha4 - 2020-10-27
- Set cluster-autoscaler-enabled tag to false when min replicas and max replicas are the same for a node pool.
- Removed instance watchdog to save on VMSS API calls.
- Removed 50% VMSS calls remaining check that stopped node operations to prevent 429 error from happening.
5.0.0-alpha3 - 2020-10-16
- Do not use public SSH keys coming from the CRs.
- Try to send only one request to VMSS Azure API from
nodepool
handler.
5.0.0-alpha2 - 2020-10-14
- Fixed firewall rules to allow prometheus to scrape node-level exporters from all node pools.
- Encryption secret is now taken from the CR namespace rather than the organization namespace.
- Get the storage account type to use for node pools' VMSS from the AzureMachinePool CR.
5.0.0-alpha1 - 2020-10-12
- Add monitoring label
- Add provider independent controllers to manage labeling and setting owner references in other provider dependent objects.
- Export container logs for e2e tests to azure analytics.
- Enable persistent volume
expansion
support in the defaultStorage Classes
. - Added to all VMSSes the tags needed by cluster autoscaler.
- Decouple
Service
from controllers using an slice of controllers. - Retry failed ARM deployments regardless of the checksum check.
- Master instances now use a dedicated NAT gateway for egress traffic.
- Updated backward incompatible Kubernetes dependencies to v1.18.5.
- Removed the ETCD Private Load Balancer, reusing the API public one for ETCD traffic (needed by HA masters).
- Updated CAPI to
v0.3.9
and CAPZ tov0.4.7
, using GiantSwarm forks that contain k8s 1.18 changes. - Use
DataDisks
field to define VM disks when creating node pools. - Don't error if certificates are not present yet. Cancel reconciliation and wait until next loop instead.
4.2.0 - 2020-07-28
- Mapping from Cluster API & CAPZ CRs to AzureConfig. This change provides migration path towards Azure Cluster API implementation.
- State machine flowchart generation.
- Support to forward errors to Sentry.
- New
cloudconfig
handler for theAzureCluster
controller that creates the required cloudconfig files in the Storage Account. - Add --service.registry.mirrors flag for setting registry mirror domains.
- New
subnet
handler for theAzureCluster
controller that creates the node pool subnet.
- Allow tenant cluster to be created without built-in workers.
- Changed how the Azure authentication works when connecting to a different Subscription than the Control Plane's one.
- Restricted storage account access to the local VNET only.
- Removed the flatcar migration state machine transitions.
- Calculate CIDR for a new Tenant Cluster using a local resource rather than getting it from
kubernetesd
. - Migrate the
vmsscheck
guards to use the Azure client factory. - Use
0.1.0
tag fork8s-api-heahtz
image. - Use
0.2.0
tag fork8s-setup-network-env
image. - Use fixed value for registry domain (docker.io) and mirrors (giantswarm.azurecr.io).
- Replace --service.registrydomain with --service.registry.domain.
- The Azure MSI extension for linux is not deployed anymore.
- The local calico kubernetes manifests are removed. We use the
k8scloudconfig
ones now.
4.1.0 - 2020-06-24
- Use VNet gateway for egress traffic of worker VMSS instances
- Make the rate limit circuit breaker to only inspect response HTTP status code if there were no errors doing the request.
- Migrate the
vmsscheck
guards to use the Azure client factory. - Move NGINX IC LoadBalancer Service management from azure-operator to nginx-ingress-controller app.
4.0.1 2020-05-20
- Avoid blocking all egress traffic from workers during flatcar migration.
4.0.0 2020-05-05
- Add network policy.
- Replace CoreOS VM image to Flatcar with manual migration.
- Move containerPort values from deployment to
values.yaml
.
- Migrated to go modules.
- Use ARM nested templates instead of relying on Github when using linked templates.
3.0.7 2020-04-28
- Add new instance types: Standard_E8a_v4 and Standard_E8as_v4.
- Some parameters have now defaults so it's easier to run the operator locally.
- Fix for outdated error matching that was preventing clusters from being bootstrapped.
- Reduce number of Azure API calls when creating, updating and scaling clusters which lowers the risk of exceeding Azure API rate limits and hitting error 429.
- Collectors that expose Azure metrics have been migrated to its own repository.
3.0.6 2020-04-09
- Removed usage of LastModelApplied field of the VMSS Instance type.
3.0.5 2020-04-08
- Add azure-operator version to ARM parameters.
- Added
autorest
http decorator to hold back when Azure API responds with "HTTP 429 Too Many Requests".
- Improved the discovery of new nodes.
3.0.1 2020-04-02
- Added process to keep watching for failed instances on the VMSS.
- Fixed workers' over-provisioning during cluster creation.
- Fixed
wait-for-domains
cloud init script.
- Upgraded the Azure SDK and Service API endpoints.
- Retrieve component versions from releases.
- Only roll nodes when they aren't in sync with provider operator.