Drivers - adobe/aquarium-fish GitHub Wiki

Aquarium Fish driver - is a plug-in interface to communicate with providers & gates.

You can read about each driver on it's own wiki page, those are started with prefix "Driver: " - so if you need details about specific driver configuration - please go ahead and use those.

The drivers are separated from the Fish codebase (lives as subdirs in /lib/drivers directory) by strict interface to interact with them. So it's really easy to prepare your own driver even if you know nothing about the Aquarium Fish itself: just copy and rename the driver folder you like, modify it to serve your needs and build your own version of Fish.

Types

Right now supported 2 types of drivers:

Gate

A way to connect schedulers out of your reach or provide user another interface to Fish

Gates has access to the Fish DB and can store data & allocate/deallocate applications. Also it's possible to bind ports to listen on them - to receive connections from outside. Those tools helps to connect remote scheduler (like github actions) or create proxies for user (like proxyssh).

Provider

Gives it's compute resources to Fish cluster

Provider driver could utilize local resources (like VM's or docker containers) that you running on the same node or could exploit remote resources (like AWS cloud or remote docker server). For local resources drivers shares the local node resources counter - CPU, RAM and Disk for example. So VMX will not harm Docker, when Docker said that those CPU's are used - but it really depends on the drivers and labels configurations, so it's up to the driver to decide will it support overbook and use multi-tenancy or not.

Also Provider driver has tasks interface, which allows to do actions with resources - it's useful when you need to snapshot the VM or build a new image from it.

Configs

If the Fish is running with no configuration - the drivers are starting with default configuration. It's enough for proxies, VMX & Docker, but sometimes not that great for more complicated drivers like Github, AWS & Native. So for such drivers you can specify settings in Fish config, for example:

node_name: supernode
node_location: sf
default_resource_lifetime: 1h30m

drivers:
  providers:
    aws:
      region: us-west-2
      key_id: YOUR_KEY_ID
      secret_key: YOUR_SECRET_KEY
      instance_tags:
        ResourceManager: AquariumFish

  # You can also specify driver with suffix - so it will have unique configuration and you will be able to switch
  # between such aws driver instances in Label by using "driver: aws/dev" or "driver: aws" in this config case
    aws/dev:
      region: us-west-1
      key_id: YOUR_KEY_ID_2
      secret_key: YOUR_SECRET_KEY_2
      instance_tags:
        ResourceManager: AquariumFish

  gates:
    proxyssh:  # Specify to require load of the driver with default configs

So the drivers could be utilized in multiple configurations with different suffixes separated from the driver name by /, but by default they will use just driver name.

⚠️ **GitHub.com Fallback** ⚠️