CRDs Introduction
The operator exposes Aruba Cloud resources as Kubernetes Custom Resources under:
- API group:
arubacloud.com - Version:
v1alpha1 - Scope: Namespaced (all resources)
For a visual overview of how resources relate to each other, see the Resource Ownership diagram on the Architecture page.
Available Resources
| Resource | Description |
|---|---|
| Project | Root resource. Represents an Aruba Cloud project/account. All other resources belong to a Project. |
| VPC | Virtual Private Cloud. Network container for Subnets, SecurityGroups, and CloudServers. |
| Subnet | A subnet within a VPC. CloudServers attach to one or more Subnets. |
| SecurityGroup | A firewall group within a VPC. Contains SecurityRules. |
| SecurityRule | An ingress or egress firewall rule within a SecurityGroup. |
| KeyPair | An SSH public key registered in Aruba Cloud. Used by CloudServers for access. |
| ElasticIP | A static public IP address. Optionally attached to a CloudServer. |
| BlockStorage | A block storage volume. Can be used as a boot disk or data volume for a CloudServer. |
| CloudServer | A virtual machine. References most other resource types. |
Creation Ordering
Resources must be created in dependency order. The operator holds a resource in Pending phase until all its dependencies are Active.
- Project — no dependencies; create first
- VPC — requires Project to be Active
- (parallel) The following can all be created at the same time, as long as their parent is Active:
- Subnet — requires VPC Active
- SecurityGroup — requires VPC Active
- BlockStorage — requires Project Active
- KeyPair — requires Project Active
- ElasticIP — requires Project Active
- SecurityRule — requires SecurityGroup Active
- CloudServer — requires Project, VPC, all referenced Subnets, SecurityGroups, KeyPair, and boot BlockStorage to be Active
Deletion Ordering
When you delete resources manually, delete them in reverse creation order to avoid dependency conflicts:
- CloudServer — delete first
- SecurityRule, ElasticIP (if attached) — delete before their parents
- Subnet, SecurityGroup, KeyPair, BlockStorage — delete before VPC/Project
- VPC — delete after all children are gone
- Project — delete last
If you want to tear down everything at once, just delete the Project. The operator will cascade-delete all children automatically in the correct order.
Common Patterns
Cross-Resource References
All references use a ResourceReference object with name and namespace:
projectReference:
name: my-project
namespace: default
References can span namespaces. The operator reads status.resourceID from the referenced object to resolve the Aruba Cloud-side ID.
Common Fields
Every resource has these fields:
| Field | Type | Required | Description |
|---|---|---|---|
spec.tenant | string | Optional | Aruba Cloud tenant identifier (ARU-XXXXXX). Mutable, except on Project where it is immutable. |
spec.tags | []string | Optional | Labels propagated to the Aruba Cloud resource |
Every resource except Project also has:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
spec.region | string | Yes | ITBG-Bergamo | Aruba Cloud region |
spec.projectReference | ResourceReference | Yes | — | Owning Project |
Status Reporting
All resources expose a standard status:
| Field | Description |
|---|---|
status.phase | Current lifecycle phase: Pending, Creating, Active, Updating, Deleting, Deleted, or Failed |
status.resourceID | Aruba Cloud-side identifier, set after the resource is created |
status.message | Human-readable description of the current state |
status.conditions | Kubernetes-standard conditions with fine-grained reason codes |
See the Architecture page for a full list of condition reason codes.