{"id":20264445,"url":"https://github.com/fabiand/developer-guide","last_synced_at":"2026-02-17T10:35:52.532Z","repository":{"id":190634507,"uuid":"683052326","full_name":"fabiand/developer-guide","owner":"fabiand","description":"KubeVirt Developer Documentation","archived":false,"fork":false,"pushed_at":"2023-08-25T13:36:46.000Z","size":1693,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T03:42:12.696Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fabiand.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-08-25T13:35:15.000Z","updated_at":"2023-08-25T13:35:15.000Z","dependencies_parsed_at":"2023-08-25T17:54:39.756Z","dependency_job_id":null,"html_url":"https://github.com/fabiand/developer-guide","commit_stats":null,"previous_names":["fabiand/developer-guide"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fabiand/developer-guide","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiand%2Fdeveloper-guide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiand%2Fdeveloper-guide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiand%2Fdeveloper-guide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiand%2Fdeveloper-guide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fabiand","download_url":"https://codeload.github.com/fabiand/developer-guide/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiand%2Fdeveloper-guide/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29540174,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T08:11:05.436Z","status":"ssl_error","status_checked_at":"2026-02-17T08:09:38.860Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T11:40:39.086Z","updated_at":"2026-02-17T10:35:52.492Z","avatar_url":"https://github.com/fabiand.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"This is new new home for the docs formerly found in\nhttps://github.com/kubevirt/kubevirt/tree/main/docs\n\n## Technical Overview\n\nKubernetes allows for extensions to its architecture via\n[*custom resources*]( https://Kubernetes.io/docs/concepts/extend-Kubernetes/api-extension/custom-resources/),\nwhich add a new endpoint in the Kubernetes API that stores and retrieves a\ncollection API objects of a certain kind.\nThe *custom resources* by themselves only\nenable store and retrieve structured data;\nto add business logic and specific functionality,\n[*custom controllers*]( https://Kubernetes.io/docs/concepts/extend-Kubernetes/) are needed.\n*Controllers* are clients of the Kubernetes API-Server that typically read an\nobject's `.spec`, possibly do things, and then update the object's\n`.status`.\n\nKubeVirt uses CRDs, *controllers* and other Kubernetes features, to\nrepresent and manage traditional virtual machines side by side with\ncontainers.\n\nKubeVirt's primary CRD is the VirtualMachine (VM) resource, which manages\nthe lifecycle of a VirtualMachineInstance (VMI) object that represents a\nsingle virtualized workload that executes once until completion\n(i.e., powered off).\n\n### Project Components\nThe key KubeVirt components are the virt-api, the\nvirt-controller, the virt-handler, and the virt-launcher.\n\n![KubeVirt components](components.png \"Components\")\n\n * **virt-api**: This component provides a HTTP RESTful entrypoint to manage\n   the virtual machines within the cluster.\n * **virt-controller**: This component is a Kubernetes controller that\n manages the lifecycle of VMs within the Kubernetes cluster.\n * **virt-handler**: This is a daemon that runs on each Kubernetes node.\nIt is responsible for monitoring the state of VMIs according to\nKubernetes and ensuring the corresponding libvirt domain is booted or\nhalted accordingly. To perform these operations, the virt-handler has a\ncommunication channel with each virt-launcher that is used to manage the\nlifecycle of the qemu process within the *virt-launcher* pod.\n * **virt-launcher**: There is one per running VMI.\nThis component directly manages the lifecycle of the qemu process within\nthe VMI's pod and receives lifecycle commands from virt-handler.\n\n### Scripts\n\n * `cluster-up/kubectl.sh`: This is a wrapper around Kubernetes' kubectl command so\n   that it can be run directly from this checkout without logging into a node.\n * `cluster-up/virtctl.sh` is a wrapper around `virtctl`. `virtctl` brings all\n   virtual machine specific commands with it. It is supplement to `kubectl`.\n   e.g. `cluster-up/virtctl.sh console testvm`.\n * `cluster-up/cli.sh` helps you creating ephemeral kubernetes and openshift\n   clusters for testing. This is helpful when direct management or access to\n   cluster nodes is necessary. e.g. `cluster-up/cli.sh ssh node01`.\n\n### Makefile Commands\n\n * `make cluster-up`: This will deploy a fresh environment, the contents of\n   `KUBE_PROVIDER` will be used to determine which provider from the `cluster`\n   directory will be deployed.\n * `make cluster-sync`: After deploying a fresh environment, or after making\n   changes to code in this tree, this command will sync the Pods and DaemonSets\n   in the running KubeVirt environment with the state of this tree.\n * `make cluster-down`: This will tear down a running KubeVirt environment.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabiand%2Fdeveloper-guide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffabiand%2Fdeveloper-guide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabiand%2Fdeveloper-guide/lists"}