Why does installing the IBM Cloud Object Storage plug-in fail?
Virtual Private Cloud Classic infrastructure
Installing the IBM Cloud Object Storage plug-in fails due to conflicting resources from previous installations.
When you install the ibm-object-storage-plugin, the installation fails.
You see an error message similar to the following example:
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, the IBM Cloud Object Storage plug-in executes many different tasks, 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.
Resolving the issue
Delete the resource that is displayed 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, identify and remove all conflicting resources from previous installations.
-
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 that were identified in the previous steps.
oc delete <resource_kind> <resource_name> -
After you delete the conflicting resources, retry the installation.
-
Verify the plug-in is installed successfully.
oc get pods -n kube-system | grep object-storage