Skip to content

feat: deploy KubeVirt and KubeVirt Manager#86

Open
ProjectInitiative wants to merge 6 commits intomainfrom
feat/kubevirt-manager-2204490038672199854
Open

feat: deploy KubeVirt and KubeVirt Manager#86
ProjectInitiative wants to merge 6 commits intomainfrom
feat/kubevirt-manager-2204490038672199854

Conversation

@ProjectInitiative
Copy link
Owner

This PR deploys KubeVirt, Containerized Data Importer (CDI), and KubeVirt Manager to the mc cluster.

Key Changes:

  1. KubeVirt: Deployed v1.4.0 operator and CR. Enabled ExpandDisks feature gate as required by KubeVirt Manager.
  2. CDI: Deployed v1.64.0 operator and CR. Enabled HonorWaitForFirstConsumer feature gate as required by KubeVirt Manager.
  3. KubeVirt Manager: Deployed the bundled nightly release and exposed it via an internal Tailscale Ingress at https://kubevirt-manager.<tailnet>.ts.net.
  4. Configuration:
    • Upstream manifests are vendored into bootstrap/base to ensure stability and reproducibility.
    • ArgoCD Sync Waves are used to ensure Operators (0) -> CRs (10) -> Manager (20) installation order.
    • Added ServerSideApply=true to handle large CRDs/manifests.

Verification:

  • Downloaded manifests verified against upstream URLs.
  • YAML syntax validated for all modified files.
  • apps.yaml and clusters/mc.yaml updated correctly.

PR created automatically by Jules for task 2204490038672199854 started by @ProjectInitiative

- Added KubeVirt Operator (v1.4.0) and CR with `ExpandDisks` feature gate.
- Added CDI Operator (v1.64.0) and CR with `HonorWaitForFirstConsumer` feature gate.
- Added KubeVirt Manager (bundled) with Tailscale Ingress.
- Updated `apps.yaml` and `clusters/mc.yaml` to include these components.
- Downloaded upstream manifests to `bootstrap/base` for reproducibility.
- Configured Sync Waves to ensure proper installation order.

Co-authored-by: ProjectInitiative <6314611+ProjectInitiative@users.noreply.github.com>
@google-labs-jules
Copy link
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

google-labs-jules bot and others added 3 commits February 23, 2026 23:17
This fixes 'TypeError: Invalid URL' errors in the CI workflows by updating the `DeterminateSystems/nix-installer-action` from v10 to v16.
v10 appears to be incompatible with recent environment changes or upstream endpoints.
Updated usage in:
- .github/workflows/manifest-diff.yaml
- .github/workflows/build-push-nixos-remote-builder.yaml
- .github/workflows/build-push-pulumi-cmp.yaml

Co-authored-by: ProjectInitiative <6314611+ProjectInitiative@users.noreply.github.com>
This fixes an issue where Pulumi was picking up an incompatible system-installed python language plugin in the CI environment.
By setting `PULUMI_HOME` to a local directory, we ensure Pulumi uses the plugins installed by the Nix environment within the workflow workspace.

Co-authored-by: ProjectInitiative <6314611+ProjectInitiative@users.noreply.github.com>
`PULUMI_HOME` expects a file path, not a URL with the `file://` scheme.
This change removes the `file://` prefix from `PULUMI_HOME` in the manifest diff workflow, ensuring that Pulumi correctly locates the plugins installed in the local workspace (via Nix) and avoids falling back to incompatible system plugins.
`PULUMI_BACKEND_URL` correctly retains the `file://` scheme as it expects a URL.

Co-authored-by: ProjectInitiative <6314611+ProjectInitiative@users.noreply.github.com>
@ProjectInitiative
Copy link
Owner Author

This PR seems to break the CI, can we investigate why?

    pulumi:pulumi:Stack homelab-pulumi-dev  warning: using pulumi-language-python from $PATH at /usr/local/bin/pulumi-language-python
