Overview¶
The HPE COSI Driver for Kubernetes is deployed by using industry standard means, a Helm chart.
Delivery Vehicles¶
Helm is currently the only supported delivery vehicle for the deployment of the HPE COSI Driver.
Helm¶
Helm is the package manager for Kubernetes. Software is being delivered in a format designated as a "chart". Helm is a standalone CLI that interacts with the Kubernetes API server using your KUBECONFIG file.
The official Helm chart for the HPE COSI Driver for Kubernetes is hosted on Artifact Hub. The chart supports Helm 3 from version 1.0.0 of the HPE COSI Driver. In an effort to avoid duplicate documentation, please see the chart for instructions on how to deploy the COSI driver using Helm.
- Go to the chart on Artifact Hub.
HPE Alletra Storage MP Disconnected Deployments
When deploying against an HPE Alletra Storage MP Disconnected with X10000 instance, the glcpCommonCloud Helm chart value must be set with the sso- prefix before the instance hostname. Note that this sso- prefix applies to the glcpCommonCloud Helm chart value, and is distinct from the dscc-api- prefix used for the dsccZone field in the Secret (see below). The two prefixes apply to different fields and must not be interchanged.
Helm for Air-gapped Environments¶
In the event of deploying the HPE COSI Driver in a secure air-gapped environment, the images used by the Helm chart and the upstream SIG Storage COSI controller need to be mirrored to a private registry.
Establish a working directory on a bastion Linux host that has HTTP access to the Internet, the private registry and the Kubernetes cluster where the COSI driver needs to be installed. The bastion host is assumed to have the docker, helm and kubectl command installed. It's also assumed throughout that the user executing docker has logged in to the private registry and that pulling images from the private registry is allowed anonymously by the Kubernetes compute nodes.
Create a working directory and set environment variables referenced throughout the procedure.
mkdir hpe-cosi-driver
cd hpe-cosi-driver
export MY_REGISTRY=registry.enterprise.example.com
export MY_COSI_DRIVER=2.0.0
Next, create a list with the COSI driver images.
helm repo add hpe-storage https://hpe-storage.github.io/co-deployments/
helm repo update
helm template hpe-storage/hpe-cosi-driver --version ${MY_COSI_DRIVER} \
| grep 'image:' | awk '{print $2}' | tr -d '"' | sort | uniq > images
The upstream SIG Storage COSI controller is deployed separately from the Helm chart and its image needs to be added to the list.
kubectl kustomize "github.com/kubernetes-sigs/container-object-storage-interface//?ref=release-0.2" \
| grep 'image:' | awk '{print $2}' | sort | uniq >> images
Pull, tag and push the images to the private registry.
cat images | xargs -n 1 docker pull
awk '{ print $1" "$1 }' images | sed -E -e "s/ quay.io| registry.k8s.io| gcr.io/ ${MY_REGISTRY}/" | xargs -n 2 docker tag
sed -E -e "s/quay.io|registry.k8s.io|gcr.io/${MY_REGISTRY}/" images | xargs -n 1 docker push
Tip
Depending on what kind of private registry being used, the base repositories hpestorage, sig-storage and k8s-staging-sig-storage might need to be created and given write access to the user pushing the images.
All images used by the HPE COSI Driver Helm chart are parameterized individually with the fully qualified URL. Create a values.yaml file with the mirrored locations.
containers:
cosiDriver:
image: registry.enterprise.example.com/hpestorage/cosi-driver:v2.0.0
sideCar:
image: registry.enterprise.example.com/sig-storage/objectstorage-sidecar:v0.2.2
Install the chart with the values.yaml file.
helm install my-hpe-cosi-driver hpe-storage/hpe-cosi-driver \
-n default --version ${MY_COSI_DRIVER} \
-f values.yaml
Note
If the private registry requires authentication, create a pull Secret in the Namespace and reference it with the regSecretName chart value.
The SIG Storage COSI controller manifests need the image reference replaced before being applied.
kubectl kustomize "github.com/kubernetes-sigs/container-object-storage-interface//?ref=release-0.2" \
| sed -e "s/container-object-storage-system/default/g" \
| sed -E -e "s|gcr.io|${MY_REGISTRY}|" \
| kubectl apply -f -
Important
- The SIG Storage COSI controller image is published to a staging registry and the tag encodes a build date and commit rather than a semantic version. Mirror the exact tag emitted by the command above and pin the mirrored copy.
- If the client running
helmis in the air-gapped environment as well, the docs directory needs to be hosted on a web server in the air-gapped environment, and then use below command instead.helm repo add hpe-storage https://my-web-server.internal/docs - Regardless of the deployment being air-gapped, the Kubernetes compute nodes where the HPE COSI Driver runs need network access to the object storage system S3 endpoint and to the HPE Data Services Cloud Console zone specified in the
Secret.
Add an HPE Storage Backend¶
Once the COSI driver is deployed, you must create a Secret with the following details before you can use the COSI API resources.
Secret Parameters¶
| Parameter | Applies To | Description |
|---|---|---|
| accessKey | All | The access key of the S3 user with bucket creation, bucket-tagging and deletion permissions. |
| secretKey | All | The secret key for the S3 user who has bucket creation, bucket-tagging and deletion permissions. |
| endpoint | All | The S3 frontend network DNS subdomains address of the backend object storage system; that is, an HPE Alletra Storage MP X10000 system. |
| glcpUserClientId | All | The HPE Green Lake API client ID. |
| glcpUserSecretKey | All | The HPE Green Lake API client secret. |
| dsccZone | All | The fully qualified domain name (FQDN) of the HPE Data Services Cloud Console zone. |
| clusterSerialNumber | All | The backend storage system cluster serial number. |
| glcpWorkspaceId | HPE Alletra Storage MP X10000 | The HPE GreenLake workspace ID. |
| onPremCloudCA | HPE Alletra Storage MP Disconnected with X10000 | A Base64-encoded CA certificate for the HPE Alletra Storage MP Disconnected with X10000 instance. Required when the CA certificate is not present in the cluster's trusted certificate store. If the CA certificate is already available in the cluster's truststore, this parameter can be omitted. |
Note
- For HPE Alletra Storage MP Disconnected with X10000 deployments, prefix the
dsccZoneinstance hostname withdscc-api-. - The Kubernetes compute
Nodeswhere the HPE COSI Driver is allowed to run need to be able to access the Data Services Cloud Console zone specified.
Example Secret manifest for an HPE Alletra Storage MP X10000 deployment:
apiVersion: v1
kind: Secret
metadata:
name: hpe-object-backend
namespace: default
stringData:
accessKey: testuser
secretKey: testkey
endpoint: http://192.168.1.100:8080
glcpUserClientId: 00000000-0000-0000-0000-000000000000
glcpUserSecretKey: 00000000000000000000000000000000
glcpWorkspaceId: 00000000000000000000000000000000
dsccZone: us1.data.cloud.hpe.com
clusterSerialNumber: 0000000000
apiVersion: v1
kind: Secret
metadata:
name: hpe-object-backend
namespace: default
stringData:
accessKey: testuser
secretKey: testkey
endpoint: http://192.168.1.100:8080
glcpUserClientId: 00000000-0000-0000-0000-000000000000
glcpUserSecretKey: 00000000000000000000000000000000
dsccZone: dscc-api.example.lab.nimblestorage.com
clusterSerialNumber: 0000000000
# Optional: include if the DSCC CA certificate is not in the cluster's truststore
# onPremCloudCA: <base64-encoded-ca-certificate>
Create the Secret.
kubectl create -f hpe-object-backend.yaml
See Also
The COSI source code repository contains a parameterized script that can assist in creating a correctly formatted Secret. See github.com/hpe-storage/cosi-driver/scripts/cosi_secret for more details.
Creating and Locating Resources¶
- To create the S3 user:
- Follow the steps in the HPE documentation to create an access policy.
- Choose All Buckets.
- Add custom actions for the policy:
CreateBucket,DeleteBucket,PutBucketTagging.
- To create the user, refer to the HPE documentation for this purpose and select the access policy created in the previous step.
- Save the user name and password. These will be used as the S3 access key and S3 secret key respectively in the COSI secret.
- Follow the steps in the HPE documentation to create an access policy.
- To create the HPE Green Lake API client ID and secret, refer to the following HPE documentation.
- To locate the Data Services Cloud Console zone FQDN:
- Log into HPE Data Services Cloud Console.
- On the Services page, click My Services to view all services available in your workspace.
- Select the service that your HPE Alletra Storage MP X10000 device is assigned to and click Launch.
- After the service is launched, save the value of the URL from the browser. E.g.:
https://console-us1.data.cloud.hpe.com. - After dropping the prefix
https://console-, the Data Services Cloud Console zone FQDN value to be used in theSecretshould have the following format:us1.data.cloud.hpe.com. - Supported Data Services Cloud Console zone FQDNs as of June 2026 are:
- us1.data.cloud.hpe.com
- jp1.data.cloud.hpe.com
- eu1.data.cloud.hpe.com
- uk1.data.cloud.hpe.com
- uae1.data.cloud.hpe.com
- For the latest list of supported zones, refer to the HPE documentation.
- To locate the S3 endpoint:
- Log into HPE Data Services Cloud Console.
- Launch the service that your HPE Alletra Storage MP X10000 device is assigned to.
- Select Data Ops Manager.
- From the menu on the left, select Systems. From the list click on the name of the system you want to use for COSI operations.
- Click on the Networking tab. Under the Frontend Network section, save the value of the Network DNS Subdomains field.
- The S3 endpoint can be constructed from the Network DNS Subdomains value by using the format:
http://<Network DNS Subdomains>.
- To locate the cluster serial number of the HPE Alletra Storage MP X10000 system, refer to the following HPE documentation.
- To view the workspace ID and manage the workspace (required from 2.0.0):
- Log into the HPE Data Services Cloud Console UI.
- Navigate to Quick links → Manage Workspace.
- The Workspace ID is displayed on the page and is used as the
glcpWorkspaceIdfield in theSecret. - For more details, refer to the Manage workspace documentation.
- To obtain the CA certificate (required for HPE Alletra Storage MP Disconnected with X10000 setups):
- Retrieve the CA certificate from the HPE Data Services Cloud Console instance being used. For the download steps, refer to the Downloading your CA certificates documentation.
- Encode the certificate in Base64 format and use the resulting value as the
onPremCloudCAfield in theSecret.
Note
Steps 6 and 7 are applicable only from the HPE COSI Driver for Kubernetes v2.0.0 onwards. These steps are not applicable to any versions prior.
Tip
In a real world scenario it's more practical to name the Secret something that makes sense for the organization. It could be the hostname of the backend or the role it carries; i.e., "hpe-alletra-sanjose-prod".
Next Steps¶
Next you need to create a BucketClass.