NodeJS
An example implementation in NodeJS of a kubernetes client to interact with a Virtual Server resource on CoreWeave Cloud.
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, and the application; both of which are described below.
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 | |
virtualServer.list({namespace}) | Lists all Virtual Servers |
virtualServer.create(manifest) | Creates a Virtual Server |
virtualServer.update(manifest) | Update an existing Virtual Server |
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.{
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 variable
password #Set from environment variable
}
],
network: {
public: true,
tcp: {
ports: [
22,
443,
60443,
4172,
3389,
]
},
udp: {
ports: [
4172,
3389
]
}
},
initializeRunning: true
}
}
Last modified 4mo ago