Skip to main content

Migrating from OPA

Users of OPA with data-heavy use cases may wish to use Styra Load instead of OPA. Load and OPA work in much the same way, making the migration relatively straightforward. However, there are some changes operators need to bear in mind, which are outlined below.

Bundle Format

Load uses a different bundle format based on binary JSON. It is required to use Load formatted bundles in order to achieve the quoted performance gains. When running Load, bundles loaded from the filesystem or over the Bundle Service API should be in the Load format.

Actions:

  • Update the process that builds bundles to use the Load bundle format. This can be done following the guide here.
  • Configure Load instances to use these new bundles rather than the OPA bundles. If these new bundles have the same name, and are available the same URL or filesystem path then no config changes are needed.
  • For those using OPA's Discovery Bundle feature, Discovery Bundles should not be updated to the Load format. Load formatted bundles are not supported for use as Discovery Bundles.

Interface Binding

By default, Load only binds to the loopback interface (localhost:8181). This is different from OPA which binds to all interfaces (:8181). This is a secure default which has been introduced for Load and can help avoid the Load instance being exposed to the pubic internet or other untrusted networks unintentionally.

If you understand the risks and are in an environment where you need to bind to all interfaces, you can do so by starting load with the flag --addr=":8181".

Actions:

  • Determine if you need to bind to all interfaces in your environment and make sure that Load is started with the correct --addr flag if so.

License Requirement

Wherever a Load binary is invoked, a license is required. Please see the documentation page on licensing to see how this is configured.

Actions:

  • Ensure that the license is present in each location where Load is to be run. Remember that this might include CI/CD pipelines which build bundles as well as Load server instances.