Skip to content

A Kubernetes Container Object Storage Interface (COSI) Driver for Linode

License

Notifications You must be signed in to change notification settings

linode/linode-cosi-driver

Repository files navigation

Linode COSI Driver

GitHub Go Report Card Static Badge

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.

Getting Started

Follow these steps to get started with Linode COSI Driver:

  1. Prerequisites:

    1. Install COSI Custom Resource Definitions.
    kubectl create -k github.com/kubernetes-sigs/container-object-storage-interface-api
    1. Install COSI Controller.
    kubectl create -k github.com/kubernetes-sigs/container-object-storage-interface-controller
  2. Installation:

    1. Create new API token in Akamai Cloud Manager. The token must be configured with the following permissions:

      • Object Storage - Read/Write
    2. 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
  3. Usage:

    1. Create Bucket Class (see the example.BucketClass.yaml).
    kubectl create -f ./examples/example.BucketClass.yaml
    1. Create Bucket Access Class (see the example.BucketAccessClass.yaml).
    kubectl create -f ./examples/example.BucketAccessClass.yaml
    1. Create Bucket Claim (see the example.BucketClaim.yaml).
    kubectl create -f ./examples/example.BucketClaim.yaml
    1. Create Bucket Access Class (see the example.BucketAccess.yaml).
    kubectl create -f ./examples/example.BucketAccess.yaml
    1. Use the example-secret secret in your workload, e.g. in deployment:
    spec:
      template:
        spec:
          containers:
            - volumeMounts:
                - mountPath: /conf
                  name: example-secret-vol
          volumes:
            - name: example-secret-vol
              secret:
                secretName: example-secret
                items:
                  - key: BucketInfo
                    path: BucketInfo.json

License

Linode COSI Driver is licensed under the Apache 2.0 terms. Please review it before using or contributing to the project.

Support

For any issues, questions, or support, please create an issue.

Contributing

We welcome contributions! If you have ideas, bug reports, or want to contribute code, please check out our Contribution Guidelines.