The Harness Delegate is a service you run in your local network or VPC to connect your artifacts, infrastructure, collaboration, verification, and other providers with the Harness Manager.
When the Harness manager needs to run a task, it connects to a remote resource in most cases via a delegate(sometimes referred to as an agent outside the Harness world). Delegate assignment is determined by a wide array of possible things, and you can read more about how this is determined by checking out the documentation here: Delegate overview - Harness.io Docs
Delegates Not Available is a common error that customers run into quite often due to some scoping issue. Below are some of the troubleshooting steps(not limited to) if the error is encountered,
-
Delegate logs would be the perfect place to start troubleshooting that will further point out the issue.
-
Ensure the selected delegate is up and running to perform the task.
-
When you add a Delegate Selector to an Infrastructure Definition’s Cloud Provider, then the workflow uses the selected delegate for all of its steps. Therefore, in these cases, you should not add a Delegate Selector to any step in the Workflow. The Workflow already uses a Selector via its Infrastructure Definition’s Cloud Provider.
-
Workflow types with Pre-deployment Steps do not use the Infrastructure Definition, and so they do not use the Infrastructure Definition’s Cloud Provider and any related Delegate Selectors.
-
If you have a delegate selected in Task Category Map, ensure that the delegate is scoped accordingly to perform the task.
-
In cases where an Infra-based Delegate is being used, you can still encounter the issue, and the reason for this is that if the customer is using a Secret Manager apart from the default, then a delegate selector is required to fetch the secrets. If the Selector on the Connector and the Secret Manager do not match, this conflict could result in an error showing up.
-
When performing Helm Chart-based Deployments, there are cases where the error might be seen during the Rendering of the Chart after the Chart has been fetched. This happens because the Fetch Files Task might run on Delegate A based on the Git connector Delegate Selector, and the Render might happen on Delegate B, which did not pull the files due to this failure can take place