v1.37.0
Full Changelog: v1.36.0..v1.37.0
Urgent Upgrade Notes
(No, really, you MUST read this before you upgrade)
- [BREAKING CHANGE] fix: a Service whose
service.beta.kubernetes.io/azure-pls-namematches a private link service already in use is now rejected, instead of repointing that private link service to the new Service. correct the annotation on any PLS-enabled Service reporting SyncLoadBalancerFailed after upgrade. (#10943, @Liunardy)
Changes by Kind
Feature
- Add a configurable grace period (nodeInstanceNotFoundGracePeriodInSeconds) in the cloud config for newly registered Kubernetes nodes whose backing Azure VM/VMSS instance is not immediately visible in ARM. (#10605, @robbiezhang)
- Added ServiceGatewayClient to the Azure client factory for managing Azure Service Gateway resources. (#10066, @georgeedward2000)
- Added
AccountOptions.IsNFSEncryptionInTransitEnabledto enable per-protocol NFS encryption in transit on newly created storage accounts. The field is optional, leaving it as nil preserves the existing behavior. (#10812, @rnhan) - Added the
service.beta.kubernetes.io/azure-disable-load-balancer-nsg-ruleService annotation to disable cloud-provider-managed LoadBalancer NSG rule creation for Services whose NSG rules are intentionally managed by operators. (#10508, @nilo19) - Fix:
InvalidSourceRanges,InvalidAllowedIPRangesandConflictConfigurationwarning events are now emitted when a Service is created or updated instead of only during delete, and are no longer emitted when the configuration is rejected and no security group change is made. Deleting a Service is no longer blocked when bothspec.loadBalancerSourceRangesand theservice.beta.kubernetes.io/azure-allowed-ip-rangesannotation are set. feat: a newIPRangeFamilyMismatchwarning event reports IP ranges fromspec.loadBalancerSourceRanges,service.beta.kubernetes.io/load-balancer-source-ranges, andservice.beta.kubernetes.io/azure-allowed-ip-rangeswhose IP family the Service does not have. (#10864, @Liunardy) - The ACR credential provider supports user-assigned managed identities on Azure Arc-enabled servers. (#10830, @hanlin-openai)
Bug or Regression
Added
AccountOptions.SkipHTTPSTrafficOnlyMatchto opt out ofEnableHTTPSTrafficOnlyequality when reusing an existing storage account. Useful for callers such as NFS file share requests where the setting has no effect on the mount protocol and existing accounts should be reused regardless of theirEnableHTTPSTrafficOnlyvalue. (#10826, @andyzhangx)Bug fix: sends extended location when update vmss. (#10816, @wonderyl)
External LoadBalancer Services with invalid or non-public pinned LoadBalancer IPs now fail fast with a validation error instead of listing Azure Public IPs. (#10507, @nilo19)
Fix Azure failed-VM refresh operations to use PATCH so recovery is not rejected with LocationRequired. (#10763, @stbenjam)
Fix workload-identity storage account key retrieval failing with AADSTS500011 in sovereign clouds (Azure China / US Gov / AzureStack) by threading the cloud config into the client assertion credential and the ARM client. (#10903, @andyzhangx)
Fix(multi-slb): deduplicate IP addresses in local service backend pool updates to prevent DuplicateResourceName errors during EndpointSlice churn (#10445, @Liunardy)
Fix(multi-slb): select existing LB with no rules over creating a new one (#10514, @Liunardy)
Fix(multi-slb): support switching internal/external when IP sharing across multiple services
Correctly clean up stale rules and probes when services sharing a frontend IP switch between external and internal in multi-SLB mode. (#10211, @Liunardy)
Fix: IPv6 PIP name lookup on single-stack IPv4 services incorrectly returned the IPv4 annotation value, causing redundant public IP lookups. (#10540, @Liunardy)
Fix: serialize backendPoolUpdater with service reconciliation to prevent concurrent backend pool writes in multi-standard-load-balancer configurations with externalTrafficPolicy: Local (#10328, @Liunardy)
Fix: use network subscription for zone discovery when NetworkResourceSubscriptionID is set (#10515, @Liunardy)
Match Azure Container Registry regional (geo-replica) login server endpoints of the form
<registry>.<region>.geo.azurecr.ioexplicitly in the ACR credential provider’sacrREpattern, instead of relying on the fallback substring match, and add regression tests. (#10720, @lizMSFT)Preserves –node-monitor-period support when upgrading to Kubernetes 1.37 dependencies and adds –concurrent-node-lifecycle-syncs, defaulting to 1. (#11024, @anndono)
The
service.beta.kubernetes.io/azure-pip-tagsannotation no longer sets the Public IP tag keys managed by the controller (k8s-azure-cluster-name,k8s-azure-service,k8s-azure-dns-label-service, and their legacy names). Such keys in the annotation are now ignored, in any letter case, and aWarningevent with reasonIgnoredPIPTagKeysis emitted on the Service. (#10897, @Liunardy)
Dependencies
Added
- cloud.google.com/go/auth: v0.18.2
- github.com/go-openapi/swag/cmdutils: v0.27.1
- github.com/go-openapi/swag/conv: v0.27.1
- github.com/go-openapi/swag/fileutils: v0.27.1
- github.com/go-openapi/swag/jsonutils: v0.27.1
- github.com/go-openapi/swag/jsonutils/fixtures_test: v0.27.1
- github.com/go-openapi/swag/loading: v0.27.1
- github.com/go-openapi/swag/mangling: v0.27.1
- github.com/go-openapi/swag/netutils: v0.27.1
- github.com/go-openapi/swag/pools: v0.27.1
- github.com/go-openapi/swag/stringutils: v0.27.1
- github.com/go-openapi/swag/typeutils: v0.27.1
- github.com/go-openapi/swag/yamlutils: v0.27.1
- github.com/go-openapi/testify/enable/yaml/v2: v2.6.0
- github.com/go-openapi/testify/v2: v2.6.0
- github.com/google/s2a-go: v0.1.9
- github.com/googleapis/enterprise-certificate-proxy: v0.3.11
- github.com/googleapis/gax-go/v2: v2.17.0
- go.opentelemetry.io/otel/metric/x: v0.68.0
Changed
- cel.dev/expr: v0.25.1 → v0.25.2
- github.com/Azure/azure-sdk-for-go/sdk/azcore: v1.21.1 → v1.23.1
- github.com/Azure/azure-sdk-for-go/sdk/azidentity: v1.13.1 → v1.14.1
- github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache: v0.3.2 → v0.4.0
- github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets: v1.4.0 → v1.5.0
- github.com/AzureAD/microsoft-authentication-library-for-go: v1.6.0 → 63dcc2d
- github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp: v1.30.0 → v1.33.0
- github.com/cncf/xds/go: ee656c7 → dba9d58
- github.com/envoyproxy/go-control-plane/envoy: v1.36.0 → v1.37.0
- github.com/envoyproxy/protoc-gen-validate: v1.3.0 → v1.3.3
- github.com/fsnotify/fsnotify: v1.9.0 → v1.10.1
- github.com/fxamacker/cbor/v2: v2.9.0 → v2.9.1
- github.com/go-faker/faker/v4: v4.7.0 → v4.8.0
- github.com/go-jose/go-jose/v4: v4.1.3 → v4.1.4
- github.com/go-logr/logr: v1.4.3 → v1.4.4
- github.com/go-openapi/jsonpointer: v0.21.2 → v1.0.0
- github.com/go-openapi/jsonreference: v0.21.0 → v1.0.0
- github.com/go-openapi/swag: v0.23.1 → v0.27.1
- github.com/golang-jwt/jwt/v5: v5.3.0 → v5.3.1
- github.com/google/cel-go: v0.26.1 → v0.29.2
- github.com/google/pprof: 294ebfa → 545e8a4
- github.com/grpc-ecosystem/grpc-gateway/v2: v2.27.7 → v2.29.0
- github.com/klauspost/compress: v1.18.0 → v1.19.1
- github.com/mailru/easyjson: v0.9.0 → v0.7.7
- github.com/onsi/ginkgo/v2: v2.28.1 → v2.31.0
- github.com/onsi/gomega: v1.39.1 → v1.42.0
- github.com/prometheus/client_golang: v1.23.2 → v1.24.1
- github.com/prometheus/common: v0.67.5 → v0.70.1
- github.com/prometheus/procfs: v0.19.2 → v0.21.1
- github.com/samber/lo: v1.52.0 → v1.53.0
- github.com/sirupsen/logrus: v1.9.3 → v1.9.4
- github.com/spiffe/go-spiffe/v2: v2.6.0 → v2.7.0
- github.com/stoewer/go-strcase: v1.3.1 → v1.3.0
- github.com/stretchr/objx: v0.5.2 → v0.5.3
- github.com/stretchr/testify: v1.11.1 → v1.12.1
- go.etcd.io/bbolt: v1.4.3 → v1.5.0
- go.etcd.io/etcd/api/v3: v3.6.8 → v3.7.0
- go.etcd.io/etcd/client/pkg/v3: v3.6.8 → v3.7.0
- go.etcd.io/etcd/client/v3: v3.6.8 → v3.7.0
- go.etcd.io/etcd/pkg/v3: v3.6.8 → v3.7.0
- go.etcd.io/etcd/server/v3: v3.6.8 → v3.7.0
- go.etcd.io/raft/v3: v3.6.0 → v3.7.0
- go.opentelemetry.io/contrib/detectors/gcp: v1.39.0 → v1.44.0
- go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc: v0.65.0 → v0.68.0
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp: v0.65.0 → v0.69.0
- go.opentelemetry.io/otel: v1.43.0 → v1.46.0
- go.opentelemetry.io/otel/exporters/otlp/otlptrace: v1.40.0 → v1.45.0
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc: v1.40.0 → v1.45.0
- go.opentelemetry.io/otel/exporters/prometheus: v0.61.0 → v0.68.0
- go.opentelemetry.io/otel/metric: v1.43.0 → v1.46.0
- go.opentelemetry.io/otel/sdk: v1.43.0 → v1.46.0
- go.opentelemetry.io/otel/sdk/metric: v1.43.0 → v1.46.0
- go.opentelemetry.io/otel/trace: v1.43.0 → v1.46.0
- go.opentelemetry.io/proto/otlp: v1.9.0 → v1.11.0
- go.yaml.in/yaml/v2: v2.4.3 → v2.4.4
- go.yaml.in/yaml/v3: v3.0.4 → v3.0.5
- golang.org/x/crypto: v0.50.0 → v0.56.0
- golang.org/x/exp: 944ab1f → 746e56f
- golang.org/x/mod: v0.34.0 → v0.41.0
- golang.org/x/net: v0.53.0 → v0.58.0
- golang.org/x/oauth2: v0.34.0 → v0.36.0
- golang.org/x/sync: v0.20.0 → v0.23.0
- golang.org/x/sys: v0.43.0 → v0.48.0
- golang.org/x/term: v0.42.0 → v0.45.0
- golang.org/x/text: v0.36.0 → v0.42.0
- golang.org/x/tools: v0.43.0 → v0.49.0
- gonum.org/v1/gonum: v0.16.0 → v0.17.0
- google.golang.org/genproto/googleapis/api: 8636f87 → 6ac0973
- google.golang.org/genproto/googleapis/rpc: 8636f87 → 6ac0973
- google.golang.org/grpc: v1.79.3 → v1.83.2
- google.golang.org/protobuf: f2248ac → v1.36.12
- k8s.io/api: v0.36.0 → v0.37.0
- k8s.io/apimachinery: v0.36.0 → v0.37.0
- k8s.io/apiserver: v0.36.0 → v0.37.0
- k8s.io/client-go: v0.36.0 → v0.37.0
- k8s.io/cloud-provider: v0.36.0 → v0.37.0
- k8s.io/component-base: v0.36.0 → v0.37.0
- k8s.io/component-helpers: v0.36.0 → v0.37.0
- k8s.io/controller-manager: v0.36.0 → v0.37.0
- k8s.io/gengo/v2: 85fd79d → ec3ebc5
- k8s.io/kms: v0.36.0 → v0.37.0
- k8s.io/kube-openapi: 43fb72c → d427ff9
- k8s.io/kubelet: v0.36.0 → v0.37.0
- k8s.io/streaming: v0.36.0 → v0.37.0
- k8s.io/utils: b8788ab → be93311
- sigs.k8s.io/apiserver-network-proxy/konnectivity-client: v0.34.0 → v0.36.0
- sigs.k8s.io/cloud-provider-azure/pkg/azclient: v0.18.0 → v0.21.0
- sigs.k8s.io/cloud-provider-azure/pkg/azclient/cache: v0.10.0 → v0.14.3
- sigs.k8s.io/cloud-provider-azure/pkg/azclient/configloader: v0.11.0 → v0.15.3
- sigs.k8s.io/structured-merge-diff/v6: v6.3.2 → v6.4.2