csi-hyperstack

Hyperstack CSI driver

This is an official kubernetes CSI Driver for Nexgen Hyperstack platform. It uses the Hyperstack Go SDK to interact with the Hyperstack API and manage resources. The driver is written in Go and is inspired by other popular cloud adapters.

🚀 Getting Started

This repository contains Taskfile with various helper commands to manage current project

Before you start, make sure you have the following tools installed:

There are also CLI dependencies that are installed with Go:

🏗️ Usage

Hyperstack CSI driver is deployed as a Helm chart. To provision it to the cluster:

💻 Development

To build the driver, run the following command:

task build

If you want to push images for testing:

This will compile the CSI driver and output the binary in the dist directory.

🔎 Testing

This project is intended to be used in a k8s cluster running on Hyperstack. To run it locally (for testing) you can run it directly:

export HYPERSTACK_API_KEY=""
export HYPERSTACK_API_ADDRESS=""

# Start the csi-hyperstack binary
./dist/csi-hyperstack start \
  --endpoint "unix://tmp/csi-hyperstack.sock" \
  --hyperstack-cluster-id "" \
  --hyperstack-node-id "" \
  --service-controller-enabled \
  --service-node-enabled

To get more information on available commands and options run help:

./dist/csi-hyperstack --help

Better approach is using docker-compose.

Testing gRPC calls

You can use gRPCurl to send requests and read responses:

Example output for list:

csi.v1.Controller
csi.v1.Identity
csi.v1.Node
grpc.reflection.v1.ServerReflection
grpc.reflection.v1alpha.ServerReflection

Some helpful endpoints ( see specification for more info):

Documentation

For more information about the features of the Hyperstack API, visit the Hyperstack Documentation.

Relevant docs:

Examples (reference for development):

Contributing

Contributions to this project are welcome. Please make sure to test your changes before submitting a pull request.