Odyssey - Kentik Synthetics Kubernetes Operator

Odyssey

KentikLabs synthetic Kubernetes operator. This operator can be used to create Kentik synthetic tests on a Kubernetes cluster. The data can then be viewed in the Kentik Portal.

Odyssey Example

Build

To build the operator:

make

This will build the protos and binary.

Run Locally

To build and run the Go binary from your host outside of the cluster (for development):

make KENTIK_EMAIL=<your-kentik-email> KENTIK_API_TOKEN=<your-api-token> install run

Image

To build a Docker image of the controller:

docker build -t <name> .

Deploy

To deploy to a Kubernetes cluster:

make IMG=
   
     deploy

   

Usage

To create and deploy a synth server to run tests, use the following example:

apiVersion: synthetics.kentiklabs.com/v1
kind: SyntheticTask
metadata:
  name: demo
spec:
  fetch:
    - service: demo
      target: /
      port: 8080
      method: GET
      period: 30s
      expiry: 5s
  tls_handshake:
    - ingress: demo
      period: 30s
      expiry: 5s
  trace:
    - kind: deployment
      name: demo
      period: 30s
      expiry: 5s

Note: you can optionally specify server_image and agent_image to override the default images for the components. This is useful for development.

This will inform the operator to launch a synth server and agent in the desired namespace and configure the server with three tasks (fetch, tls_handshake, ping, and trace). These will then be sent to the agent to perform at the specified intervals.

Tasks

The following tasks are supported.

Fetch

Fetch performs an HTTP operation on the specified Kubernetes service. The connection info (IP, etc) will be automatically resolved by the operator.

Name Required Description
service yes Name of the Kubernetes service
port yes Port to check
tls optional Enable TLS for the check
target yes Path (i.e. /) for the check
method optional (default: GET) HTTP method to use for check
period optional (default: 10s) Interval to perform check
expiry optional (default: 5s) Timeout for the check to complete

TLS Handshake

The tls_handshake test performs a TLS handshake and reports info. This check requires a Kubernetes Ingress object. The connection info will be automatically resolved by the operator.

Name Required Description
ingress yes Name of the Kubernetes ingress
port optional (default: 443) Port to check
period optional (default: 10s) Interval to perform check
expiry optional (default: 5s) Timeout for the check to complete

Ping

Ping performs a network ping and latency, etc. This check can be used with a Kubernetes Pod, Deployment, Service, or Ingress. The connection info will be automatically resolved by the operator.

Name Required Description
kind yes Kubernetes object to check (Deployment, Pod, Service, Ingress)
name yes Name of the object to check
count optional (default: 3) Number of tries for the check
period optional (default: 10s) Interval to perform check
delay optional (default: 0ms) Delay (in ms) before each check
expiry optional (default: 5s) Timeout for the check to complete

Trace

Trace performs a network trace and reports hops, latency, etc. This check can be used with a Kubernetes Pod, Deployment, Service, or Ingress. The connection info will be automatically resolved by the operator.

Name Required Description
kind yes Kubernetes object to check (Deployment, Pod, Service, Ingress)
name yes Name of the object to check
protocol optional (default: udp) Protocol to use for the trace
port optional (default: 0) Port to check
count optional (default: 3) Number of tries for the check
limit optional (default: 3 min: 1 max: 50) Maximum number of hops
period optional (default: 10s) Interval to perform check
delay optional (default: 0ms) Delay (in ms) before each check
expiry optional (default: 5s) Timeout for the check to complete
Owner
Kentik
Kentik is a cloud-based, real-time network visibility and analytics solution for network and security operators.
Kentik
Similar Resources

The OCI Service Operator for Kubernetes (OSOK) makes it easy to connect and manage OCI services from a cloud native application running in a Kubernetes environment.

OCI Service Operator for Kubernetes Introduction The OCI Service Operator for Kubernetes (OSOK) makes it easy to create, manage, and connect to Oracle

Sep 27, 2022

PolarDB-X Operator is a Kubernetes extension that aims to create and manage PolarDB-X cluster on Kubernetes.

GalaxyKube -- PolarDB-X Operator PolarDB-X Operator is a Kubernetes extension that aims to create and manage PolarDB-X cluster on Kubernetes. It follo

Dec 19, 2022

Kubernetes Operator to sync secrets between different secret backends and Kubernetes

Vals-Operator Here at Digitalis we love vals, it's a tool we use daily to keep secrets stored securely. We also use secrets-manager on the Kubernetes

Nov 13, 2022

