1. Core Capabilities
Understanding Your Infrastructure
The Satellite continuously monitors your Kubernetes cluster through the API server, building a comprehensive model of your infrastructure. It tracks pods, services, deployments, jobs, and more across your configured namespaces. The Satellite operates in a truly read-only mode with zero impact on your API servers.Discovering Service Dependencies in Real Time
Traditional service dependency mapping requires instrumentation, APM agents, or manual configuration. The Resolve Satellite takes a different approach with visibility into how your services interact, enabling ResolveAI to understand dependencies without requiring changes to your application code.Connecting On-Premises Observability Tools
The Resolve Satellite acts as a secure local proxy that enables ResolveAI to query your local observability systems and stream results back through encrypted channels. Your credentials remain entirely within your infrastructure, and sensitive data can be redacted before transmission. The Satellite supports a comprehensive range of integration types.Scaling to Meet Your Needs
The Satellite’s architecture supports both vertical and horizontal scaling to handle environments of any size. For most deployments, a single Satellite is sufficient. Replicas don’t need to coordinate, and when you need additional capacity for very large clusters or high integration query volumes, scaling horizontally is straightforward. Load balancing across replicas is managed automatically by Resolve’s backend. Multiple replicas also provide high availability, allowing you to perform rolling upgrades without disrupting Resolve’s ability to investigate incidents.2. Deployment & Upgrades
Getting the Resolve Satellite running in your environment takes just a few steps. You’ll generate an ingest token, configure your values file, install the Helm chart, and verify connectivity.Prerequisites
Before installing the Satellite, ensure you have Kubernetes cluster access withkubectl, Helm 3.x installed, and admin access to ResolveAI to generate ingest tokens.
Install the Resolve Satellite
The installation process configures the Satellite to connect securely to Resolve’s backend and begin a connection from your Kubernetes cluster.1. Create Ingest Token
The Satellite communicates with the Resolve backend over an authenticated, encrypted channel. Authentication is handled via an ingest token you generate in the Resolve UI. As an admin in ResolveAI, open the Ingest Tokens page. Click Create Ingest Token, name it descriptively (e.g., “production-main-cluster”), click Create ingest token, and copy the token immediately. You will need it in the next step.2. Configure Your Ingest Token
You’ll need to create aresolve-values.yaml file with your configuration. Before proceeding, choose how you want to handle the ingest token based on your environment.
Production/Secure Setup (Recommended)
For production environments, configure secure token storage using Kubernetes secrets or external secrets managers. Continue to Secret Management to set up secure token storage, then return here for Step 3.
The Secret Management guide will walk you through storing tokens in Kubernetes secrets with an encrypted etcd and integrating with external secrets managers like AWS Secrets Manager, Azure Key Vault, and HashiCorp Vault.
Quick Test Setup (Development Only)
For quick local testing, you can store the token directly in your values file. This method provides no additional security and should only be used temporarily.
Required Values:
- ingest.token: The token created in Step 1
- clusterName: Global identifier for the satellite (e.g.,
prod-main) - environment: e.g.,
production,staging,qa. Match this environment name exactly with each integration you set up (e.g., Datadog).
3. Install Helm Chart
Use this command to install the Helm Chart from Docker Hub:resolve-values.yaml:Alternative: Install via CDK8s
Alternative: Install via CDK8s
4. Check Permissions
The Resolve Satellite reads from the Kubernetes API with aClusterRole. Verify the permissions granted:
- Core Resources: ConfigMaps, Events, Namespaces, Nodes, Pods, Services
- Workload Controllers: DaemonSets, Deployments, ReplicaSets, StatefulSets
- CRDs: ArgoRollout, istioVirtualService, istioGateway
5. Verify Connection
In the Resolve UI, check Kubernetes Integrations to verify that the satellite is connected.Next: Enable DNS Tap
Now that the Resolve Satellite is installed, enable cross-application investigations with Resolve using DNS Tap.Upgrading the Satellite
The Satellite supports rolling upgrades with zero downtime. When new versions are released, you can upgrade your deployment using Helm while maintaining connectivity to Resolve’s backend.Upgrade to Latest Version
To upgrade your Satellite to the latest version, use the Helm upgrade command. This pulls the latest Satellite image and applies any configuration changes from your values file.Upgrade to Specific Version
To upgrade to a specific version, specify the chart version in your command. View available versions at Docker Hub Helm Chart Tags.Verify Upgrade
After upgrading, verify the Satellite is running the new version. Check the pod status and image version:Rollback if Needed
If you encounter issues after upgrading, rollback to the previous version:3. Integrations
The Resolve Satellite connects ResolveAI to your on-premises observability stack. Each integration is configured in yourresolve-values.yaml file with credentials stored in Kubernetes secrets. The Satellite automatically detects configuration changes through a built-in file watcher—no manual restarts required.
Configuration Approach
All integrations follow a consistent pattern:- Create a Kubernetes secret containing credentials (API tokens, passwords)
- Reference the secret in your
resolve-values.yamlfile - Specify connection parameters (URLs, filters, options)
- Deploy or upgrade your Satellite with the new configuration
Secret Management
For production environments, we strongly recommend using secure secret storage through Kubernetes Secrets with etcd encryption at rest or external secret managers like AWS Secrets Manager, Azure Key Vault, HashiCorp Vault, and Google Secret Manager. For a complete guide on configuring secrets, see Secret Management.Integration Scoping by Team
You can manage per-team enablement for Satellite-managed integrations from your Satellite Helm values file by adding anintegrationScopes block to an integration. Use this when integration access should be controlled through Helm instead of the Resolve UI.
Add integrationScopes as a sibling of connection, not inside it. Each key must be a Resolve team ID, visible in the team URL as /teams/<teamId>. Each entry currently supports enabled: true or enabled: false.
integrationScopes is configured for an integration:
- Helm manages that integration’s per-team enable/disable state.
- Teams set to
enabled: falsecannot use the integration. - Teams set to
enabled: true, and teams not listed, are enabled by default. - The Resolve UI locks the per-team enable/disable controls for that integration.
- Team-specific connection overrides remain editable in the UI and are preserved across Satellite re-registration.
integrationScopes block from the integration and run helm upgrade; the UI will become editable again using the last stored scoped settings as its starting point.
Integration Examples
The Kubernetes integration is included by default. To customize namespace filtering, specify which namespaces to include in your connection configuration. For example, to limit scraping to production, staging, and monitoring namespaces, setnamespaceIncludeList to a comma-separated string of namespace names.
On-Premises Observability Tools
Example configurations for common tools demonstrate the standard integration pattern. For Prometheus, enable service map construction from traces if desired:Git Integration
The Git integration enables ResolveAI to access repositories for investigations. For a complete setup guide, see Git Integration.4. Security Controls
The Resolve Satellite is designed with security as a foundational principle. This section covers the security features and controls available for hardening your deployment.Encrypted Communication
All communication between the Satellite and Resolve’s backend is over HTTP/2.0 with encryption. These long-lived connections span 30+ minutes and use token authentication to verify every request.Secret Storage & Management
All integration credentials (API tokens, passwords) are stored in Kubernetes secrets or within your secrets manager within your cluster. The Satellite mounts these secrets as files at/etc/secrets/<secret-name>/. Raw secret values never leave your infrastructure or transit to Resolve’s cloud.
For production deployments, we recommend using Kubernetes secrets with etcd encryption at rest or integrating external secret managers like AWS Secrets Manager, HashiCorp Vault, and Azure Key Vault. Rotate credentials regularly using secret updates without Satellite downtime.
For a complete guide, see Secret Management.
Configuration Immutability (Config Override)
TheconfigOverride setting (default: false) controls whether Resolve’s SaaS platform can remotely modify integration configurations through the UI.
When disabled (default), all configuration changes require Helm chart updates. This enforces GitOps workflows and change approval processes, ensuring configuration remains immutable and auditable. No remote configuration tampering is possible.
When enabled, administrators can edit integration settings from the Resolve web interface. This is useful for rapid testing and development environments but not recommended for production.
By defaulting to false, the Satellite enforces the principle of least privilege and configuration-as-code practices.

