table of contents Table of contents

Running on Kubernetes

We advise running any production-grade Private Location and Checkly Agent deployments on a container orchestrator like Kubernetes. To help you get started, we created the checkly-k8s repo which contains a Helm chart and a few example Kubernetes manifests.

Prerequisites

  • You’ve created a Private Location and have an API key.
  • A Kubernetes setup. Can be minikube, EKS, on-prem etc. We are not picky.
  • Helm if you are using Helm charts.

Now, clone the repo with the examples:

git clone https://github.com/checkly/checkly-k8s.git
cd checkly-k8

Helm chart

Find the Helm chart in the /helm-cart directory. The Helm chart does two basic things:

  • Creates a secret for the API key.
  • Spins up two pods running the Checkly Agent

Assuming you have Helm set up to point at your K8S cluster, run it with the following command, making sure you replace the apikey="pl_..." with your Checkly Private Location API key.

helm install checkly-agent --set apiKey="pl_..."  ./helm-chart

Kubernetes manifests

If you are not using Helm, you can also use these K8S manifest files to create your preferred cluster setup for the Checkly Agent. Here is a rundown of the manifest files you can find in the repo

agentSecret.yaml

Creates a secret containing the API key your agents use to connect to the private location. Useful if you want to obfuscate the key so others can’t see it with the kubectl describe pod command. The pod and deployment manifests are configured to use this secret.

agentPod.yaml

Creates a single pod running the Checkly agent. Connects to the Private Location using the API key specified in agentSecret.yaml. Uses the latest image.

agentDeployment.yaml

Create a deployment of Checkly agent pods (default: 2). Connects to the private location using the API key specified in agentSecret.yaml. Uses the latest image. Rolling updates are enabled.

checklyNamespace.yaml

Optional - Creates a namespace for the Checkly agent resources.


You can contribute to this documentation by editing this page on Github