Skip to content
/ callisto Public

Callisto is an open-source Kubernetes-native implementation of Selenium Grid.

License

Notifications You must be signed in to change notification settings

wrike/callisto

Repository files navigation

Callisto

Docker Pulls

Callisto is an open-source Kubernetes-native implementation of Selenium Grid.

Here you can get more information about Callisto:

Current status

Callisto is a production-ready tool, which lets us run hundreds of thousands selenium tests per day inside Wrike. It completely satisfies our needs, so currently we're not actively developing it.

Architecture

Callisto architecture

Callisto architecture

Components

  • Nginx proxies requests for creating/deleting sessions to Callisto. All other requests are proxied to browser pods directly.
  • Callisto creates/deletes browser pods, watches the status of pods, and creates sessions via the webdriver.
  • Browser pods contain a webdriver and a browser.

Nginx and Callisto must be running inside a Kubernetes cluster in order to access browser pods directly.

Features

Installation

See helm chart to get started.

Configuration

Name Type Required Default Description
WEB_API_HOST str No 127.0.0.1 a host to run web api
WEB_API_PORT int No 8080 a port to run web api
LOG_LEVEL str No INFO log level
GRAYLOG_HOST str No Graylog host address. Logging to Graylog is disabled if left empty
GRAYLOG_PORT int No 12201 Graylog port
K8S_NAMESPACE str No default k8s namespace to spawn pods
POD_WEBDRIVER_PATH str No webdriver path location. On selenoid images /wd/hub for firefox, empty for others
POD_WEBDRIVER_PORT int No 4444 webdriver port
POD_MANIFEST str No /etc/callisto/pod_manifest.yaml Path to pod manifest file
SENTRY_DSN str No Sentry DSN. Sentry disabled if left empty

Resources requests/limits, browser image, screen resolution and other parameters can be configured via pod_manifest.yaml.

Troubleshooting

Each request is marked with a unique trace id (tid). This information is available in the logs. Also, for debugging, it is recommended to set the LOG_LEVEL to DEBUG.