Domain Allowlist
ThedomainAllowList setting restricts outbound API requests from the Satellite to specific integration domains. This prevents data exfiltration and unauthorized external API calls.
The allowlist accepts an array of domain strings and supports wildcard patterns (e.g., *.example.com for subdomains). The Satellite validates all HTTP requests before execution and throws an error if the target domain is not allowed. An empty list permits all domains (default).
Example for Grafana:
Audit Logging
Audit logging captures detailed information about every HTTP request made to external integrations for security, compliance, and debugging purposes. When enabled, audit logging records the request method, URL, request body, response status code, integration key, and success/failure status. All audit logs are tagged with"audit": true for filtering.
Enable audit logging in your integration configuration:
kubectl logs resolve-satellite-1, etc.
Audit logging provides a comprehensive audit trail for security investigations and compliance audits.
Sensitive Data Redaction
The Satellite supports configurable PII redaction for integrations that collect or process sensitive data. Specify JSON paths to redact in the integration configuration. The Satellite will mask values at those paths before transmitting data. Example for Datadog:HTTPS Certificate Configuration
For integrations behind custom certificate authorities or requiring mutual TLS, configure certificates in your integration settings. Certificate options includehttpAgentCertificate (CA certificate for verifying the server), httpAgentClientCert (client certificate for mutual TLS), and httpAgentClientKey (client private key for mutual TLS). Certificates can be specified as raw content or file paths.
Example for Splunk with mutual TLS:
Running as Non-Root User
For enhanced security, configure the satellite to run as a non-root user. Add thepodSecurityContext and securityContext settings to your resolve-values.yaml file.
podSecurityContext and securityContext are top-level keys in your values file - they go at the same level as ingest, clusterName, and integrations, not nested inside any other key.podSecurityContext(Pod level): Applies to all containers in the pod. SetsrunAsNonRoot,runAsUser,runAsGroup, andfsGroup.securityContext(Container level): Applies to the satellite container. ControlsallowPrivilegeEscalationandcapabilities.
fsGroup setting ensures mounted volumes (including the Git integration data volume) are accessible to the non-root user.Resolve Satellite Security Features
Config Override
The configOverride setting in the satellite resolve-values.yaml file (default: false) controls whether the Resolve SaaS platform can remotely modify the Satellite’s integration configurations through the UI. When enabled (set to true), administrators can edit integration settings from the Resolve web interface; when disabled, the edit config is not shown in the UI, ensuring that only the local Helm values file controls the satellite’s configuration. This is beneficial for security because it enforces the principle of least privilege and configuration-as-code practices - organizations can prevent unauthorized or accidental changes to critical infrastructure integrations by requiring all configuration changes to go through their standard GitOps workflows and approval processes rather than allowing real-time UI modifications. By defaulting tofalse in production deployments, the Satellite ensures that configuration remains immutable and auditable, with changes only possible through version-controlled Helm chart updates that can be reviewed, tested, and rolled back if needed.

