Skip to main content
Private Preview

This feature is in private preview and is not publicly available.

Configuration Reference

Overview

This section provides comprehensive configuration options for the SPIRL Reflector component.

Agent Endpoint Configuration Inheritance

The SPIRL Reflector automatically copies certain configuration settings from the agent.endpoint section when deploying. Specifically, the following settings are inherited:

  • endpoint/endpoints: The TD server endpoint(s) to connect to
  • supplementalRootsPEM: Additional PEM encoded root CA to trust when connecting to a TD server
  • connectionMaxAge: Maximum age for gRPC connections to the trust domain server
  • useGRPCFastRedial: Whether to use fast redial for gRPC connections

Additionally, the Reflector copies configuration from agent.auth and uses the same authentication method as the agent when connecting to the TD server.

These settings are used by the Reflector when initializing its trust domain server client. The values are copied from the agent configuration to ensure consistent connection behavior between the agent and reflector components.

Complete Configuration Schema

reflector:
# Basic component enablement
enabled: true

# Deployment configuration
deployment:
# Number of replicas to deploy
replicaCount: 2
# Environment variables to set
env: []
# Resource limits and requests
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi
# Pod disruption budget configuration
# Note: Only one of minAvailable or maxUnavailable can be specified
podDisruptionBudget:
enabled: false # Enable pod disruption budget
minAvailable: 1 # Minimum number of available pods during disruption
# maxUnavailable: 1 # Maximum number of unavailable pods during disruption

# Service configuration
service:
type: ClusterIP
port: 9190 # Agent communication port
annotations: {}

# Any additional labels to be applied to the Reflector component
additionalLabels: {}

# Environment variables to set
env: []

# Sensitive stored state encryption key configuration using cloud configuration
# options. These are used to indicate how the Reflector should encrypt the local
# encryption key that is used for encrypting sensitive stored data. The cloud
# provider configurations are mutually exclusive; only one can be set for a
# deployment. If none are set then a cluster local key encryption key will be
# generated and stored in a Kubernetes secret

# AWS specific configuration
aws:
# If set, this KMS key is used for encrypting sensitive stored state. If neither
# this nor azure key vault config is set then a cluster local key will be
# generated and used.
kmsKeyARN: ""
# Configures explicit endpoints to use to connect to AWS services if they are
# different than the standard endpoints.
endpoints:
kms: ""

# Azure specific configuration
azure:
# Azure Key Vault specific configuration
keyVault:
# If url and keyName are set this key will be used for encrypting sensitive
# stored state. If neither this nor aws config are set then a cluster local
# key will be generated and used.
url: ""
keyName: ""
# Optional key version of the above key. If not set the most recent version
# will be used.
keyVersion: ""

# Google Cloud specific configuration
#
# If all elements of "gcp" is set this key will be used for encrypting sensitive
# stored state.
gcp:
# The project ID to use for the GCP client.
projectID: ""
# The location to use for the GCP client.
location: ""
# KMS specific configuration
kms:
# The key ring containing the key to use for encrypting sensitive stored state.
keyRing: ""
# The key to use for encrypting sensitive stored state.
keyName: ""

# Telemetry configuration
# NOTE: This telemetry configuration applies to both the Reflector and the Agent
telemetry:
# Whether to enable telemetry
enabled: false
# Metrics collectors configuration
collectors:
# gRPC metrics collector configuration
grpc:
# Whether to emit latency metrics. Time histogram metrics for gRPC servers and clients will be emitted if true.
# Since it is bad practice to have metrics of high cardinality the latency monitoring metrics are disabled by default.
# https://prometheus.io/docs/practices/instrumentation/#do-not-overuse-labels
emmitLatencyMetrics: false
metricsAPI:
port: 9090

Configuration Sections

Basic Settings

ParameterDescriptionDefaultRequired
enabledEnable SPIRL Reflector deploymentfalseYes
service.typeKubernetes service typeClusterIPNo
service.portPort for agent communication9190No
service.annotationsAdditional service annotations{}No
additionalLabelsAdditional labels for the Reflector component{}No

Deployment Configuration

ParameterDescriptionDefaultRequired
deployment.replicaCountNumber of reflector replicas to deploy2No
deployment.envEnvironment variables to set for the deployment[]No
deployment.resources.limits.cpuCPU limit for reflector pods500mNo
deployment.resources.limits.memoryMemory limit for reflector pods512MiNo
deployment.resources.requests.cpuCPU request for reflector pods100mNo
deployment.resources.requests.memoryMemory request for reflector pods128MiNo
deployment.podDisruptionBudget.enabledEnable pod disruption budgetfalseNo
deployment.podDisruptionBudget.minAvailableMinimum number of available pods during disruption1No*
deployment.podDisruptionBudget.maxUnavailableMaximum number of unavailable pods during disruption1No*

*Only one of minAvailable or maxUnavailable can be specified for podDisruptionBudget

Cloud Provider Configuration

AWS Configuration

ParameterDescriptionDefaultRequired
aws.kmsKeyARNKMS key ARN for encrypting sensitive state. Required if AWS configuration is used.""No*
aws.endpoints.kmsCustom KMS endpoint. Optional when using AWS configuration.""No

*Required if AWS configuration is used

Azure Configuration

ParameterDescriptionDefaultRequired
azure.keyVault.urlAzure Key Vault URL. Required if Azure configuration is used.""No*
azure.keyVault.keyNameKey name in Azure Key Vault. Required if Azure configuration is used.""No*
azure.keyVault.keyVersionKey version in Azure Key Vault. Optional when using Azure configuration.""No

*Required if Azure configuration is used

Google Cloud Configuration

ParameterDescriptionDefaultRequired
gcp.projectIDGCP project ID. Required if GCP configuration is used.""No*
gcp.locationGCP location. Required if GCP configuration is used.""No*
gcp.kms.keyRingKMS key ring name. Required if GCP configuration is used.""No*
gcp.kms.keyNameKMS key name. Required if GCP configuration is used.""No*

*Required if GCP configuration is used

Note: Only one cloud provider configuration (AWS, Azure, or GCP) can be used at a time. If none are configured, the key encryption key will be stored in a Kubernetes secret.

Telemetry Configuration

ParameterDescriptionDefaultRequired
telemetry.enabledEnable telemetryfalseNo
telemetry.collectors.grpc.emmitLatencyMetricsEnable gRPC latency metricsfalseNo
telemetry.metricsAPI.portPort for metrics endpoint9090No