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!}