API
The evroc cloud offers a Kubernetes API that allows users to use kubectl or other tools to create and manage Virtual Machines (VMs) and their associated resources (such as boot and storage Disks, external gateways and public IPs).
Using the API directly is intended for advanced users only. We recommend using the web console and evroc CLI first to learn the object model, before moving to using the Kubernetes API directly.
Environment Setup
See the Getting Started docs for how to download and log in to evroc's cloud.
We recommend reading Understanding evroc's cloud API, which explains how to get a configuration file for accessing our Kubernetes API.
Creating and managing resources
You can create resources by applying YAML definitions via kubectl, as with a standard Kubernetes
API. Alternatively, you can use the evroc CLI tool instead of kubectl, with the following
command:evroc apply -f <resource-definition>.yaml.
To create a virtual machine and associated components, follow the instructions here.
Deleting Resources
Use the standard kubectl delete <resource> <name> -n <namespace> command.
Default networking setup
Any resource group you deploy resources to will automatically have the following networking resources in it:
- a virtual private cloud
 - a subnet
 - an external gateway
 - a default security group
 
You can view these default resources via the API, but not edit them.
The virtual private cloud is called default-sto-1:
$ kubectl get virtualprivatecloud -A
NAMESPACE          NAME            READY   REASON
org-aaabbbcccddd   default-sto-1   True    Ready
$ kubectl get virtualprivatecloud -o yaml default-sto-1 -n org-aaabbbcccddd
apiVersion: networking.evroclabs.net/v1alpha1
kind: VirtualPrivateCloud
metadata:
...
  name: default-sto-1
  namespace: org-aaabbbcccddd
spec: {}
status:
  conditions:
  - lastTransitionTime: "2025-01-01T12:00:00Z"
    message: ""
    reason: Ready
    status: "True"
    type: Ready
The default subnet is called default-sto-1-a. The subnet’s status field provides detailed
information about IP usage, including the following fields:
availableIPv4AddressCountavailableIPv4RangesusingIPv4AddressCountusingIPv4Ranges
$ kubectl get evsubnet -A
NAMESPACE          NAME              VPC             CIDR BLOCK    READY   REASON
org-aaabbbcccddd   default-sto-1-a   default-sto-1   10.0.0.0/24   True    Ready
$ kubectl get evsubnet -o yaml default-sto-1-a
apiVersion: networking.evroclabs.net/v1alpha1
kind: Subnet
metadata:
...
  name: default-sto-1-a
spec:
  ipv4CidrBlock:
    block: 10.0.0.0/24
  vpcRef:
    name: default-sto-1
status:
  availableIPv4AddressCount: 251
  availableIPv4Ranges:
  - 10.0.0.2-10.0.0.17
  - 10.0.0.20-10.0.0.254
  conditions:
  - lastTransitionTime: "2025-01-01T12:00:00Z"
    message: ""
    reason: Ready
    status: "True"
    type: Ready
  usingIPv4AddressCount: 2
  usingIPv4Ranges:
  - 10.0.0.18-10.0.0.19
The default external gateway is called default-sto-1:
$ kubectl get externalgateway
NAME            VPC             HOME SUBNET       READY   REASON
default-sto-1   default-sto-1   default-sto-1-a   True    Ready
$ kubectl get subnet -o yaml   default-sto-1-a
apiVersion: networking.evroclabs.net/v1alpha1
kind: Subnet
metadata:
...
  name: default-sto-1
spec:
  homeSubnet:
    name: default-sto-1-a
  vpcRef:
    name: default-sto-1
status:
  conditions:
  - lastTransitionTime: "2025-01-01T12:00:00Z"
    message: ""
    reason: Ready
    status: "True"
    type: Ready
  privateIPv4Address: 10.0.0.254
The default security group is called default-sto-1. It allows egress to anywhere, and ingress
from within the same virtual private cloud:
$ kubectl get securitygroups -A
NAMESPACE          NAME            READY   REASON
org-aaabbbcccddd   default-sto-1   True
$ kubectl get securitygroup -o yaml default-sto-1 -n org-aaabbbcccddd
apiVersion: networking.evroclabs.net/v1alpha1
kind: SecurityGroup
metadata:
  ...
  name: default-sto-1
  namespace: org-aaabbbcccddd
spec:
  vpcRef:
    name: default-sto-1
status:
  conditions:
  - lastTransitionTime: "2025-02-11T13:09:18Z"
    message: ""
    reason: Ready
    status: "True"
    type: Ready