Custom Resource Definitions (CRDs)

This document describes all the Custom Resource Definitions (CRDs) provided by virtrigaud.

VirtualMachine

The VirtualMachine CRD represents a virtual machine instance.

Spec

FieldTypeRequiredDescription
providerRefObjectRefYesReference to the Provider resource
classRefObjectRefYesReference to the VMClass resource
imageRefObjectRefYesReference to the VMImage resource
networks[]VMNetworkRefNoNetwork attachments
disks[]DiskSpecNoAdditional disks
userDataUserDataNoCloud-init configuration
metaDataMetaDataNoCloud-init metadata configuration
placementPlacementNoPlacement hints
powerStatestringNoDesired power state (On/Off)
tags[]stringNoTags for organization

Status

FieldTypeDescription
idstringProvider-specific VM identifier
powerStatestringCurrent power state
ips[]stringAssigned IP addresses
consoleURLstringConsole access URL
conditions[]ConditionStatus conditions
observedGenerationint64Last observed generation
lastTaskRefstringReference to last async task
providermap[string]stringProvider-specific details

Example

apiVersion: infra.virtrigaud.io/v1beta1
kind: VirtualMachine
metadata:
  name: demo-web-01
spec:
  providerRef:
    name: vsphere-prod
  classRef:
    name: small
  imageRef:
    name: ubuntu-22-template
  networks:
    - name: app-net
      ipPolicy: dhcp
  powerState: On

VMClass

The VMClass CRD defines resource allocation for virtual machines.

Spec

FieldTypeRequiredDescription
cpuint32YesNumber of virtual CPUs
memoryMiBint32YesMemory in MiB
firmwarestringNoFirmware type (BIOS/UEFI)
diskDefaultsDiskDefaultsNoDefault disk settings
guestToolsPolicystringNoGuest tools policy
extraConfigmap[string]stringNoProvider-specific configuration

Example

apiVersion: infra.virtrigaud.io/v1beta1
kind: VMClass
metadata:
  name: small
spec:
  cpu: 2
  memoryMiB: 4096
  firmware: UEFI
  diskDefaults:
    type: thin
    sizeGiB: 40

VMImage

The VMImage CRD defines base templates/images for virtual machines.

Spec

FieldTypeRequiredDescription
vsphereVSphereImageSpecNovSphere-specific configuration
libvirtLibvirtImageSpecNoLibvirt-specific configuration
prepareImagePrepareNoImage preparation options

Example

apiVersion: infra.virtrigaud.io/v1beta1
kind: VMImage
metadata:
  name: ubuntu-22-template
spec:
  vsphere:
    templateName: "tmpl-ubuntu-22.04-cloudimg"
  libvirt:
    url: "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"
    format: qcow2

VMNetworkAttachment

The VMNetworkAttachment CRD defines network configurations.

Spec

FieldTypeRequiredDescription
vsphereVSphereNetworkSpecNovSphere-specific network config
libvirtLibvirtNetworkSpecNoLibvirt-specific network config
ipPolicystringNoIP assignment policy
macAddressstringNoStatic MAC address

Example

apiVersion: infra.virtrigaud.io/v1beta1
kind: VMNetworkAttachment
metadata:
  name: app-net
spec:
  vsphere:
    portgroup: "PG-App"
  ipPolicy: dhcp

Provider

The Provider CRD configures hypervisor connection details.

Spec

FieldTypeRequiredDescription
typestringYesProvider type (vsphere/libvirt/etc)
endpointstringYesProvider endpoint URI
credentialSecretRefObjectRefYesSecret containing credentials
insecureSkipVerifyboolNoSkip TLS verification
defaultsProviderDefaultsNoDefault placement settings
rateLimitRateLimitNoAPI rate limiting

Example

apiVersion: infra.virtrigaud.io/v1beta1
kind: Provider
metadata:
  name: vsphere-prod
spec:
  type: vsphere
  endpoint: https://vcenter.example.com
  credentialSecretRef:
    name: vsphere-creds
  defaults:
    datastore: datastore1
    cluster: compute-cluster-a

Common Types

ObjectRef

FieldTypeRequiredDescription
namestringYesObject name
namespacestringNoObject namespace

DiskSpec

FieldTypeRequiredDescription
sizeGiBint32YesDisk size in GiB
typestringNoDisk type
namestringNoDisk name

UserData

FieldTypeRequiredDescription
cloudInitCloudInitConfigNoCloud-init configuration

MetaData

FieldTypeRequiredDescription
inlinestringNoInline cloud-init metadata in YAML format
secretRefObjectRefNoSecret containing cloud-init metadata

CloudInitConfig

FieldTypeRequiredDescription
secretRefObjectRefNoSecret containing cloud-init data
inlinestringNoInline cloud-init configuration