What's Changed
- Remove support for Amazon Linux 2 by @rifelpet in #17898
- Update distribution matrix for Amazon Linux 2 by @rifelpet in #17943
- metal: Unpin K8s version by @hakman in #17944
- Create iproute2 symlink for kuberouter on older distros by @rifelpet in #17945
- chore(channels): update alpha k8s versions with February releases by @moshevayner in #17948
- versionbump: go 1.25.7 by @justinsb in #17956
- Feature: pull user defined images for warm pool instances by @dezmodue in #17861
- Fix creation of discovery and state store buckets by @rifelpet in #17961
- Migrate more scenario scripts to --test=exec by @rifelpet in #17962
- Migrate e2e template AMIs to SSM params by @rifelpet in #17964
- LBC Scenario - Pass region to AWS CLI by @rifelpet in #17965
- Set kubeconfig for LBC test suite by @rifelpet in #17967
- Enable nf_conntrack kernel module on Rocky 9 by @rifelpet in #17968
- Remove DISCOVERY_STORE handling by @rifelpet in #17969
- kube-router: bump version v2.5.0 -> 2.7.1 by @aauren in #17966
- chore: Add asset hashes for February 2026 releases by @hakman in #17980
- Remove reference to unbound variable by @rifelpet in #17985
- Use golang-based tool for AWS instances availability by @ameukam in #17953
- drop cdn.dl.k8s.io as a mirror by @upodroid in #17976
- drop storage.googleapis.com/k8s-artifacts-cni as a mirror by @hakman in #17987
- tests/ai-conformance: don't panic if no zones for AWS by @justinsb in #17994
- Scenario Fixes by @rifelpet in #17997
- Use a deterministic bucket name in prow jobs by @rifelpet in #17998
- Make region selection determistic from BUILD_ID by @rifelpet in #18000
- Addon Scenario - Remove old feature flag by @rifelpet in #17963
- aws: Bypass LBC webhook for cert-manager by @hakman in #17999
- Bump actions/dependency-review-action from 4.8.2 to 4.8.3 by @dependabot[bot] in #18002
- tests/ai-conformance: fix syntax for enabling gatewayAPI with cilium by @justinsb in #17992
- tests/ai-conformance: fix syntax for enabling nvidia GPU in containerd by @justinsb in #18001
- Consolidate support for ENI-based CNIs by @rifelpet in #17940
- tests/ai-conformance: use nvidia GPU operator by @justinsb in #18005
- tests/ai-conformance: create cluster with some non-GPU nodes by @justinsb in #18006
- tests/ai-conformance: update test job for DRA v1 by @justinsb in #18008
- tests/ai-conformance: use server-side-apply for KubeRay Operator by @justinsb in #18007
- fix: avoid panic if subnet ID is nil by @justinsb in #18010
- tests/ai-conformance: create first tests for AI Conformance by @justinsb in #18009
- gce: don't request migration on instance types that don't support it by @justinsb in #18004
- gce: Wait to delete InstanceManagers and InstanceTemplates by @Camila-B in #18013
- Bump release tools for E2E tests by @ameukam in #18017
- Add warning for non-production use in README by @ritazh in #17952
- Keep skipping certain tests on older cilium versions by @rifelpet in #18019
- chore: Add hashes for additional February releases by @hakman in #18021
- chore: Bump alpha channels with additional February releases by @hakman in #18020
- chore: Bump etcd-manager to v3.0.20260227 by @hakman in #18026
- build(deps): bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #18029
- build(deps): bump actions/setup-go from 6.2.0 to 6.3.0 by @dependabot[bot] in #18030
- chore(channels): promote alpha to stable by @moshevayner in #18033
- feat: Use wellknownports for etcd and add cilium etcd ports by @apeabody in #18035
- tests/ai-conformance: Install prometheus for metrics by @ameukam in #18018
- build(deps): bump actions/dependency-review-action from 4.8.3 to 4.9.0 by @dependabot[bot] in #18042
- Fix node bootstrap challenge response hashing by @rifelpet in #18043
- Add addons node to scalability tests by @serathius in #18036
- test: Skip dumping not found nodes for GCE by @hakman in #18049
- allow pods to reach metric ports running on control plane nodes when using gce alias ip by @upodroid in #18052
- [aiconformance] Add test for gang scheduling with kueue by @justinsb in #18053
- chore: Bump Go to v1.25.8 by @hakman in #18058
- [aiconformance] Add tests for security / isolation by @justinsb in #18055
- scaletest: Move Prometheus to addon nodes by @serathius in #18048
- [aiconformance]: Add robust_controller test using KubeRay by @justinsb in #18056
- scaletest: Use sleep instead of wait for large clusters by @serathius in #18065
- [aiconformance]: Enable Cluster Autoscaler for GPU Nodes by @ameukam in #18066
- scaletest: Increase scalability tests log verbosity to 3 by @serathius in #18069
- [aiconformance]: Enable Metrics Server by @ameukam in #18067
- fix: don't panic when dumping nodes if we didn't capture cloud resources by @justinsb in #18072
- [aiconformance]: Validate networking/ai_inference requirements by @justinsb in #18063
- [aiconformance]: Add accelerator metrics validator test by @justinsb in #18064
- [aiconformance]: observability/ai_service_metrics by @justinsb in #18071
- [aiconformance]: Add K8s wrapper for DaemonSet object by @ameukam in #18073
- [aiconformance]: Add driver_runtime_management validator by @ameukam in #18074
- [aiconformance]: unify output under tests/ directory by @justinsb in #18076
- [aiconformance]: render markdown to HTML by @justinsb in #18077
- scaletest: Align kops scalability configuration with kube-up for kube-apiserver
deleteCollectionsWorkersandMaxRequestInflightby @ronaldngounou in #18081 - [aiconformance]: Write conformance report to file by @justinsb in #18084
- [aiconformance]: Unify how we write test artifacts by @justinsb in #18087
- scaletest: Align kops scalability configuration with kube-up for kubeapisever
CompactionIntervalby @ronaldngounou in #18086 - Refactor interface type check to more idiomatic syntax by @rramkumar1 in #17951
- scaletest: Align kops scalability configuration with kube-up for kubelet kubeAPIQPS by @ronaldngounou in #18085
- Move VFS acls framework closer to VFS implementation code by @rramkumar1 in #17949
- Fix existing VPCs/Subnets with IPv6 by @rlees85 in #18089
- [aiconformance]: test for schedulingOrchestration pod autoscaling by @justinsb in #18075
- Enable E2E external CSI testing on GCP by @rifelpet in #18098
- [aiconformance] add test for schedulingOrchestration clusterAutoscaling by @justinsb in #18100
- Replace cwd with go:embed for storage.testdriver manifests by @rifelpet in #18102
- chore(channels): bump alpha channel k8s and ubuntu AMI versions by @moshevayner in #18103
- [aiconformance]: set namespace explicitly for testdata by @ameukam in #18101
- chore: Bump Google Cloud deps in kubetest by @hakman in #18107
- [aiconformance] Explicity set the namespace for kubectl commands by @ameukam in #18108
- Fix S3 DeleteBucket 301 redirect during teardown by @ameukam in #18109
- Update Cluster Autoscaler to 1.35.0 by @ameukam in #18110
- [aiconformance] add test for schedulingOrchestration clusterAutoscaling by @hakman in #18112
- Pin upload-artifacts GHA to commit sha by @rifelpet in #18114
- Add troubleshooting info for E2E jobs by @rifelpet in #18116
- Fix HasHighlyAvailableControlPlane to use AllInstanceGroups by @pkubicsek-sb in #17740
- Honor stderrthreshold when logtostderr is enabled by @pierluigilenoci in #18115
- Add excludedInstanceTypes to instanceRequirements by @jim-barber-he in #18113
- chore(channels): promote alpha to stable by @moshevayner in #18122
- Fix instanceRequirements memory assignment bug by @jim-barber-he in #18123
- Add --use-kubeconfig to kops reconcile cluster by @rifelpet in #18126
- vfs: Silence warnings when the S3 provider has no supported checksum by @hakman in #18128
- vfs: Pass VFS scheme to S3 client by @hakman in #18129
- do: Upgrade CSI and enable E2E by @rifelpet in #18131
- feat(vfs): add Linode (Akamai) object storage schema support by @moshevayner in #18138
- aws: Add EnableOutOfServiceTaint field to NodeTerminationHandler by @rifelpet in #18140
- test: Dump logs for upgrade-ab scenario when failing during validation by @hakman in #18143
- azure: Add support for Azure Disk CSI Driver by @hakman in #18141
- gce: support for role=apiserver by @rifelpet in #18147
- Fix cilium-etcd on GCE by @rifelpet in #18146
- gce: Fix instance group deletion by @rifelpet in #18148
- Move johngmyers to emeritus by @johngmyers in #18144
- test: Update verify-terraform to use v1.14.8 and support optional filter by @hakman in #18150
- Add node-volume-type flag to create cluster command by @rifelpet in #18145
- Add NodeLeaseDurationSeconds and EventRecordQPS API fields by @rifelpet in #18153
- Add some clarification to KubeSchedulerConfiguration by @rifelpet in #18151
- Add EnableHostFirewall field to CiliumNetworkingSpec by @rifelpet in #18152
- azure: Use larger VM SKU by default in tests and update skips by @hakman in #18154
- feat: Replace shipbot with gh-based script for promoting binaries by @hakman in #18095
- azure: Add experimental Terraform support by @hakman in #18149
- azure: Set provider ID when starting kubelet by @hakman in #18155
- azure: Fix task dependencies during cluster update by @hakman in #18156
- azure: Fix Terraform LoadBalancer task dependencies on PublicIP by @hakman in #18157
- gce: Fix apiserver e2e template by @rifelpet in #18158
- gce: Fix instance tags with role=apiserver by @rifelpet in #18159
- build(deps): bump actions/setup-go from 6.3.0 to 6.4.0 by @dependabot[bot] in #18161
- gce: Allow role=apiserver with dns=none by @rifelpet in #18162
- gce: Add kops-controller to internal load balancer by @rifelpet in #18169
- azure: Reduce flakiness of CSI e2e tests by @hakman in #18168
- gce: Use SSL health check for kops-controller by @rifelpet in #18171
- feat: Add optional
leasesetcd shard by @apeabody in #18054 - Add --control-plane-volume-type flag to kops create cluster by @Camila-B in #17955
- Revert "gce: Use SSL health check for kops-controller" by @hakman in #18172
- Update Golang to 1.25.9 by @ameukam in #18173
- Reapply "gce: Use SSL health check for kops-controller" by @rifelpet in #18174
- test: Run update cluster without --yes first for E2E templates by @rifelpet in #18175
- linode: add Linode (Akamai) node configuration and identity by @moshevayner in #18166
- Load nf_tables module and install iptables-nft on RHEL10+ by @rifelpet in #18179
- aws: Use HTTPS for kops-controller TG health check by @rifelpet in #18178
- build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 by @dependabot[bot] in #18180
- chore: Make AssetBuilder concurrency-safe by @hakman in #18181
- feat(cloud): add Linode (Akamai) cloud provider API registration by @moshevayner in #18177
- azure: Use HTTPS health check for kops-controller by @hakman in #18182
- azure: Fix possible nil pointer dereferences by @hakman in #18184
- azure: Fix deletion ordering issues by @hakman in #18185
- azure: Delete RoleAssignment after VMScaleSet during cluster deletion by @hakman in #18186
- azure: Get node info from node labels for CSI driver by @hakman in #18170
- azure: Move load balancer probe and rule configuration to model by @hakman in #18183
- test: Set E2E --node-os-arch=arm64 for Rocky10 by @rifelpet in #18192
- Continue skipping networking tests in k8s 1.37 by @rifelpet in #18193
- azure: Fix disk deletion loop during cluster teardown by @hakman in #18191
- tests: fix KOPS_BASE_URL for build-kubernetes runs by @hakman in #18189
- Fix nil panic during GCE deletion by @rifelpet in #18195
- azure: Handle missing resource group in disk listing by @hakman in #18194
- azure: Move hardcoded task config to model using SDK types by @hakman in #18190
- azure: Fix disk deletion by blocking on parent VMSS instead of VM instance by @hakman in #18196
- vfs: Pass S3 provider-specific options to clients by @hakman in #18132
- azure: Deploy cloud-controller-manager for node lifecycle and LB support by @hakman in #18197
- fix: use KOPS_BASE_URL image version when side-loading by @hakman in #18200
- chore: Remove support for Kubernetes 1.30 in kOps 1.36 by @hakman in #18202
- e2e: Stop running in-tree volume tests for CSI-migrated drivers by @hakman in #18201
- chore(channels): update k8s and ubuntu jammy ami versions in alpha channel by @moshevayner in #18203
- gce: Disallow role=apiserver with dns=none by @rifelpet in #18214
- hetzner: add cluster-autoscaler addon for Hetzner cloud provider by @bjornharrtell in #18135
- upgrade-ab: source env file to get CLUSTER_NAME by @hakman in #18219
- aws: Update EBS CSI driver to 1.58.0 by @rifelpet in #18220
- aws: update LBC to v3.2.2 via helm+kustomize by @hakman in #18221
- aws: Prune LBC deployment by @rifelpet in #18222
- aws: Run LBC E2E tests in parallel by @rifelpet in #18223
- azure: add regenerate.sh for addons by @hakman in #18225
- do: migrate to NodeReconciler and drop legacy code by @hakman in #18227
- fix: honor klog -stderrthreshold even when -logtostderr is true by @pierluigilenoci in #18231
- Initial support for Ubuntu 26.04 by @upodroid in #18232
- aws: Remove ALBTargetControlConfig CRD from LBC manifest by @rifelpet in #18233
- Deprecreate Debian 10 and Ubuntu 20.04 in kops 1.35 by @rifelpet in #18234
- Remove support for Ubuntu 20.04 and Debian 10 by @rifelpet in #18235
- aws: Use HTTPS health check with /healthz for kops-controller by @hakman in #18236
- Support NLBSecurityGroupMode for AWS Cloud Controller Manager by @mfbonfigli in #18211
- cilium: require k8s-connectivity in liveness probe by @hakman in #18237
- feat: verify config server IPs with DNS name by @hakman in #18241
- gce: Include MIG scaling errors when instances are not found by @rifelpet in #18247
- azure: drop unused UsesPrivateDNS clause from API LB by @hakman in #18252
- aws: skip node S3 permissions when kops-controller serves node config by @hakman in #18251
- tests: add minimal gossip create/update integration tests by @hakman in #18256
- validation: enforce supported DNS topology per cloud provider by @hakman in #18255
- Release notes for 1.35 by @hakman in #18250
- addons: drop legacy 9.99.0 version shim by @hakman in #18257
- e2e: Pass prow job name to kops cloud labels by @rifelpet in #18258
- Remove explicit sysctl fs.inotify.max_user_watches setting by @ajoga in #17556
- chore(channels): promote alpha to stable by @moshevayner in #18259
- azure: enable CCM cloud routes for kubenet and kindnet by @hakman in #18262
- build: strip release binaries by default by @hakman in #18263
- Fix support for VPC CNI + Debian 11 by @rifelpet in #18261
- Update k8s.io dependencies and Go to v1.26.2 by @hakman in #18267
- Fix support for VPC CNI + RHEL9 by @rifelpet in #18264
- protobuf: Migrate to google.golang.org/protobuf by @hakman in #18230
- chore: drop helm dependency and fork strvals by @hakman in #18272
- chore: switch structured-merge-diff from v4 to v6 by @hakman in #18273
- chore: drop cloud-provider-gcp dependency and fork NewAltTokenSource by @hakman in #18274
- Upgrade AWS load balancer controller to 3.3.0 by @rifelpet in #18276
- azure: encode storage account in azureblob:// URLs by @hakman in #18260
- nodeup: stream verified image bytes into ctr import by @hakman in #18278
- nodeup: drop containerized mounter and Archive task by @hakman in #18277
- hetzner: Upgrade hcloud-cloud-controller-manager to v1.30.1 by @bjornharrtell in #18281
- Migrate deprecated kubelet flags to config file by @rifelpet in #18280
- cilium: allow setting arbitrary cilium-config entries by @hakman in #18285
- etcd-manager: Bump etcd patches and drop 3.4 support by @hakman in #18290
- gce: shrink etcd-cluster disk label to fit 63-char limit by @hakman in #18292
- protokube: drop unused flags, fields, and methods and cleanup by @hakman in #18293
- dns-controller: make priorityClassName configurable by @hakman in #18298
- dns-controller: default Provider when ExternalDNS is partially set by @hakman in #18302
- e2e: add upgrade test for gossip by @hakman in #18296
- aws: Only set nodeAllocatableUpdatePeriodSeconds on K8s 1.35+ by @rifelpet in #18305
- build(deps): bump actions/dependency-review-action from 4.9.0 to 5.0.0 by @dependabot[bot] in #18297
- gce: expose kops-controller on internal LB for gossip clusters by @hakman in #18307
- e2e: heartbeat Boskos lease during upgrade test by @hakman in #18310
- e2e: Improve resource dump reliability by @rifelpet in #18311
- Address misc TODO comments by @rifelpet in #18314
- azure: match VMSS VM/NIC ARM IDs case-insensitively in dumper by @hakman in #18315
- Dump containerd config files by @rifelpet in #18313
- azure: list VMSS NICs in protokube gossip seed discovery by @hakman in #18319
- etcd-manager: upgrade to v3.0.20260512 by @hakman in #18323
- Use N4A machine type in GCE by @rifelpet in #18330
- hetzner: upgrade CCM to v1.31.0 by @hakman in #18317
- hetzner: upgrade CSI driver to v2.20.2 by @hakman in #18318
- kops toolbox dump fixes by @rifelpet in #18326
- Disable kube-proxy when Calico runs in eBPF mode by @rifelpet in #18334
- vfs: Use HeadBucket to resolve S3 bucket region by @hakman in #18335
- aws: drop cloud-provider-aws dependency by @hakman in #18336
- Abort rolling update on load balancer deregister failure by @hakman in #18338
- aws: allow disabling NTH enableScheduledEventDraining in Queue Processor mode by @hakman in #18339
- Reject non-http(s) URLs for assets.fileRepository by @hakman in #18340
- Align instancegroup node label across create cluster/instancegroup by @hakman in #18341
- aws: apply onDemandAllocationStrategy to ASG mixed instances policy by @hakman in #18342
- aws: propagate taints without value to ASG tags by @hakman in #18343
- kube-proxy: bind-mount kubeconfig directory instead of the file by @hakman in #18344
- e2e: trim job name by @hakman in #18346
- Remove the unused in-tree cloud config by @hakman in #18347
- azure: load cloud config from a Secret instead of azure.json by @hakman in #18345
- dump: time out per-node log dumping after one minute by @hakman in #18349
- e2e: delete upgraded clusters with the new kops binary by @hakman in #18350
- gossip: introduce hybrid worker bootstrap for gossip clusters by @hakman in #18245
- gce: allow BGP from nodes to control plane for Calico by @hakman in #18351
- gossip: restrict seed discovery to control-plane nodes by @hakman in #18352
- azure: fix control-plane role tag spelling by @hakman in #18353
- gossip: stop exporting unused cloud credentials to worker nodes by @hakman in #18354
- azure: restrict VMSS role assignments to the control plane by @hakman in #18357
- gce: stop granting compute.viewer to worker nodes by @hakman in #18356
- aws: remove unused IAM server certificate permissions by @hakman in #18355
- nodeup: skip protokube/channels assets on workers by @hakman in #18358
- aws: remove KMS-based RNG seeding in nodeup by @hakman in #18359
- Bump CoreDNS memory on large clusters in scalability scenario by @Jefftree in #18361
- vfs: reject GCS paths without buckets by @immanuwell in #18360
- aws: scope ec2:DescribeInstances/DescribeRegions to roles that use them by @hakman in #18362
- Support containerd v3 config schema by @rifelpet in #18291
- aws: Use kms:ViaService condition on KMS data actions by @rifelpet in #18363
- chore(channels): bump k8s versions in alpha channel by @moshevayner in #18367
- linode: Add VPC cloudup task by @moshevayner in #18316
- nodeup: populate DefaultMachineType for Cilium-ENI clusters by @hakman in #18365
- Update coredns to v1.14.3 by @Jefftree in #18368
- Downgrade coredns to v1.14.2 by @hakman in #18369
- Upgrade containerd to v2.3.0 by @hakman in #18364
- aws: Use amazonaws.com suffix for kms:ViaService in all partitions by @rifelpet in #18372
- channels: move from protokube to a static pod by @hakman in #18328
- decouple client HTTP traffic in kops scalability tests by @Jefftree in #18370
- cilium: add flags for bpf-lb-sock and bpf-lb-sock-hostns-only by @hakman in #18375
- kops-controller and nodeup bug fixes by @rifelpet in #18379
- nodeup: fix protokube skip on hybrid-bootstrap workers by @hakman in #18378
- channels: stop distributing the standalone binary by @hakman in #18374
- kubetest2-kops: fix GCE DNS truncation by @Jefftree in #18382
- channels: build static pod manifest in cloudup by @hakman in #18373
- Fix kops get assets when spec.dnsZone is a DNS name by @hakman in #18384
- channels: fix region detection and discovery cache permission noise by @hakman in #18390
- Validate instance group names in kops-controller by @rifelpet in #18391
- Upgrade Go to 1.26.3 by @hakman in #18395
- Update dependencies by @hakman in #18398
- gomod: tidy and verify all modules by @hakman in #18401
- e2e: set the v3 runtime class path in apiserver templates by @hakman in #18402
- build: use gcr.io/distroless/static as base image by @hakman in #18403
- addons: render addons as tasks by @hakman in #18215
- chore(channels): promote alpha to stable by @moshevayner in #18409
- hetzner: enable Cluster Autoscaler by @hakman in #18226
- chore(networking): bump aws cni to version 1.21.2 by @moshevayner in #18410
- Use protobuf by @serathius in #18068
- Release 1.36.0-alpha.1 by @hakman in #18413
New Contributors
- @ritazh made their first contribution in #17952
- @serathius made their first contribution in #18036
- @pkubicsek-sb made their first contribution in #17740
- @pierluigilenoci made their first contribution in #18115
- @mfbonfigli made their first contribution in #18211
- @ajoga made their first contribution in #17556
- @Jefftree made their first contribution in #18361
- @immanuwell made their first contribution in #18360
Full Changelog: v1.35.0-beta.1...v1.36.0-alpha.1