Skip to content

bhoriuchi/opa-plugin-subscribe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

opa-plugin-subscribe

Trigger plugins on events. This plugin allows OPA to subscribe to topics and trigger plugin updates when messages are received. This may be useful for subscribing to bundle updates and pulling them in real-time as they are updated.

The plugin provides an entry point and plugable subscriber providers. This allows the developer to only include the providers needed and keep the compiled OPA CLI lean.

Installation

$ go get -u github.com/bhoriuchi/opa-plugin-subscribe

Basic Usage

package main

import (
	"fmt"
	"os"

	"github.com/bhoriuchi/opa-plugin-subscribe/subscribe"
	"github.com/open-policy-agent/opa/cmd"
	"github.com/open-policy-agent/opa/runtime"

	// import subscriber providers to make them available
	// this limits code dependencies to only the subscribers you need
  _ "github.com/bhoriuchi/opa-plugin-subscribe/subscribe/consul"
	_ "github.com/bhoriuchi/opa-plugin-subscribe/subscribe/kafka"
	_ "github.com/bhoriuchi/opa-plugin-subscribe/subscribe/nats"
)

func main() {
	runtime.RegisterPlugin(subscribe.PluginName, subscribe.Factory{})

	if err := cmd.RootCommand.Execute(); err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
}

Build

$ go build -o opa

Providers

Kafka

Kafka Config Example

plugins:
  subscribe:
      kafka_bundle:
        provider: kafka
        topic: bundle-update
        plugin: bundle
        config:
          group_id: opa-{{uuid}}
          cleanup_group: true
          version: "2.7.0"
          brokers:
            - kafka:19092

Publishing Kafka Events

Using the kaf CLI

$ echo test | kaf produce bundle-update

NATS

NATS Config Example

plugins:
  subscribe:
    subscribers:
      nats_bundle:
        provider: nats
        topic: bundle-update
        plugin: bundle
        config:
          servers:
            - nats://nats:4222

Publishing NATS Events

Using the NATS CLI

$ nats pub bundle-update test

Consul

Consul Config Example

plugins:
  subscribe:
    subscribers:
      consul_bundle:
        provider: consul
        topic: bundle-update
        plugin: bundle
        config:
          address: http://consul:8500

Publishing Consul Events

Using the Fire Event API

$ curl \
    --request PUT \
    --data @payload \
    http://consul:8500/v1/event/fire/bundle-update

About

Trigger plugins on events

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages