opa-plugin-subscribe

command module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 5, 2021 License: MIT Imports: 8 Imported by: 0

README

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

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL