github.com/argoproj/argo-cd/v3@v3.2.1/docs/operator-manual/installation.md (about)

     1  # Installation
     2  
     3  Argo CD has two type of installations: multi-tenant and core.
     4  
     5  ## Multi-Tenant
     6  
     7  The multi-tenant installation is the most common way to install Argo CD. This type of installation is typically used to service multiple application developer teams
     8  in the organization and maintained by a platform team.
     9  
    10  The end-users can access Argo CD via the API server using the Web UI or `argocd` CLI. The `argocd` CLI has to be configured using `argocd login <server-host>` command
    11  (learn more [here](../user-guide/commands/argocd_login.md)).
    12  
    13  Two types of installation manifests are provided:
    14  
    15  ### Non High Availability:
    16  
    17  Not recommended for production use. This type of installation is typically used during evaluation period for demonstrations and testing.
    18  
    19  * [install.yaml](https://github.com/argoproj/argo-cd/blob/master/manifests/install.yaml) - Standard Argo CD installation with cluster-admin access. Use this
    20    manifest set if you plan to use Argo CD to deploy applications in the same cluster that Argo CD runs
    21    in (i.e. kubernetes.svc.default). It will still be able to deploy to external clusters with inputted
    22    credentials.
    23  
    24    > Note: The ClusterRoleBinding in the installation manifest is bound to a ServiceAccount in the argocd namespace. 
    25    > Be cautious when modifying the namespace, as changing it may cause permission-related errors unless the ClusterRoleBinding is correctly adjusted to reflect the new namespace.
    26  
    27  * [namespace-install.yaml](https://github.com/argoproj/argo-cd/blob/master/manifests/namespace-install.yaml) - Installation of Argo CD which requires only
    28    namespace level privileges (does not need cluster roles). Use this manifest set if you do not
    29    need Argo CD to deploy applications in the same cluster that Argo CD runs in, and will rely solely
    30    on inputted cluster credentials. An example of using this set of manifests is if you run several
    31    Argo CD instances for different teams, where each instance will be deploying applications to
    32    external clusters. It will still be possible to deploy to the same cluster (kubernetes.svc.default)
    33    with inputted credentials (i.e. `argocd cluster add <CONTEXT> --in-cluster --namespace <YOUR NAMESPACE>`).
    34    With the default roles included, you will only be able to deploy Argo CD resources (Applications, ApplicationSets
    35    and AppProjects)  in the same cluster, as it's only supporting the GitOps mode with real deployments being
    36    done to external clusters.
    37    You can modify that by defining new roles and binding them to the `argocd-application-controller` service account.
    38  
    39    > Note: Argo CD CRDs are not included into [namespace-install.yaml](https://github.com/argoproj/argo-cd/blob/master/manifests/namespace-install.yaml).
    40    > and have to be installed separately. The CRD manifests are located in the [manifests/crds](https://github.com/argoproj/argo-cd/blob/master/manifests/crds) directory.
    41    > Use the following command to install them:
    42    > ```
    43    > kubectl apply -k https://github.com/argoproj/argo-cd/manifests/crds\?ref\=stable
    44    > ```
    45  
    46  ### High Availability:
    47  
    48  High Availability installation is recommended for production use. This bundle includes the same components but tuned for high availability and resiliency.
    49  
    50  * [ha/install.yaml](https://github.com/argoproj/argo-cd/blob/master/manifests/ha/install.yaml) - the same as install.yaml but with multiple replicas for
    51    supported components.
    52  
    53  * [ha/namespace-install.yaml](https://github.com/argoproj/argo-cd/blob/master/manifests/ha/namespace-install.yaml) - the same as namespace-install.yaml but
    54    with multiple replicas for supported components.
    55  
    56  ## Core
    57  
    58  The Argo CD Core installation is primarily used to deploy Argo CD in
    59  headless mode. This type of installation is most suitable for cluster
    60  administrators who independently use Argo CD and don't need
    61  multi-tenancy features. This installation includes fewer components
    62  and is easier to setup. The bundle does not include the API server or
    63  UI, and installs the lightweight (non-HA) version of each component.
    64  
    65  Installation manifest is available at [core-install.yaml](https://github.com/argoproj/argo-cd/blob/master/manifests/core-install.yaml).
    66  
    67  For more details about Argo CD Core please refer to the [official
    68  documentation](./core.md)
    69  
    70  ## Kustomize
    71  
    72  The Argo CD manifests can also be installed using Kustomize. It is recommended to include the manifest as a remote resource and apply additional customizations
    73  using Kustomize patches.
    74  
    75  
    76  ```yaml
    77  apiVersion: kustomize.config.k8s.io/v1beta1
    78  kind: Kustomization
    79  
    80  namespace: argocd
    81  resources:
    82  - https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
    83  ```
    84  
    85  For an example of this, see the [kustomization.yaml](https://github.com/argoproj/argoproj-deployments/blob/master/argocd/kustomization.yaml)
    86  used to deploy the [Argoproj CI/CD infrastructure](https://github.com/argoproj/argoproj-deployments#argoproj-deployments).
    87  
    88  #### Installing Argo CD in a Custom Namespace
    89  If you want to install Argo CD in a namespace other than the default argocd, you can use Kustomize to apply a patch that updates the ClusterRoleBinding to reference the correct namespace for the ServiceAccount. This ensures that the necessary permissions are correctly set in your custom namespace.
    90  
    91  Below is an example of how to configure your kustomization.yaml to install Argo CD in a custom namespace:
    92  ```yaml
    93  apiVersion: kustomize.config.k8s.io/v1beta1
    94  kind: Kustomization
    95  
    96  namespace: <your-custom-namespace>
    97  resources:
    98    - https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
    99  
   100  
   101  patches:
   102    - patch: |-
   103        - op: replace
   104          path: /subjects/0/namespace
   105          value: <your-custom-namespace>
   106      target:
   107        kind: ClusterRoleBinding
   108  ```
   109  
   110  This patch ensures that the ClusterRoleBinding correctly maps to the ServiceAccount in your custom namespace, preventing any permission-related issues during the deployment.
   111  
   112  ## Helm
   113  
   114  The Argo CD can be installed using [Helm](https://helm.sh/). The Helm chart is currently community maintained and available at
   115  [argo-helm/charts/argo-cd](https://github.com/argoproj/argo-helm/tree/main/charts/argo-cd).
   116  
   117  ## Supported versions
   118  
   119  For detailed information regarding Argo CD's version support policy, please refer to the [Release Process and Cadence documentation](https://argo-cd.readthedocs.io/en/stable/developer-guide/release-process-and-cadence/).
   120  
   121  ## Tested versions
   122  
   123  The following table shows the versions of Kubernetes that are tested with each version of Argo CD.
   124  
   125  {!docs/operator-manual/tested-kubernetes-versions.md!}