|
| 1 | +// Module included in the following assemblies: |
| 2 | +// |
| 3 | +// * argo_rollouts/using-argo-rollouts-for-progressive-deployment-delivery.adoc |
| 4 | + |
| 5 | +:_mod-docs-content-type: CONCEPT |
| 6 | +[id="gitops-argo-rollouts-architecture-overview_{context}"] |
| 7 | += Argo Rollouts architecture overview |
| 8 | + |
| 9 | +Argo Rollouts support is enabled on a cluster by installing the {gitops-title} Operator and configuring a `RolloutManager` custom resource (CR) instance. |
| 10 | + |
| 11 | +After a RolloutManager CR is created, the {gitops-title} Operator installs Argo Rollouts into that same namespace. This step includes the installation of the Argo Rollouts controller and the resources required for handling Argo Rollouts, such as CRs, roles, role bindings, and configuration data. |
| 12 | + |
| 13 | +The Argo Rollouts controller can be installed in two different modes: |
| 14 | + |
| 15 | +* *Cluster-scoped mode* (default): The controller oversees resources throughout all namespaces within the cluster. |
| 16 | +* *Namespace-scoped mode*: The controller monitors resources within the namespace where Argo Rollouts is deployed. |
| 17 | +
|
| 18 | +The architecture of Argo Rollouts is structured into components and resources. Components are used to manage resources. For example, the AnalysisRun controller manages the `AnalysisRun` CR. |
| 19 | + |
| 20 | +Argo Rollouts include several mechanisms to gather analysis metrics to verify that a new application version is deployed: |
| 21 | + |
| 22 | +* *Prometheus metrics*: The `AnalysisTemplate` CR is configured to connect to Prometheus instances to evaluate the success or failure of one or more metrics. |
| 23 | +* *Kubernetes job metrics*: Argo Rollouts support the Kubernetes `Job` resource to run analysis on resource metrics. You can verify a successful deployment of an application based on the successful run of Kubernetes jobs. |
| 24 | +
|
| 25 | +[id="gitops-argo-rollouts-components_{context}"] |
| 26 | +== Argo Rollouts components |
| 27 | + |
| 28 | +Argo Rollouts consists of several components that enable users to practice progressive delivery in {OCP}. |
| 29 | + |
| 30 | +.Argo Rollouts components |
| 31 | +[options="header"] |
| 32 | +|=== |
| 33 | +|Name |Description |
| 34 | +|Argo Rollouts controller |The Argo Rollouts Controller is an alternative to the standard `Deployment` resource and coexists alongside it. This controller only responds to changes in the Argo Rollouts resources and manages the `Rollout` CR. The Argo Rollouts Controller does not modify standard deployment resources. |
| 35 | +|AnalysisRun controller |The AnalysisRun controller manages and performs analysis for `AnalysisRun` and `AnalysisTemplate` CRs. It connects a rollout to the metrics provider and defines thresholds for metrics that determine if a deployment update is successful for your application. |
| 36 | +|`Experiment controller` | The `Experiment` controller runs analysis on short-lived replica sets, and manages the `Experiment` custom resource. The controller can also be integrated with the `Rollout` resource by specifying the `experiment` step in the canary deployment `strategy` field. |
| 37 | +|`Service` and `Ingress` controller |The Service controller manages the `Service` resources and the Ingress controller manages the `Ingress` resources modified by Argo Rollouts. These controllers inject additional metadata annotations in the application instances for traffic management. |
| 38 | +|Argo Rollouts CLI and UI |Argo Rollouts supports an `oc/kubectl` plugin called Argo Rollouts CLI. You can use it to interact with resources, such as rollouts, analyses, and experiments, from the command line. It can perform operations, such as `pause`, `promote`, or `retry`. The Argo Rollouts CLI plugin can start a local web UI dashboard in the browser to enhance the experience of visualizing the Argo Rollouts resources. |
| 39 | +|=== |
| 40 | + |
| 41 | +[id="gitops-argo-rollouts-resources_{context}"] |
| 42 | +== Argo Rollouts resources |
| 43 | + |
| 44 | +Argo Rollout components manage several resources to enable progressive delivery: |
| 45 | + |
| 46 | +* *Rollouts-specific resources*: For example, `Rollout`, `AnalysisRun`, or `Experiment`. |
| 47 | +* *Kubernetes networking resources*: For example, `Service`, `Ingress`, or `Route` for network traffic shaping. Argo Rollouts integrate with these resources, which are referred to as traffic management. |
| 48 | + |
| 49 | +These resources are essential for customizing the deployment of applications through the `Rollout` CR. |
| 50 | + |
| 51 | +Argo Rollouts support the following actions: |
| 52 | + |
| 53 | +* Route percentage-based traffic for canary deployments. |
| 54 | +* Forward incoming user traffic by using `Service` and `Ingress` resources to the correct application version. |
| 55 | +* Use multiple mechanisms to collect analysis metrics to validate the deployment of a new version of an application. |
| 56 | + |
| 57 | +.Argo Rollouts resources |
| 58 | +[options="header"] |
| 59 | +|=== |
| 60 | +|Name |Description |
| 61 | +|`Rollout` |This CR enables the deployment of applications by using canary or blue-green deployment strategies. It replaces the in-built Kubernetes `Deployment` resource. |
| 62 | +|`AnalysisRun` |This CR is used to perform an analysis and aggregate the results of analysis to guide the user toward the successful deployment delivery of an application. The `AnalysisRun` CR is an instance of the `AnalysisTemplate` CR. |
| 63 | +|`AnalysisTemplate` |The `AnalysisTemplate` CR is a template file that provides instructions on how to query metrics. The result of these instructions is attached to a rollout in the form of the `AnalysisRun` CR. The `AnalysisTemplate` CR can be defined globally on the cluster or on a specific rollout. You can link a list of `AnalysisTemplate` to be used on replica sets by creating an `Experiment` custom resource. |
| 64 | +|`Experiment` |The `Experiment` CR is used to run short-lived analysis on an application during its deployment to ensure the application is deployed correctly. The `Experiment` CR can be used independently or run as part of the `Rollout` CR. |
| 65 | +|`Service` and `Ingress` | Argo Rollouts natively support routing traffic by services and ingresses by using the Service and Ingress controllers. |
| 66 | +|`Route` and `VirtualService` |The OpenShift `Route` and {SMProductName} `VirtualService` resources are used to perform traffic splitting across different application versions. |
| 67 | +|=== |
0 commit comments