Skip to main content
Version: 1.1.2

CloudServer

PropertyValue
KindCloudServer
API Group/Versionarubacloud.com/v1alpha1
CRD Namecloudservers.arubacloud.com
ScopeNamespaced
Short Namescs, arucs

Description

A CloudServer is a virtual machine instance on Aruba Cloud. It is the most reference-heavy resource: a CloudServer ties together a Project, a VPC, one or more Subnets, one or more SecurityGroups, a KeyPair for SSH access, a bootable BlockStorage volume for the operating system, optional data volumes, and an optional ElasticIP for a static public address. All referenced resources must be Active before the CloudServer can be provisioned.

Spec Fields

FieldTypeRequiredDefaultValidationDescription
tenantstringNoAruba Cloud tenant identifier. Must match all referenced resources' tenant.
regionstringYesITBG-BergamoAruba Cloud region. Must match all referenced resources' region.
zonestringYesITBG-1Availability zone. Must match the boot volume's zone.
flavorNamestringYesAruba Cloud instance flavor/size identifier (e.g., CSO4A8 for 4 vCPU / 8 GB RAM)
vpcReferenceResourceReferenceYesReference to the VPC for network connectivity
subnetReferences[]ResourceReferenceYesMin items: 1One or more Subnets to attach the server to
securityGroupReferences[]ResourceReferenceYesMin items: 1One or more SecurityGroups governing the server's traffic
keyPairReferenceResourceReferenceYesReference to the KeyPair for SSH access
bootVolumeReferenceResourceReferenceYesReference to a bootable BlockStorage volume (must have bootable: true)
dataVolumeReferences[]ResourceReferenceNoOptional additional BlockStorage data volumes to attach
elasticIPReferenceResourceReferenceNoOptional ElasticIP to assign as a static public address
projectReferenceResourceReferenceYesReference to the owning Project
tags[]stringNoLabels propagated to the Aruba Cloud resource

Status Fields

FieldTypeDescription
phasestringCurrent lifecycle phase
resourceIDstringAruba Cloud CloudServer ID, set after creation
messagestringHuman-readable status message
observedGenerationint64Last .metadata.generation processed
phaseStartTimetimestampWhen the current phase began
conditions[]ConditionStandard Kubernetes conditions
projectIDstringResolved Aruba Cloud project ID
vpcIDstringResolved Aruba Cloud VPC ID
bootVolumeIDstringResolved Aruba Cloud boot volume ID
elasticIPIDstringResolved Aruba Cloud ElasticIP ID (if assigned)
keyPairIDstringResolved Aruba Cloud KeyPair ID
subnetIDs[]stringResolved Aruba Cloud subnet IDs
securityGroupIDs[]stringResolved Aruba Cloud security group IDs
dataVolumeIDs[]stringResolved Aruba Cloud data volume IDs
volumeIDs[]stringAll volume IDs attached to the server (boot + data)

References

Owned by: Project

Uses (not owned by):

  • VPC — network environment
  • Subnet — network attachment (one or more)
  • SecurityGroup — firewall policy (one or more)
  • KeyPair — SSH access
  • BlockStorage — boot disk (required) and data disks (optional)
  • ElasticIP — static public IP (optional)

Lifecycle

  • Creation ordering: The CloudServer is the last resource to create. All of the following must be Active first: Project, VPC, all referenced Subnets, all referenced SecurityGroups, the KeyPair, and the boot BlockStorage. ElasticIP must also be Active if referenced.
  • Cross-validation: The operator validates that all referenced resources share the same tenant and region. It also validates that all referenced Subnets' projectReference and vpcReference match the CloudServer's own references. Mismatches cause Failed+IntentionValidationFailed.
  • Zone consistency: The zone of the CloudServer must match the zone of the boot BlockStorage.
  • Deletion behaviour: CloudServers have no children. When you delete a CloudServer, the operator calls the Aruba Cloud API to power it down and delete it, then removes the finalizer. Referenced resources (volumes, key pairs, etc.) are not deleted automatically.
  • Update behaviour: tags can be updated. Modifying referenced resources (adding/removing subnets, changing flavor) triggers an update cycle. Some updates may not be supported by the Aruba Cloud API — in that case, the resource enters Updating+Failed briefly and the spec is rolled back to match the cloud state.

Example

Full CloudServer with ElasticIP and data volume

apiVersion: arubacloud.com/v1alpha1
kind: CloudServer
metadata:
name: web-server
namespace: default
spec:
tenant: ARU-123456
region: ITBG-Bergamo
zone: ITBG-1
flavorName: "CSO4A8"
projectReference:
name: my-project
namespace: default
vpcReference:
name: web-vpc
namespace: default
subnetReferences:
- name: web-subnet
namespace: default
securityGroupReferences:
- name: web-sg
namespace: default
keyPairReference:
name: my-ssh-key
namespace: default
bootVolumeReference:
name: web-server-boot
namespace: default
dataVolumeReferences:
- name: web-server-data
namespace: default
elasticIPReference:
name: web-server-ip
namespace: default
tags:
- production
- web

Minimal CloudServer (no ElasticIP, no data volumes)

apiVersion: arubacloud.com/v1alpha1
kind: CloudServer
metadata:
name: worker-node
namespace: default
spec:
tenant: ARU-123456
region: ITBG-Bergamo
zone: ITBG-1
flavorName: "CSO2A4"
projectReference:
name: my-project
namespace: default
vpcReference:
name: web-vpc
namespace: default
subnetReferences:
- name: web-subnet
namespace: default
securityGroupReferences:
- name: web-sg
namespace: default
keyPairReference:
name: my-ssh-key
namespace: default
bootVolumeReference:
name: worker-boot
namespace: default

kubectl Quick Reference

# List all cloud servers
kubectl get cs -n default

# Describe a server and view all resolved IDs in status
kubectl describe arucs web-server -n default

# Watch provisioning progress
kubectl get cs web-server -n default -w