Domain Allowlist
domainAllowList is a security configuration for HTTP-based integrations running on the Satellite that restricts outbound API requests to specific domains. It accepts an array of domain strings with support for wildcard patterns (e.g., *.example.com for subdomains). When configured, the Satellite validates all HTTP request URLs against the list before execution, throwing an error if the target domain is not allowed. If the list is empty or undefined, all domains are permitted by default. Here is an example for Grafana:Frequently Asked Questions
What are the resource requirements?
What are the resource requirements?
- CPU: 1 Core
- Memory: 8 GB
- Storage: 1 GB (base) + additional for the Git integration (see storage configuration)
Where can I find the Satellite Helm chart and image?
Where can I find the Satellite Helm chart and image?
What data sources does the Resolve Satellite use?
What data sources does the Resolve Satellite use?
- Collects from: Pods, Services, Deployments, Jobs, ConfigMaps, Events, Nodes, PVCs, CRDs
- Uses Watch API with caching and concurrency
- Default interval: every 10 minutes (configurable)
- Namespace concurrency: 10 threads (contact us to configure)
- Scrapes customResourceDefinitions from Kubernetes:
- Ingest popular CRDs like ArgoRollout, IstioVirtualService, IstioGateway
- Ingest custom CRDs (contact us to configure)
- Open source DNS log monitoring
- Captures service-to-service DNS traffic (e.g., from CoreDNS)
- Enables automatic runtime dependency discovery
- Non-intrusive push model (no polling)
Does the Satellite write to the Kubernetes API server?
Does the Satellite write to the Kubernetes API server?
How often does the Satellite collect data?
How often does the Satellite collect data?
- Kubernetes API reads occur every 5 minutes by default.
- This interval is configurable (e.g., every 10 or 15 minutes depending on your needs).
- Note: you will need to get in touch with your ResolveAI contact to make this configuration change.
- Namespace-level concurrency is also tunable (default: 10 concurrent read threads).
Does it work with our internal proxy?
Does it work with our internal proxy?
What IP addresses should I allowlist?
What IP addresses should I allowlist?
18.97.138.16/29.How does the satellite communicate with the Resolve server?
How does the satellite communicate with the Resolve server?
What is the performance impact?
What is the performance impact?
- Namespaces: ~1000
- Nodes: 400
- Pods: 10,000
- Polling interval is 10 minutes (configurable)
- Each poll is sharded and fetches about 1-2MiB of data.
- We further limit the concurrency of these shards to 10 (configurable) and it roughly approximates to ~25 requests per second.
How do I handle PII data?
How do I handle PII data?
What are the scaling and performance limits for an individual satellite, and when should we scale it up or out?
What are the scaling and performance limits for an individual satellite, and when should we scale it up or out?
Can I configure the satellite to support integrating to multiple Kubernetes clusters?
Can I configure the satellite to support integrating to multiple Kubernetes clusters?
stringData field in a Kubernetes Secret enables you to provide secret values as plain text strings, which are then automatically base64-encoded and stored in the data field.Secret Definition Example:resolve-values.yaml file:How do I configure HTTPS certificates for an integration behind a satellite?
How do I configure HTTPS certificates for an integration behind a satellite?
httpAgentCertificate for authentication, along with the httpAgentClientCert and httpAgentClientKey if the endpoint requires mutual TLS. Each can be specified either as a raw certificate or as a file path.Example using file paths (Splunk):
