- Complete project structure with Next.js frontend - GraphQL API backend with Apollo Server - Portal application with NextAuth - Crossplane Proxmox provider - GitOps configurations - CI/CD pipelines - Testing infrastructure (Vitest, Jest, Go tests) - Error handling and monitoring - Security hardening - UI component library - Documentation
102 lines
2.8 KiB
YAML
102 lines
2.8 KiB
YAML
apiVersion: apiextensions.crossplane.io/v1
|
|
kind: CompositeResourceDefinition
|
|
metadata:
|
|
name: virtualmachines.proxmox.yourorg.io
|
|
spec:
|
|
group: proxmox.yourorg.io
|
|
names:
|
|
kind: VirtualMachine
|
|
plural: virtualmachines
|
|
versions:
|
|
- name: v1alpha1
|
|
served: true
|
|
referenceable: true
|
|
schema:
|
|
openAPIV3Schema:
|
|
type: object
|
|
properties:
|
|
spec:
|
|
type: object
|
|
properties:
|
|
parameters:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
description: Name of the virtual machine
|
|
node:
|
|
type: string
|
|
description: Proxmox node to deploy on
|
|
cpu:
|
|
type: integer
|
|
description: Number of CPU cores
|
|
default: 2
|
|
memory:
|
|
type: string
|
|
description: Memory in GB (e.g., "4Gi")
|
|
default: "4Gi"
|
|
disk:
|
|
type: string
|
|
description: Disk size (e.g., "50Gi")
|
|
default: "50Gi"
|
|
storage:
|
|
type: string
|
|
description: Storage pool name
|
|
default: "local-lvm"
|
|
network:
|
|
type: string
|
|
description: Network bridge
|
|
default: "vmbr0"
|
|
image:
|
|
type: string
|
|
description: OS image template
|
|
default: "ubuntu-22.04-cloud"
|
|
site:
|
|
type: string
|
|
description: Proxmox site identifier
|
|
required:
|
|
- name
|
|
- node
|
|
- site
|
|
required:
|
|
- parameters
|
|
status:
|
|
type: object
|
|
properties:
|
|
vmId:
|
|
type: integer
|
|
state:
|
|
type: string
|
|
ipAddress:
|
|
type: string
|
|
conditions:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: string
|
|
status:
|
|
type: string
|
|
reason:
|
|
type: string
|
|
message:
|
|
type: string
|
|
additionalPrinterColumns:
|
|
- name: VMID
|
|
type: integer
|
|
jsonPath: .status.vmId
|
|
- name: STATE
|
|
type: string
|
|
jsonPath: .status.state
|
|
- name: IP
|
|
type: string
|
|
jsonPath: .status.ipAddress
|
|
- name: AGE
|
|
type: date
|
|
jsonPath: .metadata.creationTimestamp
|
|
claimNames:
|
|
kind: VirtualMachineClaim
|
|
plural: virtualmachineclaims
|
|
|