CSP Health Monitor Configuration
Overview
The CSP Health Monitor detects cloud provider maintenance events and triggers automated node quarantine workflows. This document covers all Helm configuration options.
Module Enable/Disable
Controls whether the csp-health-monitor module is deployed in the cluster.
Cloud Provider Selection
The cspName field determines which cloud provider to monitor. Only one provider can be active at a time.
Global Settings
Settings that apply regardless of cloud provider.
GCP Configuration
Required Fields
GCP Parameters
targetProjectId
GCP project ID where the GKE cluster is running. The monitor queries Cloud Logging in this project.
gcpServiceAccountName
Name of the GCP Service Account (without the @project.iam.gserviceaccount.com suffix). Used to generate the Workload Identity annotation on the Kubernetes ServiceAccount.
apiPollingIntervalSeconds
How frequently the monitor polls the Cloud Logging API for new maintenance events. Lower values provide faster detection but increase API usage.
logFilter
Cloud Logging filter expression to select maintenance events. Common filters:
Complete GCP Example
AWS Configuration
Required Fields
AWS Parameters
accountId
AWS account ID (12-digit number) where the EKS cluster is running. Used to construct the IAM role ARN annotation.
region
AWS region where the EKS cluster is deployed. The monitor queries the AWS Health API in this region.
pollingIntervalSeconds
How frequently the monitor polls the AWS Health API for maintenance events. Lower values provide faster detection but increase API usage.
iamRoleName
Custom IAM role name for IRSA (IAM Roles for Service Accounts). When set, the ServiceAccount annotation uses this role name directly instead of constructing one from clusterName.
If left empty (default), the role name is generated as {CLUSTER_NAME}-nvsentinel-health-monitor-assume-role-policy.
Important (EKS): AWS IAM role names have a maximum of 64 characters. The default suffix
-nvsentinel-health-monitor-assume-role-policyis 45 characters, leaving only 19 characters for the cluster name. If your EKS cluster name exceeds 19 characters, you must setiamRoleNameto a custom value.
Complete AWS Example
AWS Example with Custom IAM Role Name
For clusters with long names (>19 characters), set iamRoleName explicitly:
Lambda Configuration
Polls the Lambda maintenance-events API and raises a health event for each event affecting a node in this cluster. Nodes are matched by the instance UUID in the event’s entity_lrns, so they must carry spec.providerID in the form lambda://<instanceID>.
Static API Key Example
apiEndpoint
Base URL of the Lambda API. Defaults to the production endpoint, so the happy path needs no override.
workspaceId
Optional. Scopes the maintenance-events query to one workspace, in dashed or undashed UUID form. Leave it empty to use the default workspace for the credential.
Set it whenever that default is not the workspace running this cluster. Getting it wrong is quiet: the API answers 200 with an empty list rather than an error, so the monitor looks healthy while never seeing a maintenance event for these nodes. A value that is not a UUID fails at startup rather than returning 400 on every poll.
This matters more with workload identity, where the credential belongs to a service identity whose role is assigned at workspace scope — its default workspace is unlikely to be the cluster’s.
pollingIntervalSeconds
How often the maintenance-events API is polled. Minimum 30.
lambdaApiKeySecret
Secret holding the Lambda API key, injected as LAMBDA_API_KEY. name is required when cspName is lambda, unless lambdaWorkloadIdentity.identityLRN is set; the install fails without one of the two. The same Secret can be shared with the Janitor Provider, which reads the key the same way. The key needs permission to read maintenance events in the target workspace.
lambdaWorkloadIdentity.identityLRN
The service identity to assume, in the form lrn:iam:identity:<id>. Preferred over a static key: no Lambda credential is stored in the cluster, and the token is short-lived and rotated automatically.
Setting it annotates the csp-health-monitor ServiceAccount with lambda.ai/identity-lrn. The pod is then given a short-lived Kubernetes token, which the monitor exchanges for a Lambda API key and refreshes before it expires — so no Lambda credential is stored in the cluster.
When set, lambdaApiKeySecret is not required and no LAMBDA_API_KEY is placed in the pod. If both are configured, workload identity wins and the static key is ignored; the monitor logs which one it selected at startup (authMode).
On the Lambda side, the identity must exist, hold permission to read maintenance events in the workspace named by workspaceId, and trust this cluster’s ServiceAccount.
Setting up the identity
Run once per cluster, with an admin API key. $WS is the workspace the cluster’s instances belong to — the same one you set as workspaceId above.
The printed LRN is what goes in the chart value above.
The role is workspace-scoped, so the identity only sees events for $WS — which is why workspaceId should name that same workspace.
Verifying
The identity is attached when the pod is created, so it only appears on pods created after the annotation lands. Restart the deployment if you added it to a running install.
Expect authMode=workload-identity. If it says api-key, the pod never received an identity — check that the annotation is on the ServiceAccount and that the pod was created after it landed.
Failures in the exchange itself surface on the first poll, not at startup, because the token is minted lazily. When the exchange endpoint rejects the token it returns 401 with no detail by design, so an unauthenticated caller cannot probe for which identities exist; that means a missing trust, a wrong identity LRN and a disabled account all look identical from the client. Check the trust and the identity LRN first.
CSP-Specific IAM Requirements
Each cloud provider handles IAM identity for the CSP Health Monitor differently:
Recommendation for EKS users: If your cluster name is longer than 19 characters, always set
aws.iamRoleNameexplicitly and create the corresponding IAM role with that name. See IAM Setup for detailed instructions.
Advanced Configuration
Out-of-Cluster Monitoring
For monitoring a tenant cluster from a separate management cluster:
When kubeconfigPath is set, the monitor uses the specified kubeconfig to connect to the tenant cluster’s Kubernetes API for node mapping. If empty, uses in-cluster config.
Resources
Configure resource requests and limits for the main container and sidecar.
Scheduling
Configure pod placement using node selectors, tolerations, and affinity rules.