Commit Graph
5894 Commits
Author SHA1 Message Date
Max Gautier bd20622a16 download: define utility variables (#13521)
local_release_dir has insufficient nuances, as it needs to handle
several cases,
- where to put downloaded artifacts
- where to search for when installing artifacts
- where to search for when using artifacts (passing them via lookup to
  kubectl stdin for instance)

Furthermore, depending on how the user set up download delegation, the
value we want can be on the host the tasks is executing, on the
delegated hosts, etc.

Define variables on top of local_release_dir for differents contexts,
handling which host context to use depending on `download_delegate`.

Mostly, this boils down to choosing the correct `host` for
hostvars[host]['local_release_dir'].
2026-09-17 08:59:23 +00:00
MohammadReza f4eaac3a94 Bump node-feature-discovery to v0.19.0 (#13512)
* chore(deps): bump node-feature-discovery to v0.19.0

Checked all intermediate releases (0.17.0, 0.18.0, 0.19.0) for breaking changes. v0.19.0's RBAC breaking change (nfd-topology-updater needs list+watch on pods) does not apply here: Kubespray does not deploy an nfd-topology-updater workload (only an unused ConfigMap template for it exists in this role). v0.19.0 also removed env/expandenv/getHostByName from NodeFeatureRule templates -- only affects user-authored custom NodeFeatureRule resources, not anything this role ships by default.

* fix(nfd): add missing namespaces RBAC rule and fix nodefeaturegroups typo

* fix(nfd): add missing delete verb to nfd-worker Role

* chore(nfd): sync CRD manifest with upstream v0.19.0

* fix(nfd): drop removed gRPC-era flags/ports from nfd-master

* fix(nfd): remove leftover crd-controller args block

Previous commit added the new args but left the old -crd-controller
and -metrics block in place instead of replacing it.

* fix(nfd): drop removed gRPC-era flags from nfd-worker

* chore(nfd): drop variables no longer read by any template

* fix(nfd): align nfd-worker port naming and add health probes

* fix(nfd): remove obsolete nfd-master Service

* chore(nfd): register removed variables in validate_inventory

* fix(nfd): clean up the obsolete Service manifest on disk

* fix(nfd): add health probes and http port to nfd-gc

* fix(nfd): align nfd-worker env and mounts with upstream
2026-09-17 08:45:26 +00:00
Max Gautier 23f8593cf5 download/calico_crds: use flat manifest path (#13522)
The additional directory is unnecessary.
2026-09-17 07:41:25 +00:00
Ali Afsharzadeh ddb6ee50d9 Upgrade cilium from 1.20.1 to 1.20.2 (#13515)
Signed-off-by: Ali Afsharzadeh <afsharzadeh8@gmail.com>
2026-09-16 14:01:23 +00:00
MohammadReza 09307ebc37 chore(deps): bump metrics-server to v0.9.0 (#13511)
No breaking changes per upstream release notes (CLI flags, RBAC, and
deployment shape unchanged). metrics-server is image-only in Kubespray
(no checksum pinning to update). Upstream also bumped their own
Kubernetes client deps to v1.36.2, matching what Kubespray currently
targets.
2026-09-15 10:05:22 +00:00
Max Gautier 93bd100334 fix: molecule idempotency tests 2026-09-15 10:58:00 +02:00
Max Gautier f5c0336b91 Cleanup after upgrade to 2.19 2026-09-15 10:57:59 +02:00
Max Gautier 5af06acee1 fix: ansible 2.19: calico resources final evaluation (#13503)
The bgp changes are a bit verbose, because I chose to reproduce the
exact semantics of the current code, so that the manifest handed to
calicoctl does not contain unset fields (instead of just using defaults
value).

It would be more readable to just accept default value in the
manifests, but might be a problem if there is other writer of the same
Calico resources.
2026-09-15 08:55:22 +00:00
longxiucai 53a30aea58 Fix kubelet.conf server line indentation (#13284)
The lineinfile tasks that rewrite the server field in kubelet.conf
replaced the whole line with a hard-coded indentation, corrupting the
file when the existing entry was indented differently. Capture the
original leading whitespace with a group regexp and restore it via
backrefs so the rewrite preserves the surrounding YAML structure.

Signed-off-by: longyuxiang <longyuxiang@kylinos.cn>
2026-09-15 06:37:18 +00:00
Max Gautier b1b01bc579 local_volume_provisioner: match upstream storage class syntax (#13504)
Use the upstream keys without converting them to snake case. This avoids
converting back to camel case when rendering, and aligns ourselves more
with our upstream.
2026-09-14 15:45:22 +00:00
jskrill 6413f2ae5c fix(kubernetes/node): use numeric priority for static pods (#13490)
Signed-off-by: Jules Skrill <julesskrill@gmail.com>
2026-09-14 14:37:20 +00:00
Max Gautier 3437dde4b9 fix: ansible 2.19: calico: felix config final evaluation (#13496) 2026-09-10 13:48:36 +00:00
Max Gautier 16ad6da94e fix: ansible 2.19: etcd_events_address final evaluation list (#13498) 2026-09-10 13:40:35 +00:00
Nikhil Kumar cfa983e8c7 Replace injected Ansible fact variables in etcd role (#13338) 2026-09-10 11:24:34 +00:00
longxiucai 5e5b072597 fix(cert_manager): stop deleting the namespace on every upgrade run (#13493)
The "Remove legacy namespace" task unconditionally ran
kubectl delete namespace on every playbook run carrying the upgrade
tag, wiping user-managed resources in the cert-manager namespace (for
example custom Issuer secrets) as well as cert-manager's own state,
before the namespace was recreated and the manifests re-applied.

The legacy addon migration this cleanup was written for dates back to
2018 and no longer applies; the apply path (kube module, state latest)
upgrades cert-manager in place without a namespace reset.

Signed-off-by: longyuxiang <longyuxiang@kylinos.cn>
2026-09-10 09:24:36 +00:00
Max Gautier e4eb65dba2 fix/ansible 2.19: reset: no implicit conditionals (#13485) 2026-09-10 09:04:35 +00:00
felipe88alves f6b046bcac feat: add preflight admission readiness check before kubeadm upgrade (#13140)
* feat: add preflight admission readiness check before kubeadm upgrade

  - linked to issue #13139
  - Add opt-in dry-run Job probe to verify the admission pipeline is ready before running kubeadm upgrade apply (workaround for Kubernetes #124237)
  - Gate the check behind kubeadm_upgrade_preflight_check_enabled (default false) with configurable retries and delay
  - Emit a warning instead of failing if the preflight check does not pass

* fix: refine preflight admission check Job and warning

- Use generateName for the dry-run preflight Job to avoid fixed-name collisions
- Expand the Kubernetes issue reference in the warning to a full GitHub URL

Created with AI-assistance
2026-09-10 08:14:36 +00:00
Kay Yan b7d99749b8 preinstall: generalize minimum-value semantics for managed sysctls (#13224)
* preinstall: generalize minimum-value semantics for managed sysctls

Move the hardcoded sysctl floor map out of 0080-system-configurations.yml
into a default variable, and introduce additional_sysctl_min so users can
declare their own sysctl floors. Floor semantics only apply a managed
value when the node's current value is lower; pre-tuned images (Bottlerocket,
EKS AMIs, OpenShift RHCOS, hardened distros) and newer kernels that
already set higher values are left alone.

Default floors are aligned with prior art from the OpenShift Node Tuning
Operator (TuneD '=>' floor syntax in the openshift / openshift-node
profiles) and kops. None of the floor keys are part of the kubelet
protect-kernel-defaults validation list, so the floor mechanism cannot
interfere with kubelet startup. Keys not present on the running
kernel/distro are skipped without failing.

additional_sysctl (exact-value semantics) is unchanged for backward
compatibility.

Signed-off-by: Kay Yan <kay.yan@daocloud.io>

* preinstall: refine sysctl floor handling

Keep built-in floor values internal while preserving user overrides
through additional_sysctl_min.

Use sysctl --ignore for unknown keys and filter empty results without
masking other read errors.

Signed-off-by: Kay Yan <kay.yan@daocloud.io>

---------

Signed-off-by: Kay Yan <kay.yan@daocloud.io>
2026-09-10 07:46:33 +00:00
wangsifei99 35f900dd72 Add cleanup kubeadm backups under /etc/kubernetes/tmp (#13415)
* Add cleanup kubeadm backups under /etc/kubernetes/tmp

* Add kubeadm_backup_retention_count=0 to test
2026-09-10 07:42:46 +00:00
Seena Fallah 44ab38baae control-plane: fix kubeadm ops when advertiseAddress cannot be derived from default gateway (#13156)
* download: add apiserver ip in InitConfiguration

In setups where the advertiseAddress cannot be derived from the
default gateway, setting localAPIEndpoint.advertiseAddress will
eliminate the error caused by that. this is like other kubeadm
configs that we have.

Signed-off-by: Seena Fallah <seenafallah@gmail.com>

* control-plane: pass kubeadm config when creating token

kubeadm token create subcommand will generate a default config when
nothing as --config is passed. therefore if we have setups that need
the config values to let kubeadm work (like if the ip cannot be derived
by the default gateway) it will fail.

Signed-off-by: Seena Fallah <seenafallah@gmail.com>

---------

Signed-off-by: Seena Fallah <seenafallah@gmail.com>
2026-09-10 07:42:37 +00:00
ERIK 26aa4586e9 fix(flannel): make image tag prefix version-aware (#13476)
Signed-off-by: bo.jiang <bo.jiang@daocloud.io>
2026-09-10 07:12:34 +00:00
Kay Yan fd206a19f5 CI: add Ubuntu 26.04 support and coverage (#13443)
* image-builder: add Ubuntu 26.04 image

Signed-off-by: Kay Yan <kay.yan@daocloud.io>

* CI: add Ubuntu 26.04 support

Add an Ubuntu 26.04 CI job (ubuntu26-calico-all-in-one) to the main PR
matrix, OS-specific node vars, and update the coverage docs.

The VM image is published as quay.io/kubespray/vm-ubuntu-2604.

Signed-off-by: Kay Yan <kay.yan@daocloud.io>

---------

Signed-off-by: Kay Yan <kay.yan@daocloud.io>
2026-09-10 03:56:33 +00:00
Max Gautier 0378060c91 fix/ansible 2.19: ssl_ca_dirs: don't rely on final evaluation (#13477) 2026-09-09 09:13:25 +00:00
Kay Yan 230cd19497 fix(openeuler): add configurable openeuler_repo_baseurl for faster mirrors (#13134)
Add openeuler_repo_baseurl variable to override the default baseurl
(repo.openeuler.org) with a faster mirror. CI uses Huawei Cloud CDN,
reducing package installation from >900s timeout to ~2min.

Signed-off-by: Kay Yan <kay.yan@daocloud.io>
2026-09-09 07:32:34 +00:00
Max Gautier 8e8751465b fix/ansible-core 2.19: implicit list to bool conversion in download (#13470) 2026-09-09 05:24:34 +00:00
Max Gautier 712d13bd48 fix/ansible 2.19: calico: no implicit conditionals (#13480) 2026-09-09 05:20:36 +00:00
Max Gautierandgithub-actions[bot] 15dab0c60c Patch versions updates (#13458)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-09-09 00:48:32 +00:00
Max Gautier ff19dbd284 fix/ansible 2.19: local vol provisioner: don't rely on final evaluation (#13481)
- also remove mitogen workaround from local_volume_provisioner since
  creating the dirs is handled by kubernetes/preinstall instead
- correct the tag in kubernetes/preinstall as persistent_volumes isn't
  the same thing
2026-09-08 22:46:35 +00:00
Oleksandr Kozmenko 70cb04d9d8 fix: remove redundant cni dependency for flannel/kube-router/macvlan/multus (#12766)
* fix: remove cni dependency for flannel

Inspired by https://github.com/kubernetes-sigs/kubespray/pull/9563.

* fix: remove cni dependency for kube-router/macvlan/multus

It is not needed there since network_plugin meta already has it. For plugins which have reset tasks it is also breaking them since downloaded CNI archive is no longer present.
2026-09-08 22:16:33 +00:00
Meza 1754a6b493 fix(etcd): update etcd-metrics to endpointslice using single subset (#12846)
Signed-off-by: Meza <meza-xyz@proton.me>
2026-09-08 15:18:32 +00:00
Max Gautier 6aee13b285 Remove support and CI for EOL Debian 11 (#13483)
- also remove macvlan on debian support since the role works neither on
  debian 12 nor 13
- macvlan is no longer tested in CI as it does not work on rockylinux10
  either
2026-09-08 10:30:31 +00:00
Max Gautier c554ee816d fix/ansible-core 2.19: etcd: avoid mutating methods in template (#13474)
2.19 disallow methods with side effects in Jinja. Use a simple loop by
adding all the SANs source in one list.

Also check the sources before hand for failing on CIDR notation.

Link: https://github.com/ansible/ansible/issues/85202
2026-09-08 09:12:32 +00:00
Max Gautier 4b7dfaef87 fix/ansible 2.19: etcd: don't rely on final evaluation (#13475)
Suggested-by: Ali Afsharzadeh <afsharzadeh8@gmail.com>
2026-09-08 08:04:32 +00:00
Sandaru Wijewardhana 2dd05e4841 Bump nerdctl to v2.3.5 (#13437)
Signed-off-by: sandaruwijewardhana <sandaruwijewardhana@gmail.com>
2026-09-08 07:44:30 +00:00
Nikhil Kumar 33a26fb9e3 openSUSE: add Leap 16.0 support and CI coverage (#13473) 2026-09-07 14:58:29 +00:00
Max Gautier 85cfaa2cef fix/ansible-core 2.19: docker: bool implict conversion (#13471) 2026-09-07 09:00:28 +00:00
Alexander Skiba (MANZ Solutions) 12355b7e0a Fix lint violation: jinja[invalid] to make pre-commit pass (#13337) 2026-09-07 07:24:28 +00:00
Max Gautier 490253f6f0 fix/ansible-core 2.19: ntp_timezone implicit string -> bool (#13469) 2026-09-05 04:46:22 +00:00
Ali Afsharzadeh e125a30b16 Fix k8s-certs-renew renewing on nodes without super-admin.conf (#13414)
Signed-off-by: Ali Afsharzadeh <afsharzadeh8@gmail.com>
2026-09-03 14:30:21 +00:00
Abhishek Kanyahal cf0e68ee98 Updates in the calico config and template to support disabling ipv4 pools during pure ipv6 deployment (#13225)
* #13157: Updates in the calico config and template to support disabling ipv4 pools during pure ipv6 deployment

Signed-off-by: root <kanyahal.abhishek@gmail.com>

* Updates in the calico config and template to support disabling ipv4 pools during pure ipv6 deployment

* Updates in the calico config and template to support disabling ipv4 pools during pure ipv6 deployment

---------

Signed-off-by: root <kanyahal.abhishek@gmail.com>
2026-09-03 13:10:27 +00:00
Dhakshin Raghav 1daa5c4af0 Bump Flannel version to v0.28.9 (#13436) 2026-09-03 12:32:19 +00:00
Mehrdad Biukian a369d66c43 fix(calico): make IPv6 pool validation actually run (#13450)
Three defects in the IPv6 branch of check.yml kept the IPv6 pool
assertion from ever executing:

1. 'alico_ipv6 is defined' - typo of calico_ipv6, so the set_fact
   was always skipped (Jinja2 treats the undefined var as False).
2. The set_fact stored the pool as calico_pool_conf, overwriting the
   IPv4 pool fact on dual-stack clusters, while the IPv6 assertion
   gated on calico_pool_ipv6_conf - a name that was never set.
3. The assertion body also read calico_pool_conf, so even with the
   gate fixed it would validate against the IPv4 pool's values.

Store the IPv6 pool as calico_pool_ipv6_conf, gate the set_fact on
the registered calico_ipv6 result, and make the assertion read the
IPv6 fact - mirroring the IPv4 pattern directly above.

Verified with ansible-playbook on mocked calicoctl output:
- old code: set_fact skipped, no validation (reproduces the report)
- new code: mismatched blockSize caught with a clear assertion msg
- matching config passes through unchanged

Signed-off-by: Mehrdad Biukian Naeini <mehrdadbiukian@gmail.com>
2026-09-03 10:32:21 +00:00
Kay Yan 990d3035a1 Fix custom_cni manifest apply failure for multi-namespace resources (#13091)
* fix(custom_cni): make namespace optional

Keep kube-system as the default for existing manifests. An empty custom_cni_namespace omits kubectl's namespace flag so manifests spanning multiple namespaces can be applied without changing legacy behavior.

Signed-off-by: Kay Yan <kay.yan@daocloud.io>

* docs(custom_cni): document multi-namespace manifests

Signed-off-by: Kay Yan <kay.yan@daocloud.io>

---------

Signed-off-by: Kay Yan <kay.yan@daocloud.io>
2026-09-02 09:38:20 +00:00
Mehrdad Biukian f7b0af0d60 fix: render routingMode native when cilium_tunnel_mode is disabled (#13427)
* fix: render routingMode native when cilium_tunnel_mode is disabled

When cilium_tunnel_mode is set to 'disabled', the previous template rendered
'tunnelProtocol: disabled', which Cilium does not recognise and falls back to
vxlan. With native routing this conflicts and agents CrashLoopBackOff.

Render 'routingMode: native' instead when disabled, matching the Cilium Helm
chart API (per maintainer review on #13427 and #13314).

Refs kubernetes-sigs/kubespray#13267

Signed-off-by: Mehrdad Biukian Naeini <mehrdadbiukian@gmail.com>

* fix(cilium): tighten routingMode native render (remove stray blank line)

Per review comment on kubernetes-sigs/kubespray#13427, drop the extra
blank line after the routingMode/tunnelProtocol if-block so the rendered
Helm values file is clean.

Validated by rendering the template for cilium_tunnel_mode in
{disabled, vxlan, geneve}: disabled yields 'routingMode: native' with no
tunnelProtocol; vxlan/geneve yield 'tunnelProtocol: <mode>'.

Signed-off-by: Mehrdad Biukian Naeini <mehrdadbiukian@gmail.com>

---------

Signed-off-by: Mehrdad Biukian Naeini <mehrdadbiukian@gmail.com>
2026-08-31 03:18:08 +00:00
Ali Afsharzadeh 46dbdd3994 Patch versions updates (#13423)
Signed-off-by: Ali Afsharzadeh <afsharzadeh8@gmail.com>
2026-08-21 10:07:16 +00:00
Ali AfsharzadehandChengHao Yang ae329ee192 Fix k8s-certs-renew renewing all certificates on every timer run (#13413)
* Fix k8s-certs-renew renewing all certificates on every timer run

Signed-off-by: Ali Afsharzadeh <afsharzadeh8@gmail.com>

* Strip trailing whitespace from systemd-analyze calendar output

Signed-off-by: Ali Afsharzadeh <afsharzadeh8@gmail.com>

* Remove issue link

Co-authored-by: ChengHao Yang <17496418+tico88612@users.noreply.github.com>

---------

Signed-off-by: Ali Afsharzadeh <afsharzadeh8@gmail.com>
Co-authored-by: ChengHao Yang <17496418+tico88612@users.noreply.github.com>
2026-08-21 07:07:16 +00:00
Ali Afsharzadeh c2089ae595 Upgrade cilium from 1.20.0 to 1.20.1 (#13419)
Signed-off-by: Ali Afsharzadeh <afsharzadeh8@gmail.com>
2026-08-21 04:31:14 +00:00
ChillRedChilli ed99c2a4cb kata-containers: Update release artifacts to zst format. (#13389)
- Updated download URLs to fetch the kata-static<...>.zst files from github repo.
- Added zstd package in kata-continers role.
- Updated version checksums to match the new release files.

Moved zstd dependency to roles/system_package
2026-08-16 15:04:14 +00:00
Nikhil Kumar bf077e7360 Replace injected Ansible fact variables in network_plugin role (#13382) 2026-08-16 14:24:17 +00:00
Ali Afsharzadeh ace96af930 Upgrade cilium from 1.19.6 to 1.20.0 (#13401)
Signed-off-by: Ali Afsharzadeh <afsharzadeh8@gmail.com>
2026-08-06 13:26:54 +00:00