Commit Graph
536 Commits
Author SHA1 Message Date
Enrico CandinoandGitHub 3b47fa06a6 Bump charts to v1.2.0-rc1 (#1096) chart-1.2.0-rc2 2026-07-29 14:46:10 +02:00
071c25482a Skip expensive CI for Markdown-only PRs (#1052)
* ci: skip expensive checks for markdown-only PRs

Signed-off-by: nightcityblade <nightcityblade@gmail.com>

* ci: skip docs directory in expensive checks

---------

Signed-off-by: nightcityblade <nightcityblade@gmail.com>
Co-authored-by: nightcityblade <nightcityblade@gmail.com>
v1.2.0-rc2
2026-07-29 12:33:58 +02:00
Enrico CandinoandGitHub bf0c8f0c32 Keep PersistentVolumeClaim to "varlibrancherk3s" (#1090)
* Keep PersistentVolumeClaim to "varlibrancherk3s"

* Rename volume name to "varlibrancherk3s" in pod specification
2026-07-29 11:17:56 +02:00
Enrico CandinoandGitHub eb0955f666 Add cluster delete autocompletion (#1080)
* Add cluster deletion and completion enhancements

- Implemented `--all` flag for deleting all clusters in a namespace.
- Updated argument parsing to allow for maximum one cluster name.
- Added completion functions for cluster names with namespace filtering.
- Enhanced tests for cluster argument resolution and completion functions.

* fix docs

* Add log message for empty cluster deletion in specified namespace

* Refactor context handling in command functions to use `cmd.Context()`
2026-07-28 18:22:25 +02:00
ac2eaf97d9 Update GitHub Actions (#1083)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-28 17:57:48 +02:00
Enrico CandinoandGitHub 7d8932beda bump google/cel-go to v0.29.0 (#1091) 2026-07-28 17:02:39 +02:00
Kevin McDermottandGitHub f77083b563 Switch out the Go YAML package (#1089)
This replaces direct usage of "gopkg.in/yaml.v3" with "go.yaml.in/yaml/v4".

The original package is now a dependency of the testify packages.
2026-07-28 11:58:46 +01:00
Hussein GalalandGitHub 11bf7a2dc4 Add PodSecurityContext and Security Context to helm chart and cluster spec (#1058)
* Add securityContext and podSecurityContext to the chart and cluster pods

Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com>
2026-07-28 13:53:11 +03:00
renovate-rancher[bot]andGitHub 97e243f480 Merge pull request #1087 from rancher/renovate/main-github.com-go-logr-logr-1.x
Update module github.com/go-logr/logr to v1.4.4 (main)
2026-07-28 07:25:07 +00:00
renovate-rancher[bot]andGitHub 84ca470291 Update module github.com/go-logr/logr to v1.4.4 2026-07-28 05:32:05 +00:00
0fda2bb473 Update GitHub Actions (#1074)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-24 13:20:17 +02:00
Kevin McDermottandGitHub 83c1dd8f59 Fix event-mirroring (#1069)
Fix event-mirroring

Lookup the InvolvedObject in the Host cluster and use the annotations on that to get the name of the Pod from the virtual cluster.
2026-07-24 10:45:40 +01:00
28bbecb7ee Fix deprecated options in GoReleaser config (#1063)
* Fix deprecated goreleaser options

* Fix Docker COPY paths for goreleaser dockers_v2 platform layout

* Moved ARG definitions, smaller comment

* Update GoReleaser version to `v2.17.0`

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Enrico Candino <enrico.candino@suse.com>
2026-07-23 21:22:02 +02:00
ee8c16bdd2 Update GitHub Actions (#1065)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-23 12:32:30 +02:00
d170a0db9b Update rancher/renovate-config digest to 3b1a022 (#1064)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-23 12:27:27 +02:00
Enrico CandinoandGitHub fd64c55e5c Add server URL handling in cluster creation and enhance kubeconfig tests (#1050) 2026-07-23 12:26:10 +02:00
d9219da469 Fix cluster delete for missing clusters (#1051)
* Fix cluster delete for missing clusters

Signed-off-by: nightcityblade <nightcityblade@gmail.com>

* Adjust missing cluster error message

---------

Signed-off-by: nightcityblade <nightcityblade@gmail.com>
Co-authored-by: nightcityblade <nightcityblade@gmail.com>
2026-07-22 20:58:52 +02:00
Enrico CandinoandGitHub 3a89a4d53b Refactor E2E tests to use a matrix strategy (#1061)
* Refactor E2E tests to use a matrix strategy and update labels for better organization

* Enhance E2E test labels for better categorization and clarity

* Refactor E2E test labels for improved clarity and organization
2026-07-22 18:52:33 +02:00
Enrico CandinoandGitHub 22f0b9c699 Add completion to --namespace flag (#1049)
* Add completion to `--namespace` flag

* Add namespace completion to policy create command

* Refactor namespace completion functions for consistency across commands

* addressed some comments
2026-07-22 17:11:17 +02:00
Enrico CandinoandGitHub b6855c1636 Bump google.golang.org/grpc to v1.82.1 (#1060) 2026-07-22 16:01:12 +02:00
5ef3f38571 Update GitHub Actions (#1054)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-22 10:33:40 +02:00
Enrico CandinoandGitHub a26d37f654 Bump charts to v1.2.0-rc1 (#1043) chart-1.2.0-rc1 2026-07-17 16:54:04 +02:00
1ebeee28de Update GitHub Actions (#1039)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
v1.2.0-rc1
2026-07-17 15:52:00 +02:00
Enrico CandinoandGitHub 7d2105ecf5 Update golang.org/x/text to v0.39.0 (#1038)
* Update `golang.org/x/text` to `v0.39.0`

* align dependencies
2026-07-16 17:00:16 +02:00
e1ae07c836 Isolate only virtual cluster workload Pods (#989)
* Enhance network policy to isolate synced workload pods and improve cross-cluster pod isolation handling

* Add test for label update on synced Pod to ensure isolation label persistence

* Derive host pod CIDRs dynamically for the isolation NetworkPolicy

Compute the egress-exclude CIDRs from the --cluster-cidr flag or the live
Node PodCIDR(s) via FindPodCIDRs, instead of a hardcoded guess, so cross-cluster
pod isolation is enforced against the host's real pod network. Adds unit,
integration, and e2e coverage.

* update comment

* Sort CIDR list in FindPodCIDRs function to ensure consistent order for egress rules

* Use `t.Context()` instead of `context.Background()`

Co-authored-by: Kevin McDermott <bigkevmcd@gmail.com>

* Use Ginkgo provided context

* Refactor FindPodCIDRs to use sets for CIDR collection and simplify logic

* fix lint

---------

Co-authored-by: Kevin McDermott <bigkevmcd@gmail.com>
2026-07-16 15:18:04 +02:00
10a0b42c6a Move pkg/apis to its own package (#1026)
* move apis to seperate package

* move github.com/rancher/k3k/pkg/apis in go.mod

---------

Co-authored-by: Enrico Candino <enrico.candino@suse.com>
2026-07-16 11:35:43 +02:00
d19016fa9c Update module go.etcd.io/etcd/client/v3 to v3.7.0 (#1007)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-16 10:37:40 +02:00
98119e764a Update rancher/renovate-config digest to 573ec77 (#1015)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-16 10:33:40 +02:00
Enrico CandinoandGitHub 3a4d93f5fb Fix dangling Pods (#1021)
* Add tests asserting GetPods is scoped to the node's own Pods

Adds a unit test (fake host + virtual clients, Pods across multiple nodes plus
a dangling one) and a multi-node e2e test (a Deployment with one nginx Pod per
node via required anti-affinity; restart every k3k-kubelet agent Pod; assert no
workload Pod is deleted from the host or virtual cluster). Both pin the intended
behavior and fail against the current code; the fix follows in the next commit.

* Scope Provider.GetPods to the node's own Pods to prevent cross-node dangling-pod deletion

GetPods() listed host Pods cluster-wide (by the k3k.io/clusterName label only).
The vendored virtual-kubelet library's deleteDanglingPods reconciliation deletes
any Pod returned here that is missing from this instance's virtual Pod lister,
which is scoped to spec.nodeName == agentHostname. On a multi-node host cluster,
every restarting k3k-kubelet instance therefore saw Pods owned by other nodes as
'dangling' and deleted them from the host (and, in turn, the virtual cluster).

Scope GetPods by the *virtual* Pod's spec.nodeName -- the same ownership signal
the framework uses -- excluding Pods owned by other nodes while still returning
own-node Pods and genuinely dangling ones. The host Pod's physical node is not a
reliable owner (it is scheduled with only a soft, sometimes-absent affinity), so
it must not be used. Virtual Pods are read live to avoid a startup cache-sync
race. Makes the previous commit's tests pass.

* Refactor GetPods to scope to the cluster namespace and update tests accordingly

* Add AgentNameLabel to track Pods synced by the k3k-kubelet agent and update tests accordingly

* Add failing test for updatePod
2026-07-15 17:02:30 +02:00
Enrico CandinoandGitHub 3f25eabe38 feat: Enhance GitHub Actions workflows and add YAML linting (#1020)
- Updated action descriptions for clarity in provision-k3s-vm-workers.
- Refactored steps in provision-k3s-vm-workers for improved readability.
- Adjusted permissions formatting in multiple workflows for consistency.
- Added YAML linting step in validate workflow to ensure YAML file quality.
- Introduced .yamllint configuration file for GitHub Actions YAML files.
- Enhanced Makefile to include a target for linting YAML files.
2026-07-14 16:51:08 +02:00
Kevin McDermottandGitHub ddf6bace3f Merge pull request #1019 from bigkevmcd/fix-event-logging
Fix logged events in syncer - ensure the name/namespace are correct.
2026-07-14 13:11:30 +01:00
Enrico CandinoandGitHub 07cfe77318 Move e2e tests to a multi-node cluster, add kubelet restart test (#1010)
* Add E2E tests for multi-node setup and kubelet restart scenarios

* Update Kubernetes version options in conformance tests workflow

* Enhance VM provisioning action to support dynamic bridge CIDR prefix and pin package versions
2026-07-14 11:21:17 +02:00
be742939c6 Update rancher/renovate-config digest to c1117a0 (#1006)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-13 17:39:25 +02:00
13532286cc Update module go.etcd.io/etcd/api/v3 to v3.6.13 (#1004)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-13 17:38:34 +02:00
bcraftandGitHub 120d964281 set machine id on server pod if not exists (#1011) 2026-07-10 12:58:37 +02:00
bcraftandGitHub b6867919c8 update docs for kata-deploy (#960) 2026-07-10 12:13:22 +02:00
808bba15c6 Update go module directive to v1.26.5 (#1003)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-09 11:28:40 +02:00
1cbed90674 Update github/codeql-action digest to 99df26d (#999)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-09 10:36:39 +02:00
Enrico CandinoandGitHub 3d0438edc9 Update k8s dependencies to v1.36 (main) (#979)
* Update k3s version in test suites to v1.36.2-k3s1

- Updated the k3sVersion and k3sOldVersion constants in both cli and e2e test suites to reflect the new version v1.36.2-k3s1 and the previous version v1.36.0-k3s1.

* updated README.md
2026-07-08 15:58:06 +02:00
9c82b68440 Update GitHub Actions (#994)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-08 11:33:02 +02:00
2e1781f022 Update golangci/golangci-lint-action action to v9.3.0 (#990)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-07 22:53:51 +02:00
39cc69f3e3 Added HCP (Hosted Control Plane) mode (#876)
* Add HCP (Hosted Control Plane) support

Introduce hosted control plane mode for k3k virtual clusters, including
API types, controller logic, server endpoint handling, CLI flags,
CRD updates, kubeconfig generation, and examples.

Co-Authored-By: RuFlo <ruv@ruv.net>

* removed hcpRegitration command

added HCP conformance tests

warning for hcp

fix multi-VM HCP conformance test networking

  Both QEMU workers booted with `-net user` and ended up registering the
  same InternalIP (10.0.2.15) because each VM gets its own isolated NAT
  slirp. Flannel propagated this to `public-ip` on both nodes, so VXLAN
  could not tunnel between workers and any cross-node pod traffic broke
  (89 failed / 335 passed of 424 conformance specs).

  Replace user-mode networking with a Linux bridge (k3kbr0,
  192.168.100.0/24) and one TAP device per VM, so the two workers share
  an L2 segment with unique routable IPs. NAT outbound from the bridge
  keeps internet access working for image pulls.

  Also set unique hostnames via cloud-init (worker-1/worker-2) and drop
  the `--node-name` flag from INSTALL_K3S_EXEC, since k3s now picks the
  correct node name from the OS hostname on its own.

  Bump hydrophone back to `--parallel 4` to match the single-VM job
  (parallelism was reduced earlier when the failure was thought to be
  resource-related).

added HCP print command

updated crds

adding e2e tests

Refactor selectNonLoopbackSAN function to accept SANs directly and update related logic in ensureHCPRegistration

* Update agent flag validation and enhance ingress host check with a warning log

Refactor descriptions for cluster provisioning mode and role in CRDs and documentation

Refactor logging in ServerURL function to use controller-runtime logger

Rename selectNonLoopbackSAN to findNonLoopbackSAN for clarity and update references

Refactor ServerURL function and related code to remove unused parameters and improve clarity

Remove unused imports from kubeconfig.go to improve code clarity

* suggested changes

* fix comment

* fix test

---------

Co-authored-by: jpgouin <jeanphilippe.gouin@suse.com>
Co-authored-by: RuFlo <ruv@ruv.net>
2026-07-07 14:12:19 +02:00
Kevin McDermottandGitHub 33216d49ae Merge pull request #950 from bigkevmcd/expose-service-annotations
Support annotations on exposed Services
2026-07-07 10:17:12 +01:00
88122905c9 Update GitHub Actions (#986)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-06 14:09:58 +02:00
Kevin McDermott 4cd5bd85d0 Refactor the service tests. 2026-07-06 08:42:20 +01:00
Kevin McDermott f1dbf33435 Support annotations on exposed Services
This adds a new .spec.expose.annotations field which is applied to the
service when it's created.
2026-07-06 08:19:30 +01:00
d94b9d685e Update GitHub Actions (#969)
Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
2026-07-03 17:49:16 +02:00
7f2cf6fe98 Add --tls-sans flag to k3kcli (#925)
* Add --tls-sans flag to k3kcli cluster create

* Refine --tls-sans flag description in k3kcli documentation

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Fix TLS SANs handling in cluster creation by using hostname directly

* Implement extractHost function and update TLS SAN handling in cluster creation

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-02 13:23:13 +02:00
7879a7679d Update ginkgo and gomega (main) (#956)
* Update ginkgo and gomega

* Update Ginkgo to version 2.32.0 in workflows and Makefile

---------

Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
Co-authored-by: Enrico Candino <enrico.candino@suse.com>
2026-07-02 12:34:00 +02:00
Enrico CandinoandGitHub 11953e315d Enhance command flag handling and completion for cluster and policy creation (#933)
- Refactor createFlags function to return an error for better error handling.
- Add flag completion functions for cluster mode and persistence type.
- Implement disableFileCompletion to prevent default filename completions.
- Register flag completion for mode in NewPolicyCreateCmd.
2026-07-02 10:11:22 +02:00