// Module included in the following assemblies:
//
// * backup_and_restore/application_backup_and_restore/installing/installing-oadp-aws.adoc
// * backup_and_restore/application_backup_and_restore/installing/installing-oadp-azure.adoc
// * backup_and_restore/application_backup_and_restore/installing/installing-oadp-gcp.adoc
// * backup_and_restore/application_backup_and_restore/installing/installing-oadp-mcg.adoc
// * backup_and_restore/application_backup_and_restore/installing/installing-oadp-ocs.adoc
// * backup_and_restore/application_backup_and_restore/installing/installing-oadp-kubevirt.adoc
// * backup_and_restore/application_backup_and_restore/oadp-api.adoc
// * virt/backup_restore/virt-backup-restore-overview.adoc

:_mod-docs-content-type: PROCEDURE
[id="oadp-configuring-node-agents_{context}"]
= Configuring node agents and node labels

[role="_abstract"]
The Data Protection Application (DPA) uses the `nodeSelector` field to select which nodes can run the node agent. The `nodeSelector` field is the recommended form of node selection constraint.

.Procedure

. Run the node agent on any node that you choose by adding a custom label:
+
[source,terminal]
----
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
----
+
[NOTE]
====
Any label specified must match the labels on each node.
====

. Use the same custom label in the `DPA.spec.configuration.nodeAgent.podConfig.nodeSelector` field, which you used for labeling nodes:
+
[source,terminal]
----
configuration:
  nodeAgent:
    enable: true
    podConfig:
      nodeSelector:
        node-role.kubernetes.io/nodeAgent: ""
----
+
The following example is an anti-pattern of `nodeSelector` and does not work unless both labels, `node-role.kubernetes.io/infra: ""` and `node-role.kubernetes.io/worker: ""`, are on the node:
+
[source,terminal]
----
    configuration:
      nodeAgent:
        enable: true
        podConfig:
          nodeSelector:
            node-role.kubernetes.io/infra: ""
            node-role.kubernetes.io/worker: ""
----