Skip to main content
Version: 1.1.0

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

ResourceDescription
ProjectRoot resource. Represents an Aruba Cloud project/account. All other resources belong to a Project.
VPCVirtual Private Cloud. Network container for Subnets, SecurityGroups, and CloudServers.
SubnetA subnet within a VPC. CloudServers attach to one or more Subnets.
SecurityGroupA firewall group within a VPC. Contains SecurityRules.
SecurityRuleAn ingress or egress firewall rule within a SecurityGroup.
KeyPairAn SSH public key registered in Aruba Cloud. Used by CloudServers for access.
ElasticIPA static public IP address. Optionally attached to a CloudServer.
BlockStorageA block storage volume. Can be used as a boot disk or data volume for a CloudServer.
CloudServerA 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.

  1. Project — no dependencies; create first
  2. VPC — requires Project to be Active
  3. (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
  4. SecurityRule — requires SecurityGroup Active
  5. 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:

  1. CloudServer — delete first
  2. SecurityRule, ElasticIP (if attached) — delete before their parents
  3. Subnet, SecurityGroup, KeyPair, BlockStorage — delete before VPC/Project
  4. VPC — delete after all children are gone
  5. Project — delete last
tip

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:

FieldTypeRequiredDescription
spec.tenantstringOptionalAruba Cloud tenant identifier (ARU-XXXXXX). Mutable, except on Project where it is immutable.
spec.tags[]stringOptionalLabels propagated to the Aruba Cloud resource

Every resource except Project also has:

FieldTypeRequiredDefaultDescription
spec.regionstringYesITBG-BergamoAruba Cloud region
spec.projectReferenceResourceReferenceYesOwning Project

Status Reporting

All resources expose a standard status:

FieldDescription
status.phaseCurrent lifecycle phase: Pending, Creating, Active, Updating, Deleting, Deleted, or Failed
status.resourceIDAruba Cloud-side identifier, set after the resource is created
status.messageHuman-readable description of the current state
status.conditionsKubernetes-standard conditions with fine-grained reason codes

See the Architecture page for a full list of condition reason codes.