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/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
  • @clutch-sh/kinesis
  • Shard Count
  • @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.authz
    Evaluates the configured RBAC policies against user and resource pairs.
    clutch.service.aws
    Multi-region client for Amazon Web Services.
    clutch.service.chaos.experimentation.store
    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.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.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.chaos.experimentation.api
    Experimentation Framework Service implementation. Supports a CRUD API for managing experiments.
    clutch.module.chaos.experimentation.rtds
    Runtime Discovery Service (RTDS) implementation that delivers chaos experiment values to subscribed Envoys.
    clutch.module.chaos.serverexperimentation
    clutch.module.envoytriage
    Remote debugging APIs for Envoy Proxy.
    clutch.module.healthcheck
    Simple healthcheck endpoint.
    clutch.module.k8s
    Endpoints for interacting with Kubernetes resources.
    clutch.module.kinesis
    clutch.module.resolver
    Exposes registered resolvers and their schemas for use in structured or free-form search.
    clutch.module.sourcecontrol
    Creates repositories in a source control system.

    Resolvers

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

    Middleware

    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.stats
    Emits latency, success, and error stats after each request.
    clutch.middleware.validate
    Enforces input validation annotations from the proto definition on incoming requests.