Customizing OPA Discovery Configuration for a Styra DAS System
Styra DAS uses a System-specific OPA discovery configuration to centrally manage OPAs linked to a System. The discovery configuration can be used to define the behavior of various OPA plugins including decision logs, bundle download, and distributed tracing.
The discovery bundle for a System is made available at the
/v1/systems/:id/discovery
API endpoint.
curl -s -o - -H "Authorization: Bearer ${STYRA_API_TOKEN}" \
"${DAS_URL}/v1/systems/${SYSTEM_ID}/discovery" | tar xz
The retrieved configuration data.json
:
{
"discovery": {
"bundles": {
"systems/SYSTEM_ID": {
"persist": false,
"polling": {
"max_delay_seconds": 15,
"min_delay_seconds": 10
},
"resource": "/bundles/systems/SYSTEM_ID",
"service": "styra"
}
},
"decision_logs": {
"console": false,
"reporting": {
"max_delay_seconds": 15,
"min_delay_seconds": 10
},
"service": "styra"
},
"default_decision": "main/main",
"nd_builtin_cache": true,
"status": {
"console": false,
"service": "styra"
}
}
}
Add or Override a Value in Discovery Configuration
Styra DAS users may choose to add or override the values specified in the
default discovery configuration by using the /v1/systems
UPDATE API to edit the deployment_parameters.discovery
field in a System's
configuration.
As an example, the following API call can be used to override the setting
decision_logs.console
from the above configuration, or to add another
top-level setting, distributed_tracing.type
.
curl -X PUT \
-H "Authorization: Bearer ${STYRA_API_TOKEN}" \
-H "Content-Type: application/json" \
${DAS_URL}/v1/systems/${SYSTEM_ID} \
-d '{"deployment_parameters": {"discovery": {"decision_logs": {"console": true}, "distributed_tracing": {"type": "grpc"}}}}'
The new Discovery configuration can now be verified by retrieving the
/v1/systems/:id/discovery
bundle for the system.
curl -s -o - -H "Authorization: Bearer ${STYRA_API_TOKEN}" \
"${DAS_URL}/v1/systems/${SYSTEM_ID}/discovery" | tar xz
The updated data.json
has decision_logs.console
set to true
and a new
value of grpc
added for distributed_tracing.type
.
{
"discovery": {
"bundles": {
"systems/SYSTEM_ID": {
"persist": false,
"polling": {
"max_delay_seconds": 15,
"min_delay_seconds": 10
},
"resource": "/bundles/systems/SYSTEM_ID",
"service": "styra"
}
},
"decision_logs": {
"console": true,
"reporting": {
"max_delay_seconds": 15,
"min_delay_seconds": 10
},
"service": "styra"
},
"default_decision": "main/main",
"distributed_tracing": {
"type": "grpc"
},
"nd_builtin_cache": true,
"status": {
"console": false,
"service": "styra"
}
}
}
References
See the following resources for additional information: