Capabilities
Capabilities are the glue that stitches Applications to the rest of your infrastructure. Module creators build capabilities to fully automate the connection between applications and other infrastructure.
A common example is relational databases like postgresql. An application needs a database created in the database cluster along with network access and credentials. A postgresql capability would do the following:
- open network access to the database
- create a user in the cluster for the service along with secure credentials
- create a database owned by this role
- inject the credentials into the app
- inject database host/port into the app
Users can use capabilities for more than just database access:
- Datastores
- Secrets Injection (e.g Rails secrets, JWT keys)
- Public-entry (e.g. Load Balancers, CDNs, API Gateways)
- Events (e.g. Cron jobs, Data streams, Alarm Triggers)
- Container Sidecars (e.g. envoy)