Commit Graph
100 Commits
Author SHA1 Message Date
Max Gautier 0c75e97601 Remove outdated RHEL8 documentation (#13017) 2026-02-16 21:44:10 +05:30
Max Gautier dcebecc6e0 CI: test disabled localhost LB (#13013) 2026-02-16 21:44:02 +05:30
Max Gautier a4215cbef9 Remove workaround for kubeadm bug which is no longer necessary (#12991)
Introduced in 14b63ede8 (Fixup kubelet.conf to point to
kubelet-client-current.pem (#7347), 2021-03-09)
2026-02-14 19:37:59 +05:30
Max Gautierandgithub-actions[bot] 005bdce7f1 Patch versions updates (#12993)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-14 10:07:59 +05:30
Max Gautier 6b8911ca60 CI: gives a little more time for openeuler to manage packages (#13008) 2026-02-14 00:34:01 +05:30
Max Gautier bf3fef05fd control-plane: do not adjust apiserver endpoint (#12870)
This essentially revert the functionnality of 9b0f57a0a (Adjust
endpoints for kube-proxy,controller,scheduler to proper ip (#5150),
2019-09-09).

This is no longer needed since kubeadm now default to use the local
kube-apiserver for control plane components (feature gate
"ControlPlaneKubeletLocalMode")

https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/#feature-gates
2026-02-13 15:52:01 +05:30
Max Gautier 8c128771d7 CI: create pr-flakey for jobs prone to failure
We have a lot of PRs where we endlessy retry the same flakey jobs, which
is useless and frustating for everyone.

Put those jobs into a separate matrix with 1 retries to migitate the
issue.
2026-02-13 10:53:15 +01:00
Max Gautier efdff890ed Introduce a timeout for package installation
Sometimes package installations can get into weird state and stuck for a
very long time.
Timeout the tasks to fail early, with a customizable timeout duration.
2026-02-13 10:52:40 +01:00
Max Gautierandgithub-actions[bot] 57364f4085 Patch versions updates (#12973)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-02-09 21:13:25 +05:30
Max Gautier 34f43d21e3 Revert "kubelet: conditionalize staticPodPath location (#12433)" (#12970)
* Revert "kubelet: conditionalize staticPodPath location (#12433)"

This reverts commit 082507cff2.

* Add kubelet_static_pod_path to removed variables
2026-02-09 07:31:09 +05:30
Max Gautier 3aa0c0cc64 coredns: allow to customize service name (#12951) 2026-02-06 09:52:29 +05:30
Max Gautier 4245ddcee8 Make etcd node removal idempotent (#12949) 2026-02-05 11:40:28 +05:30
Max Gautier 868ff3cea9 Auto-bump checksums on last 3 branches (#12934)
We now have all supported release branches (last 3) using the new
checksums format, which means they all work with the auto-bump tooling.
2026-01-30 15:39:44 +05:30
Max Gautier 0b69a18e35 Remove nifcloud terraform provider support (it is no longer available) (#12936)
The nifcloud terraform provider has been deleted, so remove support and
CI.
2026-01-30 15:05:44 +05:30
Max Gautier fcecaf6943 wait for control plane node to become ready after joining (#12794)
When joining a control plane node and "upgrading" the cluster setup (for
example, to update etcd addresses after adding a new etcd) in the same
playbook run, the node can take a bit of time to become ready after
joining.
This triggers a kubeadm preflight check (ControlPlaneNodesReady) in
kubeadm upgrade, which is run directly after the join tasks.

Add a configurable wait for the control plane node to become Ready to
fix this race condition.
2026-01-28 22:15:51 +05:30
Max Gautier 37f7a86014 etcd-certs: only change necessary permissions (#12908)
We currently **recursively** set the permissions of /etc/ssl/etcd/ssl
(default path) to 700. But this removes group permission from the files
under it, and certain composents (like calio with etcd datastore) rely
on it ; thus, the upgrade of a cluster can fail because the
calico-kube-controller can't access the certs, and thus the etcd.

This works in other case because as far as I can tell, the apiserver
which do access the etcd run as root (the owner of the files, not just
the "group owner")

We also for some reasons do this twice.

Only create the etcd cert directory with the correct permissions once,
not recursively.
2026-01-27 20:25:52 +05:30
Max Gautierandgithub-actions[bot] fff7f10a85 Patch versions updates (#12912)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-27 20:21:53 +05:30
Max Gautier fba8708486 RELEASE.md: fix minor typo (#12891) 2026-01-22 16:43:29 +05:30
Max Gautier df3f0a2341 k8s-certs-renew: fix broken script (#12876)
Unproquer quoting of variable assignment make the shell interpret it as
a command ; since the variable is unused anyway, just delete it.
2026-01-19 22:57:47 +05:30
Max Gautier 6b5cc5bdfb Fix defaults for apiserver_loadbalancer_domain_name
Since we're not longer injecting pseudo DNS into /etc/hosts,
'lb-apiserver.kubernetes.local' (the previous default) won't resolve to
anything.

Instead, default to the loadbalancer IP if defined, or to the node local
loadbalancer if it's in use.

Make the necessary adjustements in use site to deal with ip addresses as
well as hostnames.
2026-01-19 09:43:48 +01:00
Max Gautierandgithub-actions[bot] bc5528f585 Patch versions updates (#12854)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-01-17 23:57:09 +05:30
Max Gautier 2740c13c0c Do not use apiserver LB in etcd certificates
etcd does not use the apiserver load balancer, there is no reason to
include it's DNS into etcd certificates.
2026-01-15 16:50:45 +01:00
Max Gautier 28f9c126bf ansible-lint: disable jinja[spacing] warning (#12848)
This pollutes ansible-lint output and force us to scroll to check what
the actuall issues are.
The spacing issues are minor and very opinionated, so it's no great
loss.
2026-01-12 13:42:07 +05:30
Max Gautier d91c7d7576 Fix ansible-lint config error (#12842) 2026-01-06 20:15:11 +05:30
Max Gautier 72cb1356ef ci: make opentofu elastx not optionnal 2026-01-05 15:55:01 +01:00
Max Gautier 51304d57e2 network_facts: streamline set_fact and setup calls
- invoke setup module only once to gather ipv4 and ipv6 addresses
- eliminate remaining use of `fallback_ip` and `fallback_ip6`, allowing
  us to define (with `set_fact` all the "computed" IPs variable in one
  go, since there is no longer a dependency between them.
2026-01-05 15:54:56 +01:00
Max Gautier a1ec88e290 openstack-cleanup: delete old keypairs as well (#12833)
* openstack-cleanup: format and logging

* openstack-cleanup: delete old keypairs as well
2026-01-05 17:42:37 +05:30
Max Gautier 6a517e165e Fix kubeadm init retry (#12785)
We currently always fail on the kubeadm init retry, because of the
remnants of the first try.

Ignore the related errors in the retry to unblock it.
2025-12-25 15:14:31 +05:30
Max Gautier b7491b957b CI: move vagrant tests to ci-full (#12803)
Those tests are unfortunately broken, move them to ci-full
2025-12-21 19:16:32 -08:00
Max Gautierandgithub-actions[bot] 5cf8f3eefc Patch versions updates (#12799)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-20 02:54:31 -08:00
Max Gautier bcdd702e19 Enable hash updates on 2.28 (2 latest releases) (#12801) 2025-12-19 01:30:36 -08:00
Max Gautier 20693afe82 cleanup tags deprecated tags 'master' (#12795) 2025-12-17 03:34:08 -08:00
Max Gautier 9a90c9d6c8 Upgrade elastx ubuntu version (#12776)
This could fix the glibc version error we're currently having in CI.
2025-12-09 01:19:32 -08:00
Max Gautier 88df61357b Use run_once for kubeadm init phase upload-certs (#12759)
Before "5ca23e3bf (Changed to use first_kube_control_plane to parse
kubeadm_certificate_key (#11875), 2025-01-14)", kubespray would have
problem adding new control planes when the order of the nodes in kubectl
output and the ansible inventory were not the same.

But the underlying problem is that the operation is fundamentally
something that should be done only once, and recorded for all host in
play.

Since `register` and `sef_fact` when used with `run_once` set the
variable for all the hosts, use it. Also allows to use the variable
directly instead of relying on hostvars to make the task more readable.
2025-12-07 21:07:27 -08:00
Max Gautier 118b2dce02 Remove checksums for old versions of various components (#12735)
We only keep 3 minor versions for most stuff
2025-12-05 06:30:59 -08:00
Max Gautierandgithub-actions[bot] 2512e0c50c Patch versions updates (#12762)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-04 06:44:57 -08:00
Max Gautier 633d39448e Add a default (empty) value for supplementary_addresses_in_ssl_keys (#12761)
Most variables should have a default instead of relying on the default
filter.

(Note that the variable is misnomed, this should be certs and not keys,
but it's not worth breaking compat).
2025-12-04 05:28:57 -08:00
Max Gautier 4d87ac1032 Simplify collection of SubjectAlternativeNames for apiserver (#12507)
Remove a bunch of intermediate variables, which fixes a
"'UndefinedMarker' concatenation" error in ansible-lint v25.8.1.
2025-12-04 02:06:57 -08:00
Max Gautierandgithub-actions[bot] 3de6fa7220 Patch versions updates (#12743)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-25 01:04:37 -08:00
Max Gautier 9975b5d525 Remove download support for old calico versions (#12724)
we no longer deploy those versions
2025-11-20 04:56:01 -08:00
Max Gautier 9d06ce1a8d CI: enable unsafe_show_logs == true by default (#12702)
* CI: enable unsafe_show_logs == true by default

* Deduplicate defaults vars (unsafe_show_logs)
2025-11-19 23:10:00 -08:00
Max Gautier 5183679a89 crio: molecule: move variables to inventory
Fix download/file (which needs the variable to determine the correct
binaries)
2025-11-18 15:44:09 +01:00
Max Gautier b4fe577203 gvisor: molecule: move variables to inventory
Fix download/file (which needs the variable to determine the correct
binaries)
2025-11-18 15:44:08 +01:00
Max Gautier bde51ebddf youki: molecule: move variables to inventory
Fix download/file (which needs the variable to determine the correct
binaries)
2025-11-18 15:44:06 +01:00
Max Gautier 381426d6d5 cri-docker: molecule: move container_manager to inventory var 2025-11-18 15:44:05 +01:00
Max Gautier 6138c6a1a2 CI: use a dedicated disk for releases (#12692)
This should make 'no space left on device' problems easier to handle

Use /tmp/releases as local_release_dir CI created machine, while keeping
the same folder on the runner (needed for gitlab-ci runner pods)
2025-11-17 02:57:39 -08:00
Max Gautier 6115eba3c3 CI: label VirtualMachineInstance with PR id and pipeline ids (#12716)
Helps with CI debuggability
2025-11-17 02:21:39 -08:00
Max Gautier 71c69ec12c CI: Try a full ssh connection on hosts instead of only checking the port (#12416)
* CI: Try a full ssh connection on hosts instead of only checking the port

If we only try the port, we can try to connect in the playbook which is
executed next even though the managed node has not yet completed it's
boot-up sequence ("System is booting up. Unprivileged users are not
permitted to log in yet. Please come back later. For technical details,
see pam_nologin(8).")

This does not account for python-less hosts, but we don't use those in
CI anyway (for now, at least).

* CI: Remove connection method override when creating VMs

This prevented wait_for_connection to work correctly by hijacking the
connection to localhost, thus bypassing the connection check.
2025-11-15 08:37:37 -08:00
Max Gautier 5488e7d805 Update pre-commit hooks (#12707) 2025-11-14 07:51:41 -08:00
Max Gautier ca9873cfcb crictl: remove useless layer of include_tasks (#12656) 2025-11-14 06:57:39 -08:00
Max Gautier db599b3475 Patch version updates (#12696) 2025-11-14 04:41:45 -08:00
Max Gautier 61b8e4ce84 Test the correct version when testing collection + upgrade (#12675)
If we don't rebuild the collection and remove the previous archive we'll
test the first built.
2025-11-11 18:56:56 -08:00
Max Gautier 97a3776d8e Remove etcd member by peerURLs (#12682)
* Remove etcd member by peerURLs

The way to obtain the IP of a particular member is convoluted and depend
on multiple variables. The match is also textual and it's not clear
against what we're matching

It's also broken for etcd member which are not also Kubernetes nodes,
because the "Lookup node IP in kubernetes" task will fail and abort the
play.

Instead, match against 'peerURLs', which does not need new variable, and
use json output.

* Add testcase for etcd removal on external etcd

* do not merge

* fixup! Remove etcd member by peerURLs

* fixup! Remove etcd member by peerURLs
2025-11-10 03:52:56 -08:00
Max Gautier 990695de7b Let containerd create storage / state dir (#12681)
Containerd manages by itself, so there is no need to override it and
change permissions.
2025-11-10 03:42:56 -08:00
Max Gautier 452d4e63e0 Fix the (upgrade/remove_node) + collection test cases (#12672)
The 'old' playbook and the collection use '-' and '_' as separator,
which breaks the logic in scripts/testcases_run.sh.

Add aliases using the old schemes to make the test work and avoid
breaking anything.

Both '-' and '_' variants will be deleted once we switch to supporting
collection only.
2025-11-07 07:22:55 -08:00
Max Gautier e090c9ee26 Factor kubectl_apply_stdin into separate "vars only" role
This is needed to make it available to other roles than kubernetes-apps
2025-11-07 09:34:57 +01:00
Max Gautier 0d6d3f5828 kubectl_apply_stdin SSA support 2025-11-07 09:34:29 +01:00
Max Gautier b9662dbd86 cleanup: don't cleanup runc orphan binary on immutable distros (#12669) 2025-11-06 22:16:53 -08:00
Max Gautier 5acde6cfe2 Get conf checksum directly for localhost CP loadbalancer (#12632)
There is no need to stat the templated file, because the template module
already returns a checksum.
2025-10-23 22:57:36 -07:00
Max Gautier cde7b2b022 Remove leftover docs fragment about mitogen (#12630)
This was left behind from 1fb14b746 (docs: remove outdated mitogen
documentation. (#12619), 2025-10-14)
2025-10-17 08:44:43 -07:00
Max Gautier fbf957ab5d Fix breakage when ignoring all kubeadm preflight errors (#12606)
kubeadm errors out if 'all' is specified with specific checks, so check
that case when we add hardcoded checks.

Add a test to catch regression.
2025-10-13 05:54:58 -07:00
Max Gautier 8d7d9907a1 Rough rework of the CI setup documentation (#12094) 2025-09-15 03:24:11 -07:00
Max Gautierandgithub-actions[bot] 0b082ac2f4 Patch versions updates (#12518)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-09-01 20:05:12 -07:00
Max Gautier c03c68e8c7 Do not suppress output during cert generation (#12479)
Makes debugging easier.
2025-08-28 19:43:09 -07:00
Max Gautier 84504d156f Fold kubernetes-apps/network_plugin into network_plugin (#12506)
For what I can see, there is no reason for the split, and it makes
things confusing.
2025-08-27 18:43:10 -07:00
Max Gautierandgithub-actions[bot] acdc338fa4 Patch versions updates (#12503)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-08-26 02:36:11 -07:00
Max Gautier f832271f5c Directly list conntrack modules instead of using a variable (#12475)
The conntrack kernel modules have no reason to be something else than
those two options, so there is no reason to have a variable.
2025-08-18 09:05:13 -07:00
Max Gautier cbdfad8e80 CI: fix broken debugging (#12381) 2025-07-08 04:33:27 -07:00
Max Gautier 15c8a4768d Do not alter etc/hosts (#12382)
This is no longer needed, likely for a long time.
2025-07-07 04:53:26 -07:00
Max Gautier 6354aa686e Allow vagrant jobs to be triggered manually in Gitlab UI (#12349) 2025-07-06 23:57:25 -07:00
Max Gautier e0018268d6 CI: Add a test for scale.yml (#12285) 2025-06-28 01:16:29 -07:00
Max Gautier f55de03fa6 CI: update sonobuoy url (heptio is now part of VMware)
Suggested-by: ChengHao Yang <17496418+tico88612@users.noreply.github.com>
2025-06-27 14:32:21 +02:00
Max Gautier 7b6ff769f0 CI: 020_check_pods -> more readable output
Filter pod to describe / logs only the broken ones.
2025-06-27 14:32:20 +02:00
Max Gautier e369ac2f24 CI: more readable loop
Avoids putting whole pod spec in loop label
2025-06-27 14:32:19 +02:00
Max Gautier 4a0a73b307 CI: fix check for kube_version 2025-06-27 14:15:11 +02:00
Max Gautier 253fc5ee59 CI: factorize tests into a single playbook
This allows to use kubespray_defaults (once) instead of redefining
defaults in the tests.
Test test files becomes imported tasks rather thand standalone
playbooks.
2025-06-27 14:15:11 +02:00
Max Gautier bf41d3bfea CI: Simplify running playbooks as collection 2025-06-27 14:15:09 +02:00
Max Gautier 85cf0014cd CI: Run vagrant validate on master as well (#12311)
Not really a reason not to, and this actually breaks daily-ci because
some jobs depends on this one so the whole pipeline is invalid if it's
not created.
2025-06-18 02:12:53 -07:00
Max Gautier 50a32acf51 CI: use debug stdout callback everywhere (except pre-commit) 2025-06-17 14:56:16 +02:00
Max Gautier b372a6f0f3 Fix alternatives runtimes CI
- youki and gvisor molecule tests are now passing
- kata-containers still broken
2025-06-17 14:56:15 +02:00
Max Gautier 5671037b0e Convert alternatives runtimes molecule to ansible verifier 2025-06-17 14:56:14 +02:00
Max Gautier 1ccb3a38a2 Convert cri-dockerd molecule to ansible verifier 2025-06-17 14:56:06 +02:00
Max Gautier 68c4ee23cb Convert CRI-O molecule to ansible verifier 2025-06-17 14:56:04 +02:00
Max Gautier 3f26203ed0 Convert containerd molecule to ansible verifier 2025-06-17 14:56:02 +02:00
Max Gautier a5ede2a5c7 container-engine: factorize molecule testing infra 2025-06-17 14:56:00 +02:00
Max Gautier 69c4c90634 Factorize dynamic groups into a role 2025-06-17 14:55:59 +02:00
Max Gautier 06d8d48488 Add previous release to the auto update script. (#12312) 2025-06-16 22:53:00 -07:00
Max Gautierandgithub-actions[bot] f866fd76f8 Patch versions updates (#12313)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-15 20:20:57 -07:00
Max Gautier 144742cbce Use last patch versions by default for etcd/crio/crictl (#12233)
This uses the same logic than the other versions, with simplications for
crictl and crio whose versionning scheme is tied to upstream kubernetes.

Also move some version variables in vars/ rather than defaults/, because
they are not used elsewhere and don't really make sense as modifiable by
the user.
2025-06-14 18:56:55 -07:00
Max Gautier f6d29a27fc Remove stale TODOs (#12298)
Upstream consider it working as expected, won't fix
https://github.com/ansible-collections/community.general/issues/7717#issuecomment-2061880929
2025-06-12 20:14:57 -07:00
Max Gautier 5243b33bd7 Cleanup support for removed OS in bootstrap
- centos < 8
- debian 10
2025-06-05 11:16:25 +02:00
Max Gautier d5b2a9b5ba opensuse: move package installation to system_packages
No reason to special case
2025-06-05 11:16:24 +02:00
Max Gautier 2152022926 debian-based distro: handle apt update cache when installing packages
The package module pass options to the underlying packages manager
module if they support it. No need to handle it in bootstrap.
2025-06-05 11:16:24 +02:00
Max Gautier f13b80cac0 ClearLinux: remove special casing
- put package install in system_packages
- docker should be handled by the approriate roles if used as container
  engine
2025-06-05 11:16:23 +02:00
Max Gautier 2fbbf2e1e4 CI/kubevirt: Configure ignition provisioning
Flatcar does not support cloud-init
2025-05-27 23:29:56 +08:00
Max Gautier 92e8ac9de2 Remove tag 'master' (#12228)
* Remove tag master

Following it's deprecation in 4b324cb0f (Rename master to control plane
- non-breaking changes only (#11394), 2024-09-06)

* Add fail fast path when using removed tags

- Used for the master tag, but this could be used for other things in
  the future
2025-05-22 01:20:36 -07:00
Max Gautier b79f7d79f0 docs: remove obsolete cgroups variables (#12239)
Those variables are removed since 1bc61c9f3 (Simplify kubelet-config
template, 2023-11-23), removing them from docs as well.
2025-05-21 22:40:35 -07:00
Max Gautier 490dece3bf Cleanup assert after 2.28 (#12245)
Users should have used 2.28 and adapted their inventories now.
2025-05-21 20:28:35 -07:00
Max Gautier 175babc4df Move some approvers to emeritus (#12156)
Thanks for you work !
2025-05-20 03:11:17 -07:00
Max Gautier 3a2862ea19 Move checksums to kubespray_defaults/vars (#12234)
The checksums are not a defaults and are not meant to be changed from
the inventories.

Furthermore, role defaults have a lower priority that hosts facts, which
technically means a rogue hosts could hijack the hashes for its
variables.
2025-05-18 16:13:14 -07:00