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
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
Enrico Candino and GitHub
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
Enrico Candino and GitHub
ed3e901229
Add K3K prefix to k3kcli env vars, align cli test, add failCount ( #962 )
...
* align test-cli
* test context
* increase timeout
* Enhance cluster readiness check with failure count limit
Add prefix K3K to env vars
2026-07-01 11:14:37 +02:00
Enrico Candino and GitHub
244011e68d
Refactor kubeconfig URL generation ( #938 )
...
* Refactor kubeconfig generation to remove unused port parameter and update related functions
* Refactor kubeconfig generation to streamline error handling and remove unused imports
* Refactor kubeconfig URL generation functions and deprecate old implementation
* restore old behavior
* Add 'k3kcli kubeconfig get' command and update documentation
* Refactor URL generation by removing deprecated getURLFromService function and updating tests to use new implementation
* Fix expected URL for LoadBalancer test case to include hostname
* Refactor kubeconfig test documentation to clarify URL generation behavior for ClusterIP, NodePort, and LoadBalancer service types
* Refactor kubeconfig URL generation functions to improve clarity and maintainability
* Remove deprecated 'k3kcli kubeconfig get' command and update related documentation
* Set logger to discard in NewRootCmd for improved logging control
* Refactor getURLFromService to streamline ingress key retrieval
2026-06-26 11:16:54 +02:00
Enrico Candino and GitHub
1e23fdb4fa
Add unit tests for URL generation across service types in kubeconfig ( #939 )
...
* Add unit tests for URL generation across service types in kubeconfig
* addressed comments for SchemeBuilder and Context
* Refactor client creation and REST config loading in NewRootCmd
* Refactor scheme and schemeBuilder initialization
* use t.Helper in helper funcs
2026-06-25 14:44:19 +02:00
Enrico Candino and GitHub
06c5aee7c9
add importas linter ( #779 )
2026-04-13 17:25:17 +02:00
Enrico Candino and GitHub
18889ba6b7
Removed Pod mutating Webhook (shared mode) ( #699 )
...
* removed all webhook references
* fix tests
* removal of webhook
* updated doc
* add downward API test
* small refactor of virtual-kubelet
* split tests
2026-03-31 10:29:22 +02:00
Kevin McDermott
eaa20c16e7
Make the storageRequestSize immutable.
...
It can't be changed in the StatefulSet and modifying the value causes an
error.
2026-01-22 08:27:20 +00:00
Kevin McDermott
d12f3ea757
Fix lint issues and failing test.
...
golangci-lint was complaining about duplicate imports of corev1 and the
ordering of them in the files.
2026-01-21 14:50:30 +00:00
Kevin McDermott
9ea81c861b
Use resource.Quantity for storageRequestSize
...
Previously the resource.Quantity was stored as string which allowed
invalid values to be created.
This performs validation on the strings using the standard K8s resource
mechanism.
2026-01-21 14:50:28 +00:00
Hussein Galal and GitHub
fcc7191ab3
CLI cluster update ( #595 )
...
* CLI cluster update
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2026-01-20 14:00:24 +02:00
Enrico Candino and GitHub
c16eae99c7
Added AsciiDoc k3kcli automation ( #597 )
...
* adding scripts for asciidoc cli generation
* fix small typos to align to existing docs
* added pandoc
* pandoc check
2026-01-07 11:16:40 +01:00
Enrico Candino and GitHub
fc6bcedc5f
fix for missing label update in creation, added tests ( #592 )
2025-12-16 11:34:50 +01:00
Enrico Candino and GitHub
8760afd5bc
Added --namespace flag to k3kcli policy create ( #564 )
...
* added --namespace flag to policy create to actually bind the new policy to existing namespaces
* fix lint
* fix tests
* added overwrite flag
* updated cli docs
* fix tests 2
* moved double quotes to single quote
* fix test
2025-11-14 21:45:28 +01:00
Enrico Candino and GitHub
27730305c2
Added labels and annotations flags to cluster and policy create ( #565 )
...
* added labels and annotations flags to cluster create
* added labels and annotations flag to create policy command
2025-11-14 16:54:01 +01:00
Enrico Candino and GitHub
d0e50a580d
Added cluster details in cli during creation ( #562 )
...
* added cluster details in cli during cluster creation, silenced usage, removed static persistence type from help
* fix docs
2025-11-14 12:53:15 +01:00
Enrico Candino and GitHub
075d72df5d
Cleanup of customCAs spec ( #527 )
...
* cleanup spec from customCAs when omitted
* add enabled default for customCAs
2025-10-23 22:11:44 +02:00
Hussein Galal and GitHub
a3076af38f
Increase timeout and add timeout option ( #514 )
...
* Increase timeout and add timeout option
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Increase timeout and add timeout option
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-10-17 16:51:40 +03:00
Enrico Candino and GitHub
594c2571c3
promoted v1alpha1 resources to v1beta1 ( #505 )
2025-10-13 17:24:56 +02:00
Hussein Galal and GitHub
aca01127f8
Fix PVC sync and sync defaults ( #458 )
...
* Fix PVC sync and sync defaults
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fix PVC sync and sync defaults
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fixes to pvc sync
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* increase the timeout on the e2e test
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* configure the syncConfig correctly in vcp
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* update docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix policy unit test
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* revert timeout of the test to 20 second
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-09-16 13:01:12 +03:00
Hussein Galal and GitHub
caf785f23b
Add resources sync configuration ( #431 )
...
* Add resources sync configuration
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* update docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* refactor cluster sync
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* more fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* more fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* simplify the syncerContext
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* simplify the syncerContext
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* drop the ClusterClient struct
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fix updates to syncer
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* lint
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* refactor secrets/configmaps sync
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* refactor secrets/configmaps sync
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Add imagepullsecret translation
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix test
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* add exception for deleted resources
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* linting fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* remove the option to disable imagepullsecret translation
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-09-01 14:34:29 +03:00
Enrico Candino and GitHub
d23cf86fce
Fix missing custom-certs flag in cli ( #444 )
...
* fix missing custom-certs path in cli
* fix docs
2025-08-25 18:37:29 +02:00
Hussein Galal and GitHub
8d89c7d133
Fix service port for generated kubeconfig secret ( #433 )
...
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-08-18 09:17:30 +03:00
Enrico Candino and GitHub
084701fcd9
Migrate from urfave/cli to cobra ( #426 )
...
* wip
* env var fix
* cluster create
* cluster create and delete
* cluster list
* cluster cmd
* kubeconfig
* policy create
* policy delete and list, and added root commands
* removed urfavecli from k3kcli
* fix policy command
* k3k-kubelet to cobra
* updated docs
* updated go.mod
* updated test
* added deletion
* added cleanup and flake attempts
* wip bind env
* simplified config
2025-07-24 16:49:40 +02:00
Enrico Candino and GitHub
98d17cdb50
Added new golangci-lint formatters ( #425 )
...
* add gci formatter
* gofmt and gofumpt
* rewrite rule
* added make fmt
2025-07-22 10:42:41 +02:00
Enrico Candino and GitHub
2047a600ed
Migrate golangci-lint to v2 ( #424 )
...
* golangci-lint upgrade
* fix lint
2025-07-22 10:10:26 +02:00
Hussein Galal and GitHub
a98c49b59a
Adding custom certificate to the virtual clusters ( #409 )
...
* Adding custom certificate to the virtual clusters
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fix tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* docs update
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* integrate cert-manager
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Add individual cert tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-07-21 19:23:11 +03:00
Enrico Candino and GitHub
2ab71df139
Add Conditions and current status to Cluster ( #408 )
...
* Added Cluster Conditions
* added e2e tests
* fix lint
* cli polling
* update tests
2025-07-14 15:53:37 +02:00
Hussein Galal and GitHub
fcc875ab85
Mirror host nodes ( #389 )
...
* mirror host nodes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* add mirror host nodes feature
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Add controllername to secrets/configmap syncer
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* golint
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* build docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* setting controller namespace env
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix typo
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Add a controller_namespace env to the test
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Add mirrorHostNodes spec to conformance tests
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* change the ptr int to int
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix map key name
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-07-08 14:48:24 +03:00
Hussein Galal and GitHub
b81073619a
Generate kubeconfig secret ( #392 )
...
* Generate kubeconfig secret
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix typo
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fix typo
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-06-23 14:31:36 +03:00
jpgouin and GitHub
541f506d9d
[CLI] add storage-request-size flag ( #372 )
...
[CLI] add storage-request-size flag
2025-06-20 17:13:47 +02:00
Enrico Candino and GitHub
0c4752039d
Fix for k3kcli policy delete ( #386 )
...
* fix for delete policy
* fix docs
2025-06-20 12:08:51 +02:00
Enrico Candino and GitHub
5758b880a5
Added k3kcli cluster list and k3kcli policy list commands ( #368 )
...
* list commands
* go mod tidy
* moved logic to separate file, small refactor
2025-05-30 15:35:31 +02:00
Enrico Candino and GitHub
2655d792cc
Update allowedModeTypes field to allowedMode ( #367 )
...
* change allowedModeTypse to allowedMode
* added shortname "vcp" and additional mode column
2025-05-29 14:53:58 +02:00
Enrico Candino and GitHub
8fbe4b93e8
Change VirtualClusterPolicy scope to Cluster ( #358 )
...
* rename clusterset to policy
* fixes
* rename clusterset to policy
* wip
* go mod
* cluster scoped
* gomod
* gomod
* fix lint
* wip
* moved logic to vcp controller
* update for clusters
* small fixes
* update cli
* fix docs, updated spec
* fix cleanup
* added missing owns for limitranges
2025-05-29 10:45:48 +02:00
Enrico Candino and GitHub
cca3d0c309
Rename ClusterSet to VirtualClusterPolicy ( #349 )
...
* rename clusterset to policy
* fixes
2025-05-15 12:04:47 +02:00
Hussein Galal and GitHub
510ab4bb8a
Add extra env for servers/agents ( #324 )
...
* Add extra env for servers/agents
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* cli docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fix container env
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-04-21 12:25:51 +02:00
Hussein Galal and GitHub
9d96ee1e9c
Display error if agents flag is provided in shared mode ( #330 )
...
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-04-18 17:48:43 +02:00
Enrico Candino and GitHub
7cb2399b89
Update and fix to k3kcli for new ClusterSet integration ( #321 )
...
* added clusterset flag to cluster creation and displayname to clusterset creation
* updated cli docs
2025-04-04 13:22:55 +02:00
Enrico Candino and GitHub
b58578788c
Add clusterset commands ( #319 )
...
* added clusterset create command, small refactor with appcontext
* added clusterset delete
* updated docs
2025-04-03 11:07:32 +02:00
Enrico Candino and GitHub
bd947c0fcb
Create dedicated namespace for new clusters ( #314 )
...
* create dedicated namespace for new clusters
* porcelain test
* use --exit-code instead of test and shell for escaping issue
* update go.mod
2025-03-26 14:53:41 +01:00
Hussein Galal and GitHub
b0b61f8d8e
Fix delete cli ( #281 )
...
* Fix delete cli
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* make lint
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* update docs
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* Fix delete cli
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl lint
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* fixes
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* wsl lint
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* check if object has a controller reference before removing
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* move the update to the if condition
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
* move the update to the if condition
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
---------
Signed-off-by: galal-hussein <hussein.galal.ahmed.11@gmail.com >
2025-03-24 13:44:00 +02:00
Enrico Candino and GitHub
d0810af17c
Fix kubeconfig load from multiple configuration files ( #301 )
...
* fix kubeconfig load with standards kubectl approach
* update cli docs
2025-03-07 15:11:00 +01:00
jpgouin
1d027909ee
cli - fix bug with Kubeconfig value resolution
2025-03-04 10:23:54 +00:00
jpgouin
3cf8c0a744
default the kubeconfig flag to $HOME/.kube/config
2025-03-03 13:21:07 +00:00
jpgouin
bf8fdd9071
fix lint
2025-03-03 13:21:07 +00:00
jpgouin
4ca5203df1
Flatten the cli structure, add docs generation in the Makefile and remove crds/Makefile
2025-03-03 13:21:07 +00:00
Enrico Candino and GitHub
5e8bc0d3cd
Update CRDs documentation ( #279 )
...
* complete CRD documentation
* fix missing rebuild of CRDs
2025-03-03 11:47:53 +01:00
Enrico Candino and GitHub
430e18bf30
Added wsl linter, and fixed related issues ( #275 )
...
* added wsl linter
* fixed issues
2025-02-27 10:59:02 +01:00