Quick Start
The recommended method for installing Canary Checker is using helm
1. Deploy Canary Checker
Using Helm
Add the Flanksource helm repository
helm repo add flanksource https://flanksource.github.io/charts
helm repo update
To install into a new canary-checker namespace, run
helm install \
  canary-checker \
  flanksource/canary-checker \
 -n canary-checker \
 --create-namespace \
 --wait \
 -f values.yaml
values.yaml
flanksource-ui:
  ingress:
    host: canary-checker.127.0.0.1.nip.io
    annotations:
      kubernetes.io/ingress.class: nginx
      kubernetes.io/tls-acme: "true"
    tls:
      - secretName: canary-checker-tls
        hosts:
        - canary-checker.127.0.0.1.nip.io
Using Flux CD
helmrelease.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: canary-checker
---
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: HelmRepository
metadata:
  name: flanksource
  namespace: canary-checker
spec:
  interval: 5m
  url: https://flanksource.github.io/charts
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: canary-checker
  namespace: canary-checker
spec:
  interval: 5m
  chart:
    spec:
      chart: canary-checker
      sourceRef:
        kind: HelmRepository
        name: flanksource
      interval: 1m
  values:
    flanksource-ui:
      ingress:
        host: canary-checker.127.0.0.1.nip.io
        annotations:
          kubernetes.io/ingress.class: nginx
          kubernetes.io/tls-acme: "true"
        tls:
          - secretName: canary-checker-tls
            hosts:
            - canary-checker.127.0.0.1.nip.io
canary-checker-kustomization.yaml
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: canary-checker
  namespace: flux-system
spec:
  interval: 5m
  sourceRef:
    kind: GitRepository
    name: <Flux Gitrepo Name>
  path: path/to/canary-checker/helmrelease/folder
  prune: true
  healthChecks: # wait for the HelmRelease to be reconciled with
    - apiVersion: helm.toolkit.fluxcd.io/v2beta1
      kind: HelmRelease
      name: canary-checker
      namespace: canary-checker
info
Note the default installation of canary-checker uses an embedded postgres database and does not persist history, see: Database
3. Create a canary
cat <<EOF | kubectl apply -f -
apiVersion: canaries.flanksource.com/v1
kind: Canary
metadata:
  name: http-check
spec:
  interval: 30
  http:
    - name: http pass response 200 status code
      url: https://httpbin.demo.aws.flanksource.com/status/200
EOF
4. Check the results via the CLI
kubectl get canary
NAME       INTERVAL     STATUS   LAST CHECK   UPTIME 1H       LATENCY 1H   LAST TRANSITIONED
http-check   30         Passed   13s          18/18 (100.0%)   480ms        13s
5. Access the dashboard
You can access the web dashboard by forwarding the port:
kubectl  -n canary-checker port-forward  svc/canary-checker-ui 8080:80
To deploy an ingress for the dashboard, update the values.yaml:
flanksource-ui:
  enabled: true
  ingress:
    annotations:
      kubernetes.io/tls-acme: "true"
    host: <DOMAIN>
    tls:
      - hosts:
          - <DOMAIN>
        secretName: ingress-tls