CloudServer
| Property | Value |
|---|---|
| Kind | CloudServer |
| API Group/Version | arubacloud.com/v1alpha1 |
| CRD Name | cloudservers.arubacloud.com |
| Scope | Namespaced |
| Short Names | cs, 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
| Field | Type | Required | Default | Validation | Description |
|---|---|---|---|---|---|
tenant | string | No | — | — | Aruba Cloud tenant identifier. Must match all referenced resources' tenant. |
region | string | Yes | ITBG-Bergamo | — | Aruba Cloud region. Must match all referenced resources' region. |
zone | string | Yes | ITBG-1 | — | Availability zone. Must match the boot volume's zone. |
flavorName | string | Yes | — | — | Aruba Cloud instance flavor/size identifier (e.g., CSO4A8 for 4 vCPU / 8 GB RAM) |
vpcReference | ResourceReference | Yes | — | — | Reference to the VPC for network connectivity |
subnetReferences | []ResourceReference | Yes | — | Min items: 1 | One or more Subnets to attach the server to |
securityGroupReferences | []ResourceReference | Yes | — | Min items: 1 | One or more SecurityGroups governing the server's traffic |
keyPairReference | ResourceReference | Yes | — | — | Reference to the KeyPair for SSH access |
bootVolumeReference | ResourceReference | Yes | — | — | Reference to a bootable BlockStorage volume (must have bootable: true) |
dataVolumeReferences | []ResourceReference | No | — | — | Optional additional BlockStorage data volumes to attach |
elasticIPReference | ResourceReference | No | — | — | Optional ElasticIP to assign as a static public address |
projectReference | ResourceReference | Yes | — | — | Reference to the owning Project |
tags | []string | No | — | — | Labels propagated to the Aruba Cloud resource |
Status Fields
| Field | Type | Description |
|---|---|---|
phase | string | Current lifecycle phase |
resourceID | string | Aruba Cloud CloudServer ID, set after creation |
message | string | Human-readable status message |
observedGeneration | int64 | Last .metadata.generation processed |
phaseStartTime | timestamp | When the current phase began |
conditions | []Condition | Standard Kubernetes conditions |
projectID | string | Resolved Aruba Cloud project ID |
vpcID | string | Resolved Aruba Cloud VPC ID |
bootVolumeID | string | Resolved Aruba Cloud boot volume ID |
elasticIPID | string | Resolved Aruba Cloud ElasticIP ID (if assigned) |
keyPairID | string | Resolved Aruba Cloud KeyPair ID |
subnetIDs | []string | Resolved Aruba Cloud subnet IDs |
securityGroupIDs | []string | Resolved Aruba Cloud security group IDs |
dataVolumeIDs | []string | Resolved Aruba Cloud data volume IDs |
volumeIDs | []string | All 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
Activefirst: Project, VPC, all referenced Subnets, all referenced SecurityGroups, the KeyPair, and the boot BlockStorage. ElasticIP must also beActiveif referenced. - Cross-validation: The operator validates that all referenced resources share the same
tenantandregion. It also validates that all referenced Subnets'projectReferenceandvpcReferencematch the CloudServer's own references. Mismatches causeFailed+IntentionValidationFailed. - Zone consistency: The
zoneof the CloudServer must match thezoneof 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:
tagscan 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 entersUpdating+Failedbriefly 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