The NiFiKop NiFi Kubernetes operator makes it easy to run Apache NiFi on Kubernetes.

The NiFiKop NiFi Kubernetes operator makes it easy to run Apache NiFi on Kubernetes.

The NiFiKop NiFi Kubernetes operator makes it easy to run Apache NiFi on Kubernetes. Apache NiFI is a free, open-source solution that support powerful and scalable directed graphs of data routing, transformation, and system mediation logic.

Dec 26, 2022

Kubernetes Operator for a Cloud-Native OpenVPN Deployment.

Meerkat is a Kubernetes Operator that facilitates the deployment of OpenVPN in a Kubernetes cluster. By leveraging Hashicorp Vault, Meerkat securely manages the underlying PKI.

Jan 4, 2023

Modular Kubernetes operator to manage the lifecycle of databases

Ensemble Ensemble is a simple and modular Kubernetes Operator to manage the lifecycle of a wide range of databases. Infrastructure as code with Kubern

Aug 12, 2022

Progressive delivery Kubernetes operator (Canary, A/B Testing and Blue/Green deployments)

Progressive delivery Kubernetes operator (Canary, A/B Testing and Blue/Green deployments)

flagger Flagger is a progressive delivery tool that automates the release process for applications running on Kubernetes. It reduces the risk of intro

Jan 5, 2023

A Kubernetes Operator used for pre-scaling applications in anticipation of load

Pre-Scaling Kubernetes Operator Built out of necessity, the Operator helps pre-scale applications in anticipation of load. At its core, it manages a c

Oct 14, 2021

Kubernetes operator to autoscale Google's Cloud Bigtable clusters

Kubernetes operator to autoscale Google's Cloud Bigtable clusters

Bigtable Autoscaler Operator Bigtable Autoscaler Operator is a Kubernetes Operator to autoscale the number of nodes of a Google Cloud Bigtable instanc

Nov 5, 2021
Comments
  • Resolve the company and site IDs better

    Resolve the company and site IDs better

    Right now the company and site IDs need to be specified in the CRDs. It would be nice to either use names to resolve (via user API) or some form of lookup to get them for the user.

  • Bump dep golang.org/x/sys

    Bump dep golang.org/x/sys

    golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6 // indirect
    
    +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6 h1:nonptSpoQ4vQjyraW20DXPAglgQfVnM9ZC6MmNLMR60=
    +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
    
Related tags
An operator which complements grafana-operator for custom features which are not feasible to be merged into core operator

Grafana Complementary Operator A grafana which complements grafana-operator for custom features which are not feasible to be merged into core operator

Aug 16, 2022
The Elastalert Operator is an implementation of a Kubernetes Operator, to easily integrate elastalert with gitops.

Elastalert Operator for Kubernetes The Elastalert Operator is an implementation of a Kubernetes Operator. Getting started Firstly, learn How to use el

Jun 28, 2022
Minecraft-operator - A Kubernetes operator for Minecraft Java Edition servers

Minecraft Operator A Kubernetes operator for dedicated servers of the video game

Dec 15, 2022
K8s-network-config-operator - Kubernetes network config operator to push network config to switches

Kubernetes Network operator Will add more to the readme later :D Operations The

May 16, 2022
Pulumi-k8s-operator-example - OpenGitOps Compliant Pulumi Kubernetes Operator Example

Pulumi GitOps Example OpenGitOps Compliant Pulumi Kubernetes Operator Example Pr

May 6, 2022
Kubernetes Operator Samples using Go, the Operator SDK and OLM
Kubernetes Operator Samples using Go, the Operator SDK and OLM

Kubernetes Operator Patterns and Best Practises This project contains Kubernetes operator samples that demonstrate best practices how to develop opera

Nov 24, 2022
Test Operator using operator-sdk 1.15

test-operator Test Operator using operator-sdk 1.15 operator-sdk init --domain rbt.com --repo github.com/ravitri/test-operator Writing kustomize manif

Dec 28, 2021
a k8s operator 、operator-sdk

helloworld-operator a k8s operator 、operator-sdk Operator 参考 https://jicki.cn/kubernetes-operator/ https://learnku.com/articles/60683 https://opensour

Jan 27, 2022
Operator Permissions Advisor is a CLI tool that will take a catalog image and statically parse it to determine what permissions an Operator will request of OLM during an install

Operator Permissions Advisor is a CLI tool that will take a catalog image and statically parse it to determine what permissions an Operator will request of OLM during an install. The permissions are aggregated from the following sources:

Apr 22, 2022