The csi-offline-bundle.sh
script can be used to create a package for the offline installation of Dell CSI storage providers for deployment via Helm.
This includes the following drivers:
The csm-offline-bundle.sh
script can be used to create a package for the offline installation of Dell CSI storage providers for deployment via the CSM Operator.
Multiple linux based systems may be required to create and process an offline bundle for use.
- One linux based system, with internet access, will be used to create the bundle. This involved the user cloning a git repository hosted on github.com and then invoking a script that utilizes
docker
orpodman
to pull and save container images to file. - One linux based system, with access to an image registry, to invoke a script that uses
docker
orpodman
to restore container images from file and push them to a registry
If one linux system has both internet access and access to an internal registry, that system can be used for both steps.
Preparing an offline bundle requires the following utilities:
Dependency | Usage |
---|---|
docker or podman |
docker or podman will be used to pull images from public image registries, tag them, and push them to a private registry. |
One of these will be required on both the system building the offline bundle as well as the system preparing for installation. | |
Tested version(s) are docker 19.03+ and podman 1.6.4+ |
|
git |
git will be used to manually clone one of the above repos in order to create and offline bundle. |
This is only needed on the system preparing the offline bundle. | |
Tested version(s) are git 1.8+ but any version should work. |
To perform an offline installation of a driver or the Operator, the following steps should be performed:
- Build an offline bundle
- Unpacking an offline bundle and preparing for installation
- Perform either a Helm installation or Operator installation
This needs to be performed on a linux system with access to the internet as a git repo will need to be cloned, and container images pulled from public registries.
The build an offline bundle, the following steps are needed:
- Perform a
git clone
of the desired repository. For a Helm based install, the specific driver repo should be cloned. For an Operator based deployment, the Dell CSM Operator repo should be cloned - Run the offline bundle script with an argument of
-c
in order to create an offline bundle
- For Helm installs, the
csi-offline-bundle.sh
script will be found in thedell-csi-helm-installer
directory - For Operator installs, the
csm-offline-bundle.sh
script will be found in thescripts
directory
The script will perform the following steps:
- Determine required images by parsing either the driver Helm charts (if run from a cloned CSI Driver git repository) or the Dell CSM Operator configuration files (if run from a clone of the Dell CSM Operator repository)
- Perform an image
pull
of each image required - Save all required images to a file by running
docker save
orpodman save
- Build a
tar.gz
file containing the images as well as files required to installer the driver and/or Operator
The resulting offline bundle file can be copied to another machine, if necessary, to gain access to the desired image registry.
For example, here is the output of a request to build an offline bundle for the Dell CSM Operator:
[user@anothersystem /home/user]# git clone https://github.com/dell/csm-operator.git
[user@anothersystem /home/user]# cd csm-operator
[user@system /home/user/csm-operator]# bash scripts/csm-offline-bundle.sh -c
*
* Building image manifest file
Processing file /root/csm-operator/operatorconfig/driverconfig/common/default.yaml
Processing file /root/csm-operator/bundle/manifests/dell-csm-operator.clusterserviceversion.yaml
*
* Pulling and saving container images
quay.io/dell/container-storage-module/csi-isilon:v2.13.0
quay.io/dell/container-storage-module/csi-metadata-retriever:v1.9.0
quay.io/dell/container-storage-module/csipowermax-reverseproxy:v2.11.0
quay.io/dell/container-storage-module/csi-powermax:v2.13.0
quay.io/dell/container-storage-module/csi-powerstore:v2.13.0
quay.io/dell/container-storage-module/csi-unity:v2.13.0
quay.io/dell/container-storage-module/csi-vxflexos:v2.13.0
quay.io/dell/container-storage-module/csm-authorization-sidecar:v1.12.0
quay.io/dell/container-storage-module/csm-metrics-powerflex:v1.10.0
quay.io/dell/container-storage-module/csm-metrics-powerscale:v1.7.0
quay.io/dell/container-storage-module/csm-topology:v1.10.0
quay.io/dell/container-storage-module/dell-csi-replicator:v1.10.0
quay.io/dell/container-storage-module/dell-replication-controller:v1.10.0
quay.io/dell/container-storage-modules/sdc:4.5
quay.io/dell/container-storage-modules/dell-csm-operator:v1.7.0
gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0
nginxinc/nginx-unprivileged:1.20
otel/opentelemetry-collector:0.42.0
registry.k8s.io/sig-storage/csi-attacher:v4.3.0
registry.k8s.io/sig-storage/csi-external-health-monitor-controller:v0.13.0
registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.12.0
registry.k8s.io/sig-storage/csi-provisioner:v5.1.0
registry.k8s.io/sig-storage/csi-resizer:v1.12.0
registry.k8s.io/sig-storage/csi-snapshotter:v8.1.0
*
* Copying necessary files
/root/csm-operator/deploy
/root/csm-operator/operatorconfig
/root/csm-operator/samples
/root/csm-operator/scripts
/root/csm-operator/README.md
/root/csm-operator/LICENSE
*
* Compressing release
dell-csm-operator-bundle/
dell-csm-operator-bundle/deploy/
dell-csm-operator-bundle/deploy/operator.yaml
dell-csm-operator-bundle/deploy/crds/
dell-csm-operator-bundle/deploy/crds/storage.dell.com_containerstoragemodules.yaml
dell-csm-operator-bundle/deploy/olm/
dell-csm-operator-bundle/deploy/olm/operator_community.yaml
...
...
dell-csm-operator-bundle/README.md
dell-csm-operator-bundle/LICENSE
*
* Complete
Offline bundle file is: /root/csm-operator/dell-csm-operator-bundle.tar.gz
This needs to be performed on a linux system with access to an image registry that will host container images. If the registry requires login
, that should be done before proceeding.
To prepare for driver or Operator installation, the following steps need to be performed:
- Copy the offline bundle file to a system with access to an image registry available to your Kubernetes/OpenShift cluster
- Expand the bundle file by running
tar xvfz <filename>
- Run the
csm-offline-bundle.sh
script and supply the-p
option as well as the path to the internal registry with the-r
option
The script will then perform the following steps:
- Load the required container images into the local system
- Tag the images according to the user supplied registry information
- Push the newly tagged images to the registry
- Modify the Helm charts or Operator configuration to refer to the newly tagged/pushed images
An example of preparing the bundle for installation:
[user@anothersystem /tmp]# tar xvfz dell-csm-operator-bundle.tar.gz
dell-csm-operator-bundle/
dell-csm-operator-bundle/deploy/
dell-csm-operator-bundle/deploy/operator.yaml
dell-csm-operator-bundle/deploy/crds/
dell-csm-operator-bundle/deploy/crds/storage.dell.com_containerstoragemodules.yaml
dell-csm-operator-bundle/deploy/olm/
dell-csm-operator-bundle/deploy/olm/operator_community.yaml
...
...
dell-csm-operator-bundle/README.md
dell-csm-operator-bundle/LICENSE
[user@anothersystem /tmp]# cd dell-csm-operator-bundle
[user@anothersystem /tmp/dell-csm-operator-bundle]# bash scripts/csm-offline-bundle.sh -p -r localregistry:5000/dell-csm-operator/
Preparing a offline bundle for installation
*
* Loading docker images
Loaded image: quay.io/dell/container-storage-modules/csi-powerstore:v2.12.0
Loaded image: quay.io/dell/container-storage-modules/csi-isilon:v2.12.0
...
...
Loaded image: registry.k8s.io/sig-storage/csi-resizer:v1.12.0
Loaded image: registry.k8s.io/sig-storage/csi-snapshotter:v8.1.0
*
* Tagging and pushing images
quay.io/dell/container-storage-modules/csi-isilon:v2.12.0 -> localregistry:5000/dell-csm-operator/csi-isilon:v2.12.0
quay.io/dell/container-storage-modules/csi-metadata-retriever:v1.9.0 -> localregistry:5000/dell-csm-operator/csi-metadata-retriever:v1.9.0
...
...
registry.k8s.io/sig-storage/csi-resizer:v1.12.0 -> localregistry:5000/dell-csm-operator/csi-resizer:v1.12.0
registry.k8s.io/sig-storage/csi-snapshotter:v8.1.0 -> localregistry:5000/dell-csm-operator/csi-snapshotter:v8.1.0
*
* Preparing files within /root/dell-csm-operator-bundle
changing: quay.io/dell/container-storage-modules/csi-isilon:v2.12.0 -> localregistry:5000/dell-csm-operator/csi-isilon:v2.12.0
changing: quay.io/dell/container-storage-modules/csi-metadata-retriever:v1.9.0 -> localregistry:5000/dell-csm-operator/csi-metadata-retriever:v1.9.0
...
...
changing: registry.k8s.io/sig-storage/csi-resizer:v1.12.0 -> localregistry:5000/dell-csm-operator/csi-resizer:v1.12.0
changing: registry.k8s.io/sig-storage/csi-snapshotter:v8.1.0 -> localregistry:5000/dell-csm-operator/csi-snapshotter:v8.1.0
*
* Complete
Now that the required images have been made available and the Helm Charts/Operator configuration updated, installation can proceed by following the instructions that are documented within the driver or Operator repo.