NodeJS
An example implementation in NodeJS of a kubernetes client to interact with a Virtual Server resource on CoreWeave Cloud.
Implementation
The example is broken down into two parts:
- The client, which is glue code layered on top of the GoDaddy implementation of a kubernetes-client
- The application
Both parts are described below, and examples can be found on CoreWeave's GitHub.
Client
The client (client.js
) provides an interface to create a Kubernetes client using your Kubernetes credentials (token). client.js
may be dropped into any application and used to interface with the Virtual Server resource.
A set of functions specific to creating, modifying, and checking the status of a Virtual Server are additionally provided, which operate as follows:
Function name | Description |
---|---|
init() | Initializes the client ⚠️ init() must be called prior to using the client |
namespace | Namespace in which the Virtual Server is deployed |
name | Name of the Virtual Server |
virtualServer.start({namespace, name}) | Starts a stopped Virtual Server |
virtualServer.stop({namespace, name}) | Stops a running Virtual Server |
virtualServer.get({namespace, name}) | Retrieves a Virtual Server |
virtualServer.ready({namespace, name}) | Stopping function that waits for the VirtualMachineReady status condition of a Virtual Server |
virtualServer.delete({namespace, name}) | Deletes a Virtual Server |
manifest | A Virtual Server manifest (JSON/Object) - See Examples |
virtualServer.list(\{namespace\}) | Lists all Virtual Servers |
virtualServer.create(manifest) | Creates a Virtual Server |
virtualServer.update(manifest) | Update an existing Virtual Server |
Application
The application (main.js
) implements client.js
in order to create, watch, get, and update an example Virtual Server.
The example application serves as an example of how to implement client.js
. Additionally, the example application illustrates how one might retrieve status information from a running Virtual Server, retrieving its run state and network information.
Finally, the example shows how to simply interface with the kubevirt __ subresource
API in order to start and stop a Virtual Server.
Example
{apiVersion: "virtualservers.coreweave.com/v1alpha1",kind: "VirtualServer",metadata: {name: "example-vs",namespace: "my-namespace"},spec: {region: "ORD1",os: {type: "linux"},resources: {gpu: {type: "Quadro_RTX_4000",count: 1},cpu: {count: 3},memory: "16Gi"},storage: {root: {size: "40Gi",storageClassName: "ceph-ssd-2-replica",source: {pvc: {namespace: "vd-images",name: "ubuntu2004-docker-master-20210323-ord1"}}}},users: [{username, #Set from environment variablepassword #Set from environment variable}],network: {public: true,tcp: {ports: [22,443,60443,4172,3389,]},udp: {ports: [4172,3389]}},initializeRunning: true}}