IBM Cloud Docs
Why does installing the IBM Cloud Object Storage plug-in fail?

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.

  1. 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>
    
  2. Retry the installation.

  3. 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 StorageClass --all-namespaces \
            -l app=ibmcloud-object-storage-plugin \
            -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    
  4. 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}'
    
  5. 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}'
    
  6. 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}'
    
  7. 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}'
    
  8. 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}'
    
  9. 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}'
    
  10. 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}'
    
  11. 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}'
    
  12. Delete the conflicting resources.

  13. After you delete the conflicting resources, retry the installation.