Concourse is just a simple distributed system build-up, from the following components. The architecture is mainly divided into two nodes i.e. web and worker node. Concourse web and worker subsystems run on multiple VMs.
Web node :-
* ATC (Air traffic control): Web UI,API,build scheduler
All scheduling of pipeline is handled by ATC only, we can also say that ATC is the heart of the concourse. It runs the web UI and API of the concourse. That is connected with PostgreSQL which stores pipeline data, such as build configurations, build logs, and resource versions, for use by worker VMs. ATC serves the concourse API on the 8080 port which supports fly CLI and other tools. The main component of ATC are:-
- Resource checker – checks the new version of resources here .
2. Build scheduler – scheduled build for a job here.
3. Build Tracker – responsible for running scheduled build here.
4. Garbage Collector – the cleanup mechanism and used objects such as container & volume here.
* TSA (Transport security agency): worker registration
TSA serves SSH 2222. It Securely registers worker VMs for use by the ATC. Pings workers for heartbeat every 30 seconds (we may change the time) and gives the update of the pipeline
Stores pipeline data, such as build configurations, build logs, and resource versions, for use by worker VMs.
fly CLI :-
The fly tool gives the command-line interface to the concourse. It manages the pipeline. We have lots of commands to operate the concourse here.
Worker node :-
A worker node is divided into 3 main component
* Beacon: It helps to send the addresses of the garden and Baggageclaim to ATC to register workers, and from there they can run the pipeline. It also helps to communicate with the external workers through reverse SSH tunnel.
* Garden: Container management API
ATC manages containers with the help of the garden. Garden listen to port 7777 (HTTP). All the creation, deletion of the container, and spin the container in that particular job. The Garden has all the container responsibilities.
* Baggageclaim: Volume management API
Baggageclaim listens to post 7788 (HTTP). This allows you to create volume on a remote server, or we can say to create logger volume on a remote server. It manages the disk resources or volumes, mounted to the container. It uses volume to store persistence caches of resource versions & to propagate artifacts such as caches and task output through the containers used for the build.
For more information, you may also visit official documentation of the concourse https://concourse-ci.org/docs.html