Skip to main content

Workflows and Components

For details on how each type of component integrates with Clutch please visit the Architecture reference.

Frontend

Frontend workflows are written using React and registered and configured in the frontend config file at build time.

Workflow Packages

@clutch-sh/dynamodb
  • Update Capacity
  • @clutch-sh/ec2
  • Terminate Instance
  • Reboot Instance
  • Resize Autoscaling Group
  • @clutch-sh/envoy
  • Remote Triage
  • @clutch-sh/experimentation
  • Manage Experiments
  • View Experiment Run
  • @clutch-sh/k8s
  • Delete Pod
  • Resize HPA
  • Kubernetes Dashboard
  • Cordon/Uncordon Node
  • @clutch-sh/kinesis
  • Shard Count
  • @clutch-sh/project-catalog
  • Project Catalog
  • @clutch-sh/project-selector
  • Dash
  • @clutch-sh/redis-experimentation
  • Start Experiment
  • @clutch-sh/server-experimentation
  • Start Experiment
  • @clutch-sh/sourcecontrol
  • Create Repository
  • Backend

    Backend components are written in Go and registered and configured in the backend config file at runtime.

    Services

    clutch.service.audit
    Persists events emitted from the audit middleware. Other components can also use this service directly for advanced auditing capabilities.
    clutch.service.audit.sink.logger
    Logs audit events to the Gateway's logger.
    clutch.service.auditsink.slack
    Posts events to a configured Slack workspace and channel.
    clutch.service.authn
    Produces tokens for the configured OIDC provider.
    clutch.service.authn.storage
    Stores tokens from the auth provider(s) in the database.
    clutch.service.authz
    Evaluates the configured RBAC policies against user and resource pairs.
    clutch.service.aws
    Multi-region client for Amazon Web Services.
    clutch.service.bot
    Maps a bot command to a Clutch API call, returning the endpoint data as the bot's reply
    clutch.service.chaos.experimentation.store
    Chaos Experimentation Framework - Data layer to handle all database operations
    clutch.service.chaos.experimentation.termination
    Chaos Experimentation Framework - Performs termination of experiments based on certain given criteria
    clutch.service.db.postgres
    Provides a connection to the configured PostgreSQL database.
    clutch.service.envoyadmin
    Executes remote queries against the Envoy Proxy admin interface.
    clutch.service.feedback
    Stores feedback submissions in the database.
    clutch.service.github
    GitHub client that combines the REST/GraphQL APIs and raw git capabilities into a single interface.
    clutch.service.k8s
    Multi-clientset Kubernetes interface.
    clutch.service.project
    clutch.service.shortlink
    clutch.service.sourcegraph
    clutch.service.temporal
    Workflow client for temporal.io.
    clutch.service.topology

    Modules

    clutch.module.assets
    Simple API to execute gRPC middleware on blob requests. Required for assets to be served from the Go binary.
    clutch.module.audit
    Returns audit event logs from the database.
    clutch.module.authn
    Registers login and callback endpoints for OAuth 2 flows.
    clutch.module.authz
    Exposes an endpoint for RBAC policy checks on arbitrary resources and users.
    clutch.module.aws
    Endpoints for interacting with resources in the Amazon Web Services (AWS) cloud.
    clutch.module.bot.slackbot
    Receives bot events from the Slack Events API
    clutch.module.chaos.experimentation.api
    Chaos Experimentation Framework - Supports a CRUD API for managing experiments.
    clutch.module.chaos.experimentation.xds
    Chaos Experimentation Framework - Envoy Discovery Service (xDS) implementation that delivers chaos experiment values to subscribed Envoys.
    clutch.module.chaos.redisexperimentation
    Chaos Experimentation Framework - Supports Redis specific experiments.
    clutch.module.chaos.serverexperimentation
    Chaos Experimentation Framework - Supports transformation of data from database to be UI ready
    clutch.module.dynamodb
    clutch.module.envoytriage
    Remote debugging APIs for Envoy Proxy.
    clutch.module.featureflag
    clutch.module.feedback
    Exposes endpoints to return survey questions for feedback components and to submit feedback submissions.
    clutch.module.healthcheck
    Simple healthcheck endpoint.
    clutch.module.k8s
    Endpoints for interacting with Kubernetes resources.
    clutch.module.kinesis
    clutch.module.project
    clutch.module.proxy
    clutch.module.resolver
    Exposes registered resolvers and their schemas for use in structured or free-form search.
    clutch.module.shortlink
    clutch.module.sourcecontrol
    Creates repositories in a source control system.
    clutch.module.topology

    Resolvers

    clutch.resolver.aws
    Locates resources in the Amazon Web Services (AWS) cloud.
    clutch.resolver.k8s
    Locates resources in Kubernetes.

    Middleware

    clutch.middleware.accesslog
    Logs gRPC requests and responses, optionally filtered by status code.
    clutch.middleware.audit
    Emits audit events from requests and responses based on annotations.
    clutch.middleware.authn
    Validates authentication headers using the authn service and adds claims to the request context.
    clutch.middleware.authz
    Extracts resource information from requests and passes it to the authz service to allow or deny access.
    clutch.middleware.errorintercept
    Allows services to register error interceptors in order to rewrite errors with additional information.
    clutch.middleware.stats
    Emits latency, success, and error stats after each request.
    clutch.middleware.validate
    Enforces input validation annotations from the proto definition on incoming requests.