@ updating.......
    pulumi:pulumi:Stack homelab-pulumi-dev  flag provided but not defined: -root
    pulumi:pulumi:Stack homelab-pulumi-dev  Usage of /usr/local/bin/pulumi-language-python:
    pulumi:pulumi:Stack homelab-pulumi-dev    -alsologtostderr
    pulumi:pulumi:Stack homelab-pulumi-dev      	log to standard error as well as files
    pulumi:pulumi:Stack homelab-pulumi-dev    -log_backtrace_at value
    pulumi:pulumi:Stack homelab-pulumi-dev      	when logging hits line file:N, emit a stack trace
    pulumi:pulumi:Stack homelab-pulumi-dev    -log_dir string
    pulumi:pulumi:Stack homelab-pulumi-dev      	If non-empty, write log files in this directory
    pulumi:pulumi:Stack homelab-pulumi-dev    -log_link string
    pulumi:pulumi:Stack homelab-pulumi-dev      	If non-empty, add symbolic links in this directory to the log files
    pulumi:pulumi:Stack homelab-pulumi-dev    -logbuflevel int
    pulumi:pulumi:Stack homelab-pulumi-dev      	Buffer log messages logged at this level or lower (-1 means don't buffer; 0 means buffer INFO only; ...). Has limited applicability on non-prod platforms.
    pulumi:pulumi:Stack homelab-pulumi-dev    -logtostderr
    pulumi:pulumi:Stack homelab-pulumi-dev      	log to standard error instead of files
    pulumi:pulumi:Stack homelab-pulumi-dev    -stderrthreshold value
    pulumi:pulumi:Stack homelab-pulumi-dev      	logs at or above this threshold go to stderr (default 2)
    pulumi:pulumi:Stack homelab-pulumi-dev    -tracing string
    pulumi:pulumi:Stack homelab-pulumi-dev      	Emit tracing to a Zipkin-compatible tracing endpoint
    pulumi:pulumi:Stack homelab-pulumi-dev    -use-executor string
    pulumi:pulumi:Stack homelab-pulumi-dev      	Use the given program as the executor instead of looking for one on PATH
    pulumi:pulumi:Stack homelab-pulumi-dev    -v value
    pulumi:pulumi:Stack homelab-pulumi-dev      	log level for V logs
    pulumi:pulumi:Stack homelab-pulumi-dev    -version
    pulumi:pulumi:Stack homelab-pulumi-dev      	Print the current plugin version and exit
    pulumi:pulumi:Stack homelab-pulumi-dev    -vmodule value
    pulumi:pulumi:Stack homelab-pulumi-dev      	comma-separated list of pattern=N settings for file-filtered logging
    pulumi:pulumi:Stack homelab-pulumi-dev  1 warning; 26 messages
Diagnostics:
  pulumi:pulumi:Stack (homelab-pulumi-dev):
    warning: using pulumi-language-python from $PATH at /usr/local/bin/pulumi-language-python

    flag provided but not defined: -root
    Usage of /usr/local/bin/pulumi-language-python:
      -alsologtostderr
        	log to standard error as well as files
      -log_backtrace_at value
        	when logging hits line file:N, emit a stack trace
      -log_dir string
        	If non-empty, write log files in this directory
      -log_link string
        	If non-empty, add symbolic links in this directory to the log files
      -logbuflevel int
        	Buffer log messages logged at this level or lower (-1 means don't buffer; 0 means buffer INFO only; ...). Has limited applicability on non-prod platforms.
      -logtostderr
        	log to standard error instead of files
      -stderrthreshold value
        	logs at or above this threshold go to stderr (default 2)
      -tracing string
        	Emit tracing to a Zipkin-compatible tracing endpoint
      -use-executor string
        	Use the given program as the executor instead of looking for one on PATH
      -v value
        	log level for V logs
      -version
        	Print the current plugin version and exit
      -vmodule value
        	comma-separated list of pattern=N settings for file-filtered logging

error: failed to load language plugin python: could not read plugin [/usr/local/bin/pulumi-language-python]: exit status 2
Error: Process completed with exit code 255.

We are using nix, so this shouldn't have broken, because everything is pinned. Can we check to see if this is due to a change you made in this PR?

@google-labs-jules
Copy link
Contributor

This PR seems to break the CI, can we investigate why?

    pulumi:pulumi:Stack homelab-pulumi-dev  warning: using pulumi-language-python from $PATH at /usr/local/bin/pulumi-language-python
@ updating.......
    pulumi:pulumi:Stack homelab-pulumi-dev  flag provided but not defined: -root
    pulumi:pulumi:Stack homelab-pulumi-dev  Usage of /usr/local/bin/pulumi-language-python:
    pulumi:pulumi:Stack homelab-pulumi-dev    -alsologtostderr
    pulumi:pulumi:Stack homelab-pulumi-dev      	log to standard error as well as files
    pulumi:pulumi:Stack homelab-pulumi-dev    -log_backtrace_at value
    pulumi:pulumi:Stack homelab-pulumi-dev      	when logging hits line file:N, emit a stack trace
    pulumi:pulumi:Stack homelab-pulumi-dev    -log_dir string
    pulumi:pulumi:Stack homelab-pulumi-dev      	If non-empty, write log files in this directory
    pulumi:pulumi:Stack homelab-pulumi-dev    -log_link string
    pulumi:pulumi:Stack homelab-pulumi-dev      	If non-empty, add symbolic links in this directory to the log files
    pulumi:pulumi:Stack homelab-pulumi-dev    -logbuflevel int
    pulumi:pulumi:Stack homelab-pulumi-dev      	Buffer log messages logged at this level or lower (-1 means don't buffer; 0 means buffer INFO only; ...). Has limited applicability on non-prod platforms.
    pulumi:pulumi:Stack homelab-pulumi-dev    -logtostderr
    pulumi:pulumi:Stack homelab-pulumi-dev      	log to standard error instead of files
    pulumi:pulumi:Stack homelab-pulumi-dev    -stderrthreshold value
    pulumi:pulumi:Stack homelab-pulumi-dev      	logs at or above this threshold go to stderr (default 2)
    pulumi:pulumi:Stack homelab-pulumi-dev    -tracing string
    pulumi:pulumi:Stack homelab-pulumi-dev      	Emit tracing to a Zipkin-compatible tracing endpoint
    pulumi:pulumi:Stack homelab-pulumi-dev    -use-executor string
    pulumi:pulumi:Stack homelab-pulumi-dev      	Use the given program as the executor instead of looking for one on PATH
    pulumi:pulumi:Stack homelab-pulumi-dev    -v value
    pulumi:pulumi:Stack homelab-pulumi-dev      	log level for V logs
    pulumi:pulumi:Stack homelab-pulumi-dev    -version
    pulumi:pulumi:Stack homelab-pulumi-dev      	Print the current plugin version and exit
    pulumi:pulumi:Stack homelab-pulumi-dev    -vmodule value
    pulumi:pulumi:Stack homelab-pulumi-dev      	comma-separated list of pattern=N settings for file-filtered logging
    pulumi:pulumi:Stack homelab-pulumi-dev  1 warning; 26 messages
Diagnostics:
  pulumi:pulumi:Stack (homelab-pulumi-dev):
    warning: using pulumi-language-python from $PATH at /usr/local/bin/pulumi-language-python

    flag provided but not defined: -root
    Usage of /usr/local/bin/pulumi-language-python:
      -alsologtostderr
        	log to standard error as well as files
      -log_backtrace_at value
        	when logging hits line file:N, emit a stack trace
      -log_dir string
        	If non-empty, write log files in this directory
      -log_link string
        	If non-empty, add symbolic links in this directory to the log files
      -logbuflevel int
        	Buffer log messages logged at this level or lower (-1 means don't buffer; 0 means buffer INFO only; ...). Has limited applicability on non-prod platforms.
      -logtostderr
        	log to standard error instead of files
      -stderrthreshold value
        	logs at or above this threshold go to stderr (default 2)
      -tracing string
        	Emit tracing to a Zipkin-compatible tracing endpoint
      -use-executor string
        	Use the given program as the executor instead of looking for one on PATH
      -v value
        	log level for V logs
      -version
        	Print the current plugin version and exit
      -vmodule value
        	comma-separated list of pattern=N settings for file-filtered logging

error: failed to load language plugin python: could not read plugin [/usr/local/bin/pulumi-language-python]: exit status 2
Error: Process completed with exit code 255.

We are using nix, so this shouldn't have broken, because everything is pinned. Can we check to see if this is due to a change you made in this PR?

I have investigated the CI failure. It appears that pulumi-language-python was being incorrectly picked up from the system path /usr/local/bin instead of the Nix environment, causing a version mismatch. I have pushed a fix to explicitly set PULUMI_HOME to the local workspace, which ensures the correct plugins are used. Additionally, I updated the nix-installer-action to a newer version to resolve an earlier setup failure.

google-labs-jules bot and others added 2 commits February 26, 2026 16:30
- Confirmed CI failure was due to environment isolation issues.
- Verified previous commits fixed PULUMI_HOME and nix-installer-action version.

Co-authored-by: ProjectInitiative <6314611+ProjectInitiative@users.noreply.github.com>
@github-actions
Copy link

Manifest Changes Detected

Click to expand diff
Only in manifests-pr/1-manifest: argoproj.io_v1alpha1-application-argocd-mc-cdi-cr.yaml
Only in manifests-pr/1-manifest: argoproj.io_v1alpha1-application-argocd-mc-cdi-operator.yaml
Only in manifests-pr/1-manifest: argoproj.io_v1alpha1-application-argocd-mc-kubevirt-cr.yaml
Only in manifests-pr/1-manifest: argoproj.io_v1alpha1-application-argocd-mc-kubevirt-manager.yaml
Only in manifests-pr/1-manifest: argoproj.io_v1alpha1-application-argocd-mc-kubevirt-operator.yaml

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant