Why does installing the IBM Cloud Object Storage plug-in fail?
Virtual Private Cloud Classic infrastructure
When you install the ibm-object-storage-plugin
, the installation fails with an error similar to the following:
Error: rendered manifest contains a resource that already exists. Unable to continue with install. Existing resource conflict: namespace: , name: ibmc-s3fs-smart-cross-region, existing_kind: storageClass, new_kind: storage.k8s.io/v1, Kind=StorageClass
Error: plugin "ibmc" exited with error
During the installation, many different tasks are executed by the IBM Cloud Object Storage plug-in such as creating storage classes and cluster role bindings.
Some resources might already exist in your cluster from previous IBM Cloud Object Storage plug-in installations and were not properly removed when you removed or upgraded the plug-in.
Delete the resource that is display in the error message and retry the installation.
-
Delete the resource that is displayed in the error message.
oc delete <resource_kind> <resource_name>
Example for deleting a storage class resource:
oc delete storageclass <storage_class_name>
-
If you continue to see the same error, get a list of the resources that are installed when the plug-in is installed. Get a list of storage classes that are created by the
ibmcloud-object-storage-plugin
.oc get sc --all-namespaces \ -l app=ibmcloud-object-storage-plugin \ -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
-
Get a list of cluster role bindings that are created by the
ibmcloud-object-storage-plugin
.oc get ClusterRoleBinding --all-namespaces \ -l app=ibmcloud-object-storage-plugin \ -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
-
Get a list of role bindings that are created by the
ibmcloud-object-storage-driver
.oc get RoleBinding --all-namespaces \ -l app=ibmcloud-object-storage-driver \ -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
-
Get a list of role bindings that are created by the
ibmcloud-object-storage-plugin
.oc get RoleBinding --all-namespaces \ -l app=ibmcloud-object-storage-plugin \ -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
-
Get a list of cluster roles that are created by the
ibmcloud-object-storage-plugin
.oc get ClusterRole --all-namespaces \ -l app=ibmcloud-object-storage-plugin \ -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
-
Get a list of deployments that are created by the
ibmcloud-object-storage-plugin
.oc get deployments --all-namespaces \ -l app=ibmcloud-object-storage-plugin \ -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
-
Get a list of the daemon sets that are created by the
ibmcloud-object-storage-driver
.oc get DaemonSets --all-namespaces \ -l app=ibmcloud-object-storage-driver \ -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
-
Get a list of the service accounts that are created by the
ibmcloud-object-storage-driver
.oc get ServiceAccount --all-namespaces \ -l app=ibmcloud-object-storage-driver \ -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
-
Get a list of the service accounts that are created by the
ibmcloud-object-storage-plugin
.oc get ServiceAccount --all-namespaces \ -l app=ibmcloud-object-storage-plugin \ -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
-
Delete the conflicting resources.
-
After you delete the conflicting resources, retry the installation.