Criei o VirtFoundry: operator Kubernetes rumo ao CNCF Sandbox

Eu criei o VirtFoundry . É um operator Kubernetes — CRDs virtfoundry.io — que transforma um cluster que você já opera em nuvem privada multi-tenant: tenant, VPC, VM, volume, snapshot, IAM, API REST e UI.

O hypervisor é o KubeVirt . A fonte da verdade não é MySQL: é o próprio Kubernetes. O destino do projeto é candidatar ao CNCF Sandbox .

Ainda não é um projeto da CNCF. Estamos construindo operator, charts, provider Terraform e comunidade para submeter quando o repositório completar a maturidade mínima — não antes.

Lista de VMs no VirtFoundry

O problema que eu queria resolver

Se você já opera Kubernetes e ainda precisa de VMs, as opções reais costumam ser:

  1. Um segundo silo — Proxmox (ou similar) ao lado do cluster. Dois backups, duas redes, duas fontes da verdade.
  2. YAML cru do KubeVirt — excelente hypervisor API, péssimo produto de nuvem privada. Cada tenant vira um exercício de VirtualMachine, NAD, PVC e RBAC na mão.
  3. OpenStack / HCI completo — funciona, mas você passa a operar uma nuvem inteira além do Kubernetes.

Eu já escrevi sobre o caminho CloudStack no homelab. O VirtFoundry é o outro caminho: Kubernetes-native. Quem quer o cluster não deveria precisar de um segundo appliance só para tratar VM como recurso de cloud.

KubeVirt resolve rodar a VM. Não resolve o dia 2:

Arquitetura: operator primeiro

O control plane é um operator. O grupo de API é virtfoundry.io. Hoje o store de produção é só Kubernetes (store.driver=kubernetes) — sem MySQL no caminho crítico.

CamadaO que é
OperatorControllers + CRDs (Tenant, Instance, VPC, Disk, snapshots, IAM…)
coreAPI REST /api/v1 + UI React — clientes do mesmo store
HelmDois charts: virtfoundry-operator e virtfoundry (API + UI)
TerraformProvider de primeira parte no Registry
RuntimeKubeVirt (VM), Multus (rede de tenant), CSI (disco; Longhorn no homelab)

Dashboard do VirtFoundry no homelab

A ideia é compor blocos CNCF, não reinventar hypervisor nem CSI. O operator reconcilia Tenant (namespace + status) e Instance (fase, IP, nome KubeVirt). Os outros kinds já existem como CRD; os controllers vão fechando o gap. GitOps entra de graça: Helm + Argo CD, CR como fonte da verdade.

Topologia recomendada: cluster BYO, Longhorn, Gateway, VPC de tenant

O que já dá para usar

Release atual dos charts: 0.7.0. No homelab isso já cobre o ciclo que o TOC vai perguntar num demo: VM + volume + snapshot + UI.

Snapshots de VM no VirtFoundry

Redes e VPCs por tenant

RecursoEstado
Tenant + IAM (JWT, API key, roles)Funciona
VM (deploy, start/stop, console)Funciona — KubeVirt
Volume + snapshot de VMFunciona; snapshot de volume precisa CSI com snapshot (Longhorn, não local-path)
VPC / rede isolada / IP públicoFunciona com Multus; sem Multus a UI sobe e a rede de tenant não
L4 load balancer (VIP + listener)Em evolução no roadmap
SSO / billingFora do core por enquanto, de propósito

Homelab conta. Os três maintainers já estão no ADOPTERS.md . O que falta para o Sandbox é adopter fora do MAINTAINERS.md.

Comparação honesta

Proxmox VE“Só KubeVirt”HarvesterVirtFoundry
ModeloAppliance de hypervisorYAML de VMHCI completoControl plane IaaS no seu cluster
Multi-tenantACL de datacenterVocê montaApplianceTenant + IAM de primeira classe
GitOpsNão é o produtoPossívelISO / HCIHelm / Argo, CRDs
Melhor quandoISO, ZFS, PBS, zero K8sPoucas VMs, você aceita YAMLQuer HCI prontoJá opera Kubernetes e quer UX de cloud

Proxmox ainda ganha se você quer ISO, PBS, dataset ZFS ou LXC como produto. Fique lá. VirtFoundry não é um drop-in dessas coisas.

Harvester é HCI. VirtFoundry assume BYO Kubernetes (kubeadm, kubespray, managed).

CloudStack continua sendo IaaS clássico — e eu uso no homelab. VirtFoundry é o primo que mora no mesmo cluster das workloads de container.

CNCF Sandbox: alvo, não status

O Sandbox da CNCF tem um checklist duro: licença Apache-2.0 completa, governança, CoC, security, idade do repo ≥ 6 meses, maintainers em ≥2 organizações, e evidência de que o projeto é reutilizável — não um reference architecture.

O que já está no lugar:

O que não está:

Não escreva “projeto da CNCF”, “estamos no landscape” nem “já submetemos”. O destino é o Sandbox. O status hoje é open source Apache 2.0, alinhado às convenções da fundação.

Store em CRD: kubectl get crd | grep virtfoundry.io

Como experimentar

Docs: virtfoundry.github.io/helm-charts . Quickstart < 30 min. Pin a versão — não use :latest.

BASH
helm repo add virtfoundry https://virtfoundry.github.io/helm-charts
helm repo update

helm install virtfoundry-operator virtfoundry/virtfoundry-operator \
  --version 0.7.0 \
  -n virtfoundry-system --create-namespace

helm install virtfoundry virtfoundry/virtfoundry \
  --version 0.7.0 \
  -n virtfoundry-system \
  --set secrets.rootPassword='change-me' \
  --set secrets.jwtSecret='change-me'
Clique para expandir e ver mais

Ordem: plataforma no cluster (KubeVirt + Multus + CSI) → operatorAPI/UI. Sem Multus, VPC e IP público não funcionam. Sem CSI com snapshot, snapshot de volume não funciona — use snapshot de VM no lab.

Repos:

Se instalar no homelab: abra uma issue, um good first issue, ou um PR em ADOPTERS.md. Isso pesa mais do que um like quando a application do Sandbox existir.

Comparação canônica no produto: Why VirtFoundry . Checklist de tração: CNCF-CHECKLIST.md .

Comments

Iniciar busca

Digite palavras-chave para buscar

↑↓
ESC
⌘K Atalho