Using TIL
The TriggerMesh Integration Language (TIL) is a configuration language based on the HCL syntax which provides a user-friendly interface for describing TriggerMesh Bridges.
Use TIL with the TriggerMesh Platform
The TriggerMesh Integration Language is easily usable with the til
CLI which helps you generate the manifests describing your event-driven application. It is the perfect companion to the TriggerMesh controller. Go to the complete documentation for the detailed specification.
Installation
Download the CLI from the GitHub release page. For example on Linux x86_64 architecture do:
wget https://github.com/triggermesh/til/releases/download/v0.1.0/til_v0.1.0_linux_amd64
Put it in your PATH
and make the binary executable.
mv til_v0.1.0_linux_amd64 /usr/local/bin/til
chmod +x /usr/local/bin/til
Check that you can run the command.
$ til -h
Interpreter for TriggerMesh's Integration Language.
USAGE:
til <command>
COMMANDS:
generate Generate Kubernetes manifests for deploying a Bridge.
validate Validate a Bridge description.
graph Represent a Bridge as a directed graph in DOT format.
For the complete usage reference go to the TIL documentation.
Example
With the til
CLI installed you are ready to write your first Bridge.
In this guide we take the simple example of a point to point connection between a GitHub repository and a Splunk index. This assumes:
- We are using a sample repository on GitHub called
triggermesh/bridges
. Pick one that you have access to - We are using a GitHub token stored as a Kubernetes secret called
github-source-tokens
. See the GitHub secret class for details. - We are using Splunk credentials stored as a Kubernettes secret called
my_splunk_credentials
. See the Splunk secret class for details. - We want to receive all events related to
push
andpull_requests
actions in our repository.
Using the TIL syntax you may write this point to point connection in a file called til-demo.brg.hcl
:
bridge "github_to_splunk" { }
/* Event source block
Sources events from a GitHub repository
*/
source github "my_repo" {
owner_and_repository = "triggermesh/bridges"
tokens = secret_name("github-source-tokens")
event_types = [
"push",
"pull_request",
]
to = target.github_archive_index
}
/* Event target block
Receives events and stores them into a Splunk index
*/
target splunk "github_archive_index" {
endpoint = "https://prd-x-12345.splunkcloud.com"
auth = secret_name("my-splunk-credentials")
index = "github_events"
}
To generate the manifest in YAML you issue the following command:
$ til generate ../til-demo.brg.hcl --yaml
apiVersion: targets.triggermesh.io/v1alpha1
kind: SplunkTarget
metadata:
labels:
bridges.triggermesh.io/id: github_to_splunk
name: github-archive-index
spec:
endpoint: https://prd-x-12345.splunkcloud.com
index: github_events
token:
valueFromSecret:
key: hec_token
name: my-splunk-credentials
---
apiVersion: sources.knative.dev/v1alpha1
kind: GitHubSource
metadata:
labels:
bridges.triggermesh.io/id: github_to_splunk
name: my-repo
spec:
accessToken:
secretKeyRef:
key: access_token
name: github-source-tokens
eventTypes:
- push
- pull_request
ownerAndRepository: triggermesh/bridges
secretToken:
secretKeyRef:
key: webhook_secret
name: github-source-tokens
sink:
ref:
apiVersion: targets.triggermesh.io/v1alpha1
kind: SplunkTarget
name: github-archive-index
With these manifests ready you can deploy them easily. For example using kapp.
Deployment options for TIL
TIL is a specification language and a CLI to help you author Kubernetes objects. It does not dictate how you deploy your Bridge. You may choose helm
, kapp
or simply kubectl
. Check the deployment samples.
Generate the diagram of your event flow
If you want to generate a diagram of your flow, you can create a dot
file using til
.
til graph til-demo.brg.hcl > til-demo.dot
dot -Tpng til-demo.dot > til-demo.png
Info
To visualize your event flow you may install Graphviz on your local machine or use the on-line viewer.
The PNG file created will look similar to the one below.