The Linode COSI Driver is an implementation of the Kubernetes Container Object Storage Interface (COSI) standard. COSI provides a consistent and unified way to expose object storage to containerized workloads running in Kubernetes. This driver specifically enables integration with Linode Object Storage service, making it easier for Kubernetes applications to interact with Linode's scalable and reliable object storage infrastructure.
Follow these steps to get started with Linode COSI Driver:
-
Prerequisites:
- Install COSI Custom Resource Definitions.
kubectl create -k github.com/kubernetes-sigs/container-object-storage-interface-api
- Install COSI Controller.
kubectl create -k github.com/kubernetes-sigs/container-object-storage-interface-controller
-
Installation:
-
Create new API token in Akamai Cloud Manager. The token must be configured with the following permissions:
- Object Storage - Read/Write
-
Install Linode COSI Driver using Helm.
helm install linode-cosi-driver \ ./helm/linode-cosi-driver/ \ --set=apiToken=<YOUR_LINODE_API_TOKEN> \ --namespace=linode-cosi-driver \ --create-namespace
-
-
Usage:
- Create Bucket Class (see the example.BucketClass.yaml).
kubectl create -f ./examples/example.BucketClass.yaml
- Create Bucket Access Class (see the example.BucketAccessClass.yaml).
kubectl create -f ./examples/example.BucketAccessClass.yaml
- Create Bucket Claim (see the example.BucketClaim.yaml).
kubectl create -f ./examples/example.BucketClaim.yaml
- Create Bucket Access Class (see the example.BucketAccess.yaml).
kubectl create -f ./examples/example.BucketAccess.yaml
- Use the
example-secret
secret in your workload, e.g. in deployment:
spec: template: spec: containers: - volumeMounts: - mountPath: /conf name: BucketInfo volumes: - name: example-secret-vol secret: name: example-secret items: - key: BucketInfo path: BucketInfo.json
Before running the integration tests, ensure the following prerequisites are met:
- Linode Account: You need a valid Linode account with access to the Linode API.
- Linode Token: Set the
LINODE_TOKEN
environment variable with your Linode API token. - Environment Variables: Additional environment variables, such as
LINODE_API_URL
andLINODE_API_VERSION
, can be set as needed.
To run the integration tests, execute the following:
go test -tags=integration ./...
The tests cover various operations such as creating a bucket, granting and revoking bucket access, and deleting a bucket. These operations are performed multiple times to ensure idempotency.
The test suite provides configurable parameters through environment variables:
LINODE_TOKEN
: Linode API token.LINODE_API_URL
: Linode API URL.LINODE_API_VERSION
: Linode API version.IDEMPOTENCY_ITERATIONS
: Number of times to run idempotent operations (default is 2).
The TestHappyPath
function executes a series of idempotent operations on the Linode COSI driver, covering bucket creation, access granting and revoking, and bucket deletion. The test validates the driver's functionality under normal conditions.
The test suite is organized into a suite
struct, providing a clean separation of concerns for different test operations. The suite includes methods for creating, deleting, granting access to, and revoking access from a bucket. These methods are called in an idempotent loop to ensure the driver's robustness.
Linode COSI Driver is licensed under the Apache 2.0 terms. Please review it before using or contributing to the project.
For any issues, questions, or support, please create an issue.
We welcome contributions! If you have ideas, bug reports, or want to contribute code, please check out our Contribution Guidelines.