Troubleshooting Helm Command Issues | MuleSoft Documentation
# Troubleshooting Helm Command Issues
Troubleshoot errors returned by a `helm` command for Kubernetes and OpenShift clusters:
  * Upgrade Failed: Execution Error
  * Kubernetes Cluster Unreachable
  * Upgrade Failed: Timed Out
  * Failed to Install CRD


## Upgrade Failed: Execution Error
If the `registration.yaml` file is invalid when you pass it to the Helm command during deployment of Flex Gateway, the following error results:
```
Error: UPGRADE FAILED: execution error at (flex-gateway/templates/deployment.yaml:4:10):
registerSecretName, registration.content or registration.secretName is required!
```

When this error occurs, make sure that the `registration.yaml` file is not empty. If the file is empty, reregister your gateway with a new, unique name to generate a new `registration.yaml` and rerun the procedures that follow the registration step. See Register Flex Gateway for an example of the registration command.
## Upgrade Failed: Timed Out
Some issues can cause the Helm upgrade command to hang for up to 5 minutes (due to the `--wait` flag in the command) before producing the following timeout error:
```
Error: UPGRADE FAILED: timed out waiting for the condition
```

This error typically means that your cluster configuration is incorrect or that your cluster configuration tool does not support this process. One potential cause is the failure to generate a `Service` resource of the `LoadBalancer` type. You can troubleshoot further by running the following commands:
  * ```
kubectl -n gateway describe deployment
```

  * ```
kubectl -n gateway describe service
```



## Kubernetes Cluster Unreachable
If your Kubernetes cluster is not running when you attempt to deploy Flex Gateway using `helm`, the following error might occur:
```
Error: Kubernetes cluster unreachable:
the server could not find the requested resource
```

Start the service that runs your cluster.
Check that your Kubernetes cluster host is running your cluster, for example:
```
kubectl cluster-info
```

  * If the cluster is running, the command returns a result similar to this one:
```
Kubernetes control plane is running at https://34.30.50.119
GLBCDefaultBackend is running at https://34.30.50.119/api/v1/namespaces/kube-system/services/default-http-backend:http/proxy
KubeDNS is running at https://34.30.50.119/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://34.30.50.119/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
```

  * If the cluster is not up, the command can return a result similar to this one:
```
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
error: the server doesn't have a resource type "services"
```



## Failed to Install CRD
When deploying Flex Gateway to a Kubernetes cluster that enables role-based access control (RBAC), you must have cluster-level permissions to permit installation of custom resource definitions (CRDs) used by Flex Gateway. In OpenShift, the `cluster-admin` role provides this level of access.
Without the required access, you receive an error similar to the following one:
```
Error: failed to install CRD crds/apiinstance.yaml:
customresourcedefinitions.apiextensions.k8s.io is forbidden:
User "user1" cannot create resource "customresourcedefinitions"
in API group "apiextensions.k8s.io" at the cluster scope
```

## See Also
  * Getting Started with Self-Managed Flex Gateway in a Kubernetes Cluster
  * Setting Up Self-Managed Flex Gateway