Skip to content

Commit

Permalink
docs: Add Argo CD Core documentation (#13225)
Browse files Browse the repository at this point in the history
* docs: Add Argo CD Core documentation

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>

* docs: Add Argo CD usage to the docs

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>

* docs: add Redis details in Argo CD Core doc

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>

* docs: minor fix

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>

* Address review comments

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>

* minor fix

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>

* Address review comments

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>

* minor fix

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>

---------

Signed-off-by: Leonardo Luz Almeida <leonardo_almeida@intuit.com>
  • Loading branch information
leoluz committed Apr 15, 2023
1 parent 60d14d8 commit c7f8ddd
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 12 deletions.
Binary file added docs/assets/argocd-core-components.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
99 changes: 99 additions & 0 deletions docs/operator-manual/core.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# Argo CD Core

## Introduction

Argo CD Core is a different installation that runs Argo CD in headless
mode. With this installation, you will have a fully functional GitOps
engine capable of getting the desired state from Git repositories and
applying it in Kubernetes.

The following groups of features won't be available in this
installation:

- Argo CD RBAC model
- Argo CD API
- OIDC based authentication

The following features will be partially available (see the
[usage](#using) section below for more details):

- Argo CD Web UI
- Argo CD CLI
- Multi-tenancy (strictly GitOps based on git push permissions)

A few use-cases that justify running Argo CD Core are:

- As a cluster admin, I want to rely on Kubernetes RBAC only.
- As a devops engineer, I don't want to learn a new API or depend on
another CLI to automate my deployments. I want instead rely in
Kubernetes API only.
- As a cluster admin, I don't want to provide Argo CD UI or Argo CD
CLI to developers.

## Architecture

Because Argo CD is designed with a component based architecture in
mind, it is possible to have a more minimalist installation. In this
case fewer components are installed and yet the main GitOps
functionality remains operational.

In the diagram below, the Core box, shows the components that will be
installed while opting for Argo CD Core:

![Argo CD Core](../assets/argocd-core-components.png)

Note that even if the Argo CD controller can run without Redis, it
isn't recommended. The Argo CD controller uses Redis as an important
caching mechanism reducing the load on Kube API and in Git. For this
reason, Redis is also included in this installation method.

## Installing

Argo CD Core can be installed by applying a single manifest file that
contains all the required resources.

Example:

```
export ARGOCD_VERSION=<desired argo cd release version (e.g. v2.7.0)>
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/$ARGOCD_VERSION/manifests/core-install.yaml
```

## Using

Once Argo CD Core is installed, users will be able to interact with it
by relying on GitOps. The available Kubernetes resources will be the
`Application` and the `ApplicationSet` CRDs. By using those resources,
users will be able to deploy and manage applications in Kubernetes.

It is still possible to use Argo CD CLI even when running Argo CD
Core. In this case, the CLI will spawn a local API server process that
will be used to handle the CLI command. Once the command is concluded,
the local API Server process will also be terminated. This happens
transparently for the user with no additional command required. Note
that Argo CD Core will rely only on Kubernetes RBAC and the user (or
the process) invoking the CLI needs to have access to the Argo CD
namespace with the proper permission in the `Application` and
`ApplicationSet` resources for executing a given command.

To use Argo CD CLI in core mode, it is required to pass the `--core`
flag with the `login` subcommand.

Example:

```bash
kubectl config set-context --current --namespace=argocd # change current kube context to argocd namespace
argocd login --core
```

Similarly, users can also run the Web UI locally if they prefer to
interact with Argo CD using this method. The Web UI can be started
locally by running the following command:

```
argocd admin dashboard -n argocd
```

Argo CD Web UI will be available at `http://localhost:8080`

22 changes: 10 additions & 12 deletions docs/operator-manual/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,19 +48,17 @@ High Availability installation is recommended for production use. This bundle in

## Core

The core installation is most suitable for cluster administrators who independently use Argo CD and don't need multi-tenancy features. This installation
includes fewer components and is easier to setup. The bundle does not include the API server or UI, and installs the lightweight (non-HA) version of each component.
The Argo CD Core installation is primarily used to deploy Argo CD in
headless mode. This type of installation is most suitable for cluster
administrators who independently use Argo CD and don't need
multi-tenancy features. This installation includes fewer components
and is easier to setup. The bundle does not include the API server or
UI, and installs the lightweight (non-HA) version of each component.

The end-users need Kubernetes access to manage Argo CD. The `argocd` CLI has to be configured using the following commands:
Installation manifest is available at [core-install.yaml](https://github.com/argoproj/argo-cd/blob/master/manifests/core-install.yaml).

```bash
kubectl config set-context --current --namespace=argocd # change current kube context to argocd namespace
argocd login --core
```

The Web UI is also available and can be started using the `argocd admin dashboard` command.

Installation manifests are available at [core-install.yaml](https://github.com/argoproj/argo-cd/blob/master/manifests/core-install.yaml).
For more details about Argo CD Core please refer to the [official
documentation](./core.md)

## Kustomize

Expand Down Expand Up @@ -97,4 +95,4 @@ For example if the latest minor version of ArgoCD are 2.4.3 and 2.3.5 while sup
* Argo CD 2.4.3 on Kubernetes 1.22
* Argo CD 2.3.5 on Kubernetes 1.24
* Argo CD 2.3.5 on Kubernetes 1.23
* Argo CD 2.3.5 on Kubernetes 1.22
* Argo CD 2.3.5 on Kubernetes 1.22
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ nav:
- operator-manual/index.md
- operator-manual/architecture.md
- operator-manual/installation.md
- operator-manual/core.md
- operator-manual/declarative-setup.md
- operator-manual/app-any-namespace.md
- operator-manual/ingress.md
Expand Down

0 comments on commit c7f8ddd

Please sign in to comment.