|
1 | 1 | ---
|
2 | 2 | title: "Architecture"
|
3 |
| -description: "" |
| 3 | +description: "Codefresh platform and runtime architecture" |
4 | 4 | group: installation
|
5 | 5 | toc: true
|
6 | 6 | ---
|
7 | 7 |
|
8 | 8 | If you have familiarized yourself with the different installation options, here's a deep dive into the architecture and components of the different options.
|
9 | 9 |
|
10 |
| -## Runner architecture |
11 | 10 |
|
12 |
| -The most important components are the following: |
13 |
| - |
14 |
| -**Codefresh VPC:** All internal Codefresh services run in the VPC. Codefresh uses Mongo and PostgreSQL to store user and authentication information. |
15 | 11 |
|
16 |
| -**Pipeline execution environment**: The Codefresh engine component is responsible for taking pipeline definitions and running them in managed Kubernetes clusters by automatically launching the Docker containers that each pipeline needs for its steps. |
| 12 | +## Codefresh SaaS platform architecture |
17 | 13 |
|
18 |
| -**External actors**. Codefresh offers a [public API]({{site.baseurl}}/docs/integrations/codefresh-api/) that is consumed both by the Web user interface and the <!--should i differentiate between the CI Cli and GitOps CLI -->[Codefresh CLI](https://codefresh-io.github.io/cli/){:target="\_blank"}. The API is also available for any custom integration with external tools or services. |
19 |
| - |
20 |
| -See [Runner installation behind firewalls]({{site.baseurl}}/docs/installation/behind-the-firewall/). |
| 14 | +The diagram shows a high-level view of the SaaS version of the Codefresh platform and its core components. |
21 | 15 |
|
22 | 16 |
|
23 |
| -## GitOps architecture |
24 |
| - |
25 |
| -The diagram shows a high-level view of the GitOps environment, and its core components, the Codefresh Control Plane, the Codefresh Runtime, and the Codefresh Clients. |
26 |
| - |
27 | 17 | {% include
|
28 | 18 | image.html
|
29 | 19 | lightbox="true"
|
30 |
| -file="/images/runtime/architecture/arch-codefresh-simple.png" |
31 |
| -url="/images/runtime/architecture/arch-codefresh-simple.png" |
32 |
| -alt="Codefresh GitOps platform architecture" |
33 |
| -caption="Codefresh GitOps platform architecture" |
| 20 | +file="/images/runtime/architecture/arch-saas.png" |
| 21 | +url="/images/runtime/architecture/arch-saas.png" |
| 22 | +alt="Codefresh SaaS platform architecture" |
| 23 | +caption="Codefresh SaaS platform architecture" |
34 | 24 | max-width="100%"
|
35 | 25 | %}
|
36 | 26 |
|
37 |
| - |
38 |
| - |
39 | 27 | ### GitOps Control Plane
|
40 | 28 | The Codefresh Control Plane is the SaaS component in the platform. External to the enterprise firewall, it does not have direct communication with the Codefresh Runtime, Codefresh Clients, or the customer's organizational systems. The Codefresh Runtime and the Codefresh Clients communicate with the Codefresh Control Plane to retrieve the required information.
|
41 | 29 |
|
42 | 30 |
|
43 | 31 |
|
44 | 32 | ### GitOps Runtime
|
45 | 33 | The GitOps Runtime is installed on a Kubernetes cluster, and houses the enterprise distribution of the Codefresh Application Proxy and the Argo Project.
|
46 |
| -Depending on the type of GitOps installation, the GitOps Runtime is installed either in the Codefresh platform (Hosted GitOps), or in the customer environment (Hybrid GitOps). Read more in [Codefresh GitOps Runtime architecture](#codefresh-gitops-runtime-architecture). |
| 34 | +Depending on the type of GitOps installation, the GitOps Runtime is installed either in the Codefresh platform (Hosted GitOps), or in the customer environment (Hybrid GitOps). Read more in [GitOps Runtime architecture](#gitops-runtime-architecture). |
47 | 35 |
|
48 | 36 |
|
49 | 37 |
|
50 | 38 | ### GitOps Clients
|
51 | 39 |
|
52 | 40 | GitOps Clients include the UI and the GitOps CLI.
|
53 |
| -The UI provides a unified, enterprise-wide view of deployments (runtimes and clusters), and CI/CD operations (Delivery Pipelines, workflows, and deployments) in the same location. |
| 41 | +The UI provides a unified, enterprise-wide view of deployments (runtimes, clusters, and applications), and CI/CD operations (Delivery Pipelines, workflows, and deployments) in the same location. |
54 | 42 | The Codefresh CLI includes commands to install hybrid runtimes, add external clusters, and manage runtimes and clusters.
|
55 | 43 |
|
| 44 | +## Codefresh on-premises platform architecture |
| 45 | + |
| 46 | +The diagram shows a high-level view of the on-premises version of the Codefresh platform, and its core components. |
| 47 | + |
| 48 | +{% include |
| 49 | +image.html |
| 50 | +lightbox="true" |
| 51 | +file="/images/runtime/architecture/arch-on-premises.png" |
| 52 | +url="/images/runtime/architecture/arch-on-premises.png" |
| 53 | +alt="Codefresh On-Premises platform architecture" |
| 54 | +caption="Codefresh On-Premises platform architecture" |
| 55 | +max-width="100%" |
| 56 | +%} |
| 57 | + |
| 58 | + |
| 59 | + |
| 60 | +### External Components |
| 61 | + |
| 62 | + |
| 63 | +<br> |
| 64 | + |
| 65 | +#### Codefresh Runner |
| 66 | +The Codefresh Runner can be installed on the same cluster as the On-Premises platform or on a remote cluster. It provides a way to run builds, tests, and deployments within your private network or on-premises environment by making API calls to the Codefresh platform. |
| 67 | + |
| 68 | +Read more about how it works in [Runner installation behind firewalls]({{site.baseurl}}/docs/installation/behind-the-firewall/). |
| 69 | + |
| 70 | +<br> |
| 71 | + |
| 72 | +#### GitOps Runtime |
| 73 | +The GitOps Runtime, similar to the Codefresh Runner can be installed on the same cluster as the On-Premises platform on a remote cluster. It includes Codefresh-signed versions of the Argo Project components, Argo CD, Argo Workflows, Argo Rollouts, and Argo Events. |
| 74 | +The GitOps Runtime reports events in clusters and GitOps repositories through API calls to the Codefresh platform. |
| 75 | + |
| 76 | +Read more in [GitOps Runtime architecture]({{site.baseurl}}/docs/installation/runtime-architecture/#gitops-runtime-architecture). |
| 77 | + |
| 78 | +<br> |
| 79 | + |
| 80 | +#### Codefresh UI & CLI |
| 81 | +Codefresh provides a web-based UI and CLI to work with the Codefresh On-Premises platform through API calls. |
| 82 | + |
| 83 | +The UI allows users to visually manage and control CI/CD pipelines, GitOps applications and deployments, and more. |
| 84 | +The CLI provides a flexible option for developers to interact with the On-Premises platform. |
| 85 | + |
| 86 | + |
| 87 | +### On-Premises Platform Components |
| 88 | + |
| 89 | +<br> |
| 90 | + |
| 91 | +#### Ingress Controller |
| 92 | + |
| 93 | +The Codefresh On-Premises platform uses an ingress controller to handle incoming traffic. The NGINX Ingress Controller is deployed within the cluster hosting the Codefresh platform. The ingress controller serves as the entry point for requests originating from Codefresh Runners, GitOps Runtimes, and Clients, and routes them to the appropriate destinations, namely the Pipelines API/UI and the GitOps API/UI. |
| 94 | + |
| 95 | +<br> |
| 96 | + |
| 97 | +#### Pipelines API |
| 98 | + |
| 99 | +The Pipelines API serves as the primary gateway for the Codefresh Pipelines module in the On-Premises platform. It handles a wide range of system functionalities, including authentication, authorization, audit logging, user management, and pipeline builds, among others. The Pipelines API utilizes a REST API interface with OpenAPI (Swagger v3) specifications. |
| 100 | + |
| 101 | +<br> |
| 102 | + |
| 103 | +#### Pipelines UI |
| 104 | +The Pipelines UI acts as a static file server that hosts and delivers all the user interface pages for Codefresh Pipelines. It provides visualization of pipelines, builds, third-party integrations and more. |
| 105 | + |
| 106 | +<br> |
| 107 | + |
| 108 | +#### GitOps API |
| 109 | +The GitOps API serves as the primary gateway for the Codefresh GitOps module in the On-Premises platform. It interfaces between Codefresh GitOps, Git, and Argo CD, to sync |
| 110 | +It utilizes a GraphQL interface to provide a user interface |
| 111 | + |
| 112 | +<br> |
| 113 | + |
| 114 | +#### GitOps UI |
| 115 | +The GitOps UI provides a unified, enterprise-wide view of deployments, Runtimes, clusters, and applications in the same location. |
| 116 | + |
| 117 | +<br> |
| 118 | + |
| 119 | +#### Pipelines |
| 120 | + |
| 121 | +The Pipelines module comprises a set of microservices for managing Codefresh pipelines in the On-Premises platform. |
| 122 | +The Codefresh Runner and clients (UI/CLI) forward incoming requests to the Pipelines API, which in turn forwards them to the different Pipeline microservices. |
| 123 | + |
| 124 | + |
| 125 | +* Broadcaster |
| 126 | + Forwards requests from the Codefresh Runner and client to the Codefresh API when Firebase is not used. |
| 127 | + |
| 128 | +* Runtime Manager |
| 129 | + Manages the runtime environments for the Codefresh Runner in the Codefresh On-Premises platform. |
| 130 | + |
| 131 | +* Context Manager |
| 132 | + Stores information on Pipeline Integrations created in Codefresh. |
| 133 | + |
| 134 | +* Pipeline Manager |
| 135 | + Stores and manages projects and pipeline entities. |
| 136 | + |
| 137 | +* Helm Manager |
| 138 | + Provides an interface for aggregated views of Helm integrations in Codefresh Pipelines. |
| 139 | + |
| 140 | +* GitOps Manager |
| 141 | + Deprecated. Stored information for populating the GitOps Dashboard in Codefresh Pipelines. The dashboard is now populated by Codefresh GitOps. |
| 142 | + |
| 143 | +<br> |
| 144 | + |
| 145 | +#### GitOps |
| 146 | + |
| 147 | +The GitOps module comprises the microservices for Codefresh and Argo users to consume and share Argo Workflow templates. |
| 148 | + |
| 149 | +* Cron executer |
| 150 | + The Cron Executor performs periodic internal tasks required for platform functionality. |
| 151 | + |
| 152 | +* API Events |
| 153 | + Receives events from GitOps Runtimes and publishes them to the Event Bus. |
| 154 | + |
| 155 | +* Event Handler |
| 156 | + The Event Handler subscribes to events originating from the API Events received via the Event Bus, processes, and updates them. |
| 157 | + |
| 158 | +* Audit Manager |
| 159 | + The Audit Manager reports and stores audit logs of API calls to Codefresh GitOps. |
| 160 | + |
| 161 | +* Analytics Reporter |
| 162 | + Reports analytics information to populate deployment, runtime, and cluster data for GitOps in the different dashboards and widgets. |
| 163 | + |
| 164 | +* Argo Hub |
| 165 | + Interfaces with the Argo Hub platform for working with pre-built Argo Workflow templates. Visit https://codefresh.io/argohub/ for more details. |
| 166 | + |
| 167 | +<br> |
| 168 | + |
| 169 | +#### Infrastructure |
| 170 | +Codefresh stores entity, configuration, and integration data for Codefresh Pipelines and Codefresh GitOps in different databases. |
| 171 | +Each microservice within the Codefresh Pipeline and GitOps modules has its own dedicated database, which is independent from the databases used by other microservices. Communication between each microservice and its respective database is exclusive. |
| 172 | + |
| 173 | + |
| 174 | +* mongoDB |
| 175 | + The main database for entity storage for Pipeline and GitOps microservices. |
| 176 | + |
| 177 | +* Redis |
| 178 | + * Optimizes caching for faster response times to requests and reduce load on the database |
| 179 | + * When Firebase is not used, interacts with the Broadcaster microservice to serve pipeline build logs to the client |
| 180 | + |
| 181 | +* RabbitMQ |
| 182 | + RabbitMQ serves as a message bus to move tasks and information between microservices in the Pipeline and GitOps modules. |
| 183 | + |
| 184 | +* PostgreSQL |
| 185 | + The PostgreSQL database stores: |
| 186 | + * Audit logs of API calls from the Codefresh and GitOps APIs |
| 187 | + * Analytics information (OF WHAT WOULD BE HELPFUL) |
| 188 | + |
| 189 | + |
| 190 | +* NATS |
| 191 | + Legacy message bus. |
| 192 | + |
| 193 | +* Consul |
| 194 | + Stores data for legacy builder and windows nodes. |
| 195 | + |
| 196 | + |
| 197 | +## Codefresh Runner |
| 198 | + |
| 199 | +The most important components are the following: |
| 200 | + |
| 201 | +**Codefresh VPC:** All internal Codefresh services run in the VPC. Codefresh uses Mongo and PostgreSQL to store user and authentication information. |
| 202 | + |
| 203 | +**Pipeline execution environment**: The Codefresh engine component is responsible for taking pipeline definitions and running them in managed Kubernetes clusters by automatically launching the Docker containers that each pipeline needs for its steps. |
| 204 | + |
| 205 | +**External actors**. Codefresh offers a [public API]({{site.baseurl}}/docs/integrations/codefresh-api/) that is consumed both by the Web user interface and the <!--should i differentiate between the CI Cli and GitOps CLI -->[Codefresh CLI](https://codefresh-io.github.io/cli/){:target="\_blank"}. The API is also available for any custom integration with external tools or services. |
| 206 | + |
| 207 | +See [Runner installation behind firewalls]({{site.baseurl}}/docs/installation/behind-the-firewall/). |
| 208 | + |
| 209 | + |
| 210 | + |
| 211 | + |
56 | 212 | ## GitOps Runtime architecture
|
57 | 213 | The sections that follow show detailed views of the GitOps Runtime architecture for the different installation options, and descriptions of the GitOps Runtime components.
|
58 | 214 |
|
@@ -194,4 +350,4 @@ The customer environment that communicates with the GitOps Runtime and Codefresh
|
194 | 350 | [Codefresh pricing](https://codefresh.io/pricing/){:target="\_blank"}
|
195 | 351 | [Codefresh features](https://codefresh.io/features/){:target="\_blank"}
|
196 | 352 |
|
197 |
| - |
| 353 | + |
0 commit comments