diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md deleted file mode 100644 index dd68b9251bd85..0000000000000 --- a/docs/CONTRIBUTING.md +++ /dev/null @@ -1 +0,0 @@ -Please refer to [the Contribution Guide](https://argo-cd.readthedocs.io/en/latest/developer-guide/contributing/) diff --git a/docs/SUPPORT.md b/docs/SUPPORT.md deleted file mode 100644 index 48fb337a78954..0000000000000 --- a/docs/SUPPORT.md +++ /dev/null @@ -1,6 +0,0 @@ -# Support - -1. Make sure you've read [understanding the basics](understand_the_basics.md) the [getting started guide](getting_started.md). -2. Looked for an answer in [the frequently asked questions](faq.md). -3. Ask a question in [the Argo CD Slack channel ⧉](https://argoproj.github.io/community/join-slack). -4. [Read issues, report a bug, or request a feature ⧉](https://github.com/argoproj/argo-cd/issues). diff --git a/docs/advanced/diffing.md b/docs/advanced/diffing.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/advanced/health.md b/docs/advanced/health.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/advanced/sync_waves.md b/docs/advanced/sync_waves.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/user-guide/sync_windows.md b/docs/advanced/sync_windows.md similarity index 100% rename from docs/user-guide/sync_windows.md rename to docs/advanced/sync_windows.md diff --git a/docs/assets/cluster-remove-ui.png b/docs/assets/cluster-remove-ui.png new file mode 100644 index 0000000000000..3038f58303256 Binary files /dev/null and b/docs/assets/cluster-remove-ui.png differ diff --git a/docs/assets/external-link-1.png b/docs/assets/external-link-1.png deleted file mode 100644 index 0d92fdb3e5744..0000000000000 Binary files a/docs/assets/external-link-1.png and /dev/null differ diff --git a/docs/assets/external-link.png b/docs/assets/external-link.png deleted file mode 100644 index b84251e813763..0000000000000 Binary files a/docs/assets/external-link.png and /dev/null differ diff --git a/docs/assets/repo-add-github-app.png b/docs/assets/repo-add-github-app.png deleted file mode 100644 index cd90aed18a616..0000000000000 Binary files a/docs/assets/repo-add-github-app.png and /dev/null differ diff --git a/docs/assets/repo-add-overview.png b/docs/assets/repo-add-overview.png index 303bf0dea7e5e..6daa8cfbe7906 100644 Binary files a/docs/assets/repo-add-overview.png and b/docs/assets/repo-add-overview.png differ diff --git a/docs/assets/screens/projects-01-where.png b/docs/assets/screens/projects-01-where.png new file mode 100644 index 0000000000000..edcb0eecedf9d Binary files /dev/null and b/docs/assets/screens/projects-01-where.png differ diff --git a/docs/assets/versions.css b/docs/assets/versions.css deleted file mode 100644 index 468bc2bff2001..0000000000000 --- a/docs/assets/versions.css +++ /dev/null @@ -1,172 +0,0 @@ -.md-header-nav__title { - display: flex; -} - -.dropdown-caret { - display: inline-block !important; - position: absolute; - right: 4px; -} - -.fa .fa-caret-down { - display: none !important; -} - -.rst-other-versions { - text-align: right; -} - -.rst-other-versions > dl, .rst-other-versions dt, .rst-other-versions small { - display: none; -} - -.rst-other-versions > dl:first-child { - display: flex !important; - flex-direction: column; - line-height: 0px !important; -} - -.rst-versions.shift-up .rst-other-versions { - display: flex !important; -} - -.rst-versions .rst-other-versions { - display: none; -} - -/* Version Warning */ -div[data-md-component=announce] { - background-color: rgba(255,145,0,.1); -} -div[data-md-component=announce]>div#announce-msg{ - color: var(--md-admonition-fg-color); - font-size: .8rem; - text-align: center; - margin: 15px; -} -div[data-md-component=announce]>div#announce-msg>a{ - color: var(--md-typeset-a-color); - text-decoration: underline; -} - -/* from https://assets.readthedocs.org/static/css/badge_only.css, -most styles have to be overriden here */ -.rst-versions{ - position: relative !important; - bottom: 0; - left: 0; - width: 100px !important; - background: hsla(173, 100%, 24%, 1) !important; - font-family: inherit !important; - z-index: 0 !important; -} -.rst-versions a{ - color:#2980B9; - text-decoration:none -} -.rst-versions .rst-badge-small{ - display:none -} -.rst-versions .rst-current-version{ - padding:12px; - background: hsla(173, 100%, 24%, 1) !important; - display:block; - text-align:right; - font-size:90%; - cursor:pointer; - color: white !important; - *zoom:1 -} -.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{ - display:table;content:"" -} -.rst-versions .rst-current-version:after{ - clear:both -} -.rst-versions .rst-current-version .fa{ - color:#fcfcfc -} -.rst-versions .rst-current-version .fa-caret-down{ - display: none; -} -.rst-versions.shift-up .rst-other-versions{ - display:block -} -.rst-versions .rst-other-versions{ - font-size:90%; - padding:12px; - color:gray; - display:none -} -.rst-versions .rst-other-versions hr{ - display: none !important; - height: 0px !important; - border: 0px; - margin: 0px !important; - padding: 0px; - border-top: none !important; -} -.rst-versions .rst-other-versions dd{ - display:inline-block; - margin:0 -} -.rst-versions .rst-other-versions dd a{ - display:inline-block; - padding: 1em 0em !important; - color:#fcfcfc; - font-size: .6rem !important; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - width: 80px; -} -.rst-versions .rst-other-versions dd a:hover{ - font-size: .7rem !important; - font-weight: bold; -} -.rst-versions.rst-badge{ - display: block !important; - width: 100px !important; - bottom: 0px !important; - right: 0px !important; - left:auto; - border:none; - text-align: center !important; - line-height: 0; -} -.rst-versions.rst-badge .icon-book{ - display: none; -} -.rst-versions.rst-badge .fa-book{ - display: none !important; -} -.rst-versions.rst-badge.shift-up .rst-current-version{ - text-align: left !important; -} -.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{ - display: none !important; -} -.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{ - display: none !important; -} -.rst-versions.rst-badge .rst-current-version{ - width: 70px !important; - height: 2.4rem !important; - line-height:2.4rem !important; - padding: 0px 5px !important; - display: inline-block !important; - font-size: .6rem !important; - overflow: hidden !important; - text-overflow: ellipsis !important; - white-space: nowrap !important; - text-align: left !important; -} -@media screen and (max-width: 768px){ - .rst-versions{ - width:85%; - display:none - } - .rst-versions.shift{ - display:block - } -} \ No newline at end of file diff --git a/docs/assets/versions.js b/docs/assets/versions.js deleted file mode 100644 index 24bed471fab7c..0000000000000 --- a/docs/assets/versions.js +++ /dev/null @@ -1,44 +0,0 @@ -setTimeout(function() { - const callbackName = 'callback_' + new Date().getTime(); - window[callbackName] = function (response) { - const div = document.createElement('div'); - div.innerHTML = response.html; - document.querySelector(".md-header-nav > .md-header-nav__title").appendChild(div); - const container = div.querySelector('.rst-versions'); - var caret = document.createElement('div'); - caret.innerHTML = "" - caret.classList.add('dropdown-caret') - div.querySelector('.rst-current-version').appendChild(caret); - div.querySelector('.rst-current-version').addEventListener('click', function() { - const classes = container.className.split(' '); - const index = classes.indexOf('shift-up'); - if (index === -1) { - classes.push('shift-up'); - } else { - classes.splice(index, 1); - } - container.className = classes.join(' '); - }); - } - - var CSSLink = document.createElement('link'); - CSSLink.rel='stylesheet'; - CSSLink.href = '/assets/versions.css'; - document.getElementsByTagName('head')[0].appendChild(CSSLink); - - var script = document.createElement('script'); - script.src = 'https://argo-cd.readthedocs.io/_/api/v2/footer_html/?'+ - 'callback=' + callbackName + '&project=argo-cd&page=&theme=mkdocs&format=jsonp&docroot=docs&source_suffix=.md&version=' + (window['READTHEDOCS_DATA'] || { version: 'latest' }).version; - document.getElementsByTagName('head')[0].appendChild(script); -}, 0); - -// VERSION WARNINGS -window.addEventListener("DOMContentLoaded", function() { - var rtdData = window['READTHEDOCS_DATA'] || { version: 'latest' }; - if (rtdData.version === "latest") { - document.querySelector("div[data-md-component=announce]").innerHTML = "
You are viewing the docs for an unreleased version of Argo CD, click here to go to the latest stable version.
" - } - else if (rtdData.version !== "stable") { - document.querySelector("div[data-md-component=announce]").innerHTML = "
You are viewing the docs for a previous version of Argo CD, click here to go to the latest stable version.
" - } -}); diff --git a/docs/basics/apps/destination.md b/docs/basics/apps/destination.md new file mode 100644 index 0000000000000..7407950dd86c4 --- /dev/null +++ b/docs/basics/apps/destination.md @@ -0,0 +1,62 @@ +# Application destination + +The *Application destination* defines where the *Application* should be synced +to. The *Destination* is defined in the `.spec.destination` part of the +*Application* Custom Resource. + +A *Destination* consists of a tuple of the *target cluster* and the target +*namespace*. + +A *Destination* must be permitted in the *Application's* parent +[Project](../projects/). + +## Target cluster + +The *target cluster*, as the name implies, defines the cluster where the +application's resource manifests should be deployed to. The target cluster is +specified using the `spec.destination.server` field, which contains either the +URL to the Kubernetes API of the cluster, or its +[symbolic name](../clusters/). + +There are two distinct types of values you can use here: + +* Either the local cluster where Argo CD is installed to, which is usually + `https://kubernetes.default.svc` with a symbolic name of `in-cluster`, or + +* A remote cluster, referenced by its API URL. Be aware that before you can + specify a remote cluster as a target cluster, it needs to be + [added to Argo CD's configuration properly](../clusters/). + +## Target namespace + +Depending on your Argo CD +[installation type](../../getting_started/install.md#installation-types), +your +[target cluster's configuration](../clusters/) +and your +[project settings](../projects/#cluster-resources), +your *Application* resource manifests may consist of cluster-scoped and +namespace-scoped resources. + +Cluster-scoped resources obviously won't need a target namespace, but Argo CD +needs to know to which target namespace the namespace-scoped resources shall +be deployed to. This is set via the `.spec.destination.namespace` field. + +The target namespace has to exist in the target cluster unless the +[sync option](../../syncing/) +[namespace auto-creation](../../syncing/) +has been set in the *Application* or an appropriate `Namespace` resource is part +of the *Application's* resource manifests. + +Argo CD will not overwrite existing namespace configuration in any resource, +so the final decision about a resource's target namespace will be made according +to these rules: + +* If a resource has set `.metadata.namespace`, its value will be used as the + target namespace for that resource. In this case, the namespace has either to + exist in the target cluster, or an appropriate `Namespace` resource has to + be delivered together with the application's resource manifests. + +* Otherwise, the *target namespace* as defined in the *Application's* + `.spec.destination.namespace` field will be used as the target namespace for + the resource. diff --git a/docs/basics/apps/health.md b/docs/basics/apps/health.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/basics/apps/history.md b/docs/basics/apps/history.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/basics/apps/index.md b/docs/basics/apps/index.md new file mode 100644 index 0000000000000..eb86a64fa1d8e --- /dev/null +++ b/docs/basics/apps/index.md @@ -0,0 +1,92 @@ +# Argo CD Applications + +## Overview + +*Applications* are at the heart of Argo CD. An *Application* is the entity that +tells Argo CD where to find resources to deploy, where to deploy them and when +to do it. + +You can think of an *Application* as a collection of one or more Kubernetes +resources that are managed together on a Kubernetes cluster. These resources can +be comprised of anything that is managable by the target Kubernetes cluster, +and can also possibly span over multiple namespaces. There is no artifical limit +of how many *Applications* you can configure in Argo CD, however, there might +be other limits (such as, compute resource constraints). + +Each *Application* must be configured to have at least + +* a unique + [Name](#application-name), +* a relationship to a + [Project](../projects/), +* a [Source](source.md) + to define the source of the *Application's* resources and +* a [Destination](destination.md) + to define the target of the *Application's* resources. + +Optionally, each *Application* can also have a +[Sync Policy](../../syncing/policy.md) +that controls how it will be synced to its destination. + +The relationship between a *Source* and an *Application* is always 1:n. That +is, each *Application* must have exactly one *Source*, while you can create +multiple *Applications* from a single *Source*. + +The same is true for the relationship between a *Destination* and an +*Application*, which is also alway 1:n. Each *Application* is managed on +exactly one *Destination*, but your *Destination* can contain multiple +*Applications*. This also means, you cannot install the same application to +multiple clusters, or multiple times on the same cluster. + +Along with its configuration, each *Application* also has a +[sync state](../../syncing/states.md) +that represents its current reconciliation status, and a +[history](history.md) +which contains recordings of previous states and reconciliation results. + +## Application name + +An *Application name* defines the name of the application. Application names +are also the names of the Custom Resource in your cluster (defined using the +`.metadata.name` field of the CR) and therefore must be unique within your Argo +CD installation. It is not possible to have two applications with the same +name, regardless of their *Source* and *Destination* configuration. + +It is recommended to use an easy to memorize naming scheme for applications, +especially if you are going to install a similar application to multiple +destinations. For example, if you have an *Application* you want to name +`monitoring`, and this application would be deployed to multiple clusters, + +## Parent project + +Each *Application* must belong to a parent +[project](../projects/) +that specifies certain rules and additional configuration for *Applications* +that belong to it. The project is specified using the `.spec.project` field, +which must contain the *name* of the project to associate the application to. + +Argo CD ships a default project named `default`, which can be used if you +haven't created other projects yet. + +## Sync Policy + +Each *Application* has a *Sync Policy* that defines how the *Application* should +be synced to the target *Cluster*. This policy is set in the `.spec.syncPolicy` +part of the *Application*. + +Specifying a *Sync Policy* for an *Application* is *optional*. If no policy is +configured, the default policy will be used. + +You can read more about *Sync Policies* in the +[Sync Policy documentation](../../syncing/policy.md). + +## Implementation details + +*Applications* are implemented as Kubernetes Custom Resources of kind +`Application` in the `argoproj.io/v1alpha1` API and can be managed either using +the Argo CD CLI, the web UI or the Kubernetes API. + +!!! note "About the location of Application resources" + *Application* resources live in the installation namespace in the cluster of + your Argo CD installation, which is `argocd` by default. *Application* resources + created in other namespaces or clusters will not be used up by Argo CD. diff --git a/docs/basics/apps/manage.md b/docs/basics/apps/manage.md new file mode 100644 index 0000000000000..438ae774e8a73 --- /dev/null +++ b/docs/basics/apps/manage.md @@ -0,0 +1,72 @@ +# Managing Applications + +You can manage *Applications* via the argocd CLI, the web UI or the Kubernetes +API. For managing *Applications* using either Argo CD's CLI or UI, +[RBAC permissions](../rbac.md). +must be set-up for your user to allow manipulation of `applications` objects. + +The default `admin` user already has appropriate permissions to manipulate all +existing *Applications* in your Argo CD installation. + +## Using the argocd CLI + +### List existing applications + +To list all applications that you have authorization for, use the +`argocd app list` command. This will also give you the most important details + about the applications: + +```bash +$ argocd app list +NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET +helm-guestbook https://kubernetes.default.svc helm-guestbook default Synced Healthy https://github.com/argoproj/argocd-example-apps helm-guestbook HEAD +``` + +### Get details about an application + +To get more detailed information about a specific *Application*, you can use the +`argocd app get` command. This will also display the resources that are managed +by the application: + +```bash +$ argocd app get helm-guestbook +Name: helm-guestbook +Project: default +Server: https://kubernetes.default.svc +Namespace: helm-guestbook +URL: http://127.0.0.1:8088/applications/helm-guestbook +Repo: https://github.com/argoproj/argocd-example-apps +Target: HEAD +Path: helm-guestbook +SyncWindow: Sync Allowed +Sync Policy: +Sync Status: Synced to HEAD (0d3eec0) +Health Status: Healthy + +GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE + Endpoints helm-guestbook helm-guestbook Succeeded PreSync helm-guestbook created + Service helm-guestbook helm-guestbook Synced Healthy service/helm-guestbook unchanged +apps Deployment helm-guestbook helm-guestbook Synced Healthy deployment.apps/helm-guestbook configured +``` + +### Create new applications + +To create a new *Application*, use the `argocd app create` command. The +following example creates an application `kustomize-guestbook` from the Argo +CD example applications repository, with a sync option to auto create the +target namespace: + +```bash +$ argocd app create kustomize-guestbook \ + --project default \ + --repo https://github.com/argoproj/argocd-example-apps \ + --path kustomize-guestbook \ + --dest-namespace kustomize-guestbook \ + --dest-server https://kubernetes.default.svc \ + --sync-option CreateNamespace=true +application 'kustomize-guestbook' created +``` + +## Using the web UI + +## Using the Kubernetes API diff --git a/docs/basics/apps/source.md b/docs/basics/apps/source.md new file mode 100644 index 0000000000000..83a76d43b9996 --- /dev/null +++ b/docs/basics/apps/source.md @@ -0,0 +1,78 @@ +# Application Source + +An *Application Source* tells Argo CD where the manifests for the application +resources reside, how to generate them and which version or revision of the +source to use. The application source is defined in `.spec.source` part of the +*Application* Custom Resource. + +Argo CD currently supports two types of sources to track application resources +from: Git and Helm repositories. Depending on the type of source you are +configuring for the application, specific configuration has to be performed. + +## Source Repository + +The `.spec.source.repoURL` field defines the repository where the resource +manifests are stored. It must be an URL that points to either a Git or a Helm +repository. For more details about supported URLs, authentication, etc. please +read the +[repositories documentation](../repositories/). + +### Manifests from a Git repository + +If you source manifests from a Git repository, you can use all the generators +that are supported by Argo CD to render the manifests before they are being +reconciled into your cluster. For list of available generator tools, please +have a look at the +[tools documentation](../../tools/) + +#### Path within repository + +The `.spec.source.path` defines the path within the repository that contains +your resources manifests. The path must be specified relative to the repository +root. If you want to use the top-level directory in your repository, use the +value `.` as path. + +The corresponding parameter for `argocd app create` to specify the path is +`--path`. + +#### Target revision + +The `.spec.source.targetRevision` defines the Git target revision to track. +This can take various formats, please refer to the +[Tracking strategies documentation](../../syncing/tracking.md) +for more information. + +The corresponding parameter for `argocd app create` to specify the target +revision is `--targetRevision`. + +### Manifests from a Helm repository + +If you source your manifests from a Helm repository, only Helm can be used to +render the manifests, obviously. + +#### Specifying the name of the Chart + +Instead of using `.spec.source.path`, you need to set `.spec.source.chart` to +the name of the Helm chart to be used. + +#### Specifying the version of the Chart + +Also, `.spec.source.targetRevision` specifies the version of the Helm chart to +use instead of a Git revision. + +For more information, refer to the +[Helm tooling documentation](../../tools/helm.md). + +## Source specific configuration + +Depending on the tool you use to render the manifests for a given *Application*, +additional configuration can or must be given. These can be simple options to +recursively consider all of the manifests found in directories below +`.spec.source.path`, a directive to use a pinned version of a given tool or more +complex settings, like +[parameter overrides](../../tools/) + +Please refer to the +[tool specific documenation](../../tools/) +for more information about the possible configuration options for each of the +supported tools. diff --git a/docs/basics/apps/state.md b/docs/basics/apps/state.md new file mode 100644 index 0000000000000..e9bf3439226a4 --- /dev/null +++ b/docs/basics/apps/state.md @@ -0,0 +1,66 @@ +# Application state & health + +## Sync Status + +The *Sync Status* represents the current state of reconciliation between the +*Source* and the *Destination*. The *Sync Status* can take one of the values: + +* `SYNCED` - All resources of the *Application* are in the desired state on the + destination. There is no deviation between the desired and the actual state. + +* `OUT OF SYNC` - Argo CD has determined a deviation between the desired state + and the actual state. When an *Application* transitions to this state, the + [Automated Sync Policy](../../syncing/policy.md) + (if enabled) will trigger a sync for the *Application*. + +* `UNKNOWN` - Argo CD currently cannot determine the desired state from the + *Application's* source or the actual state on the *Application's* destination. + This state usually occurs when a non-transient error occurs while comparing + actual and desired states. Argo CD will also let you know about the error. + +Argo CD determines the *Sync Status* by performing a *diff* between the +resources defined by the *Application Source* and the resources that actually +exist in the *Application Destination*. + +In some cases, resources on the target cluster get modified by other actors, +such as an operator or a controller, after they have been reconciled into the +target cluster. In such cases, the *Sync Status* would be constantly `OUT OF +SYNC`. + +The diffing behaviour can be changed to ignore such expected deviations, so that +they won't affect the *Sync Status*. You can read more about this in the +[Diffing Customization documentation](../../syncing/diffing.md) + +## Application Health + +The *Application Health* is an aggregate representation of the health of your +*Application's* resources. Whereas the *Sync Status* determines whether all of +the *Application's* resource manifests have been successfully reconciled into +the target Kubernetes cluster, the *Application Health* is an indicator whether +all of the resources also have been succesfully brought into a usable state by +Kubernetes. + +The *Application Health* can have one of the following states: + +* `HEALTHY` - all of the *Application's* resources *Application* are considered + healthy + +* `PROGRESSING` - at least one of the *Application's* resources is still in the + process of being brought to a healthy state + +* `DEGRADED` - at least one of the *Application's* resources is marked as being + in an erroneous state or is otherwise unhealthy. + +* `UNKNOWN` - the health state of the *Application's* resources could not be + determined. Argo CD will let you know about the reason for this. + +* `MISSING` - the *Application's* resources are missing, and Argo CD cannot + reliably determine the health status. This usually happens when *Application* + has not been synced, or when there is an error with the cache. + +* `SUSPENDED` - to be written + +To illustrate this a little, imagine a `Service` resource in your cluster of +type `LoadBalancer`. + +## History diff --git a/docs/basics/clusters/external.md b/docs/basics/clusters/external.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/basics/clusters/index.md b/docs/basics/clusters/index.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/basics/clusters/internal.md b/docs/basics/clusters/internal.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/basics/clusters/manage.md b/docs/basics/clusters/manage.md new file mode 100644 index 0000000000000..06872e011f403 --- /dev/null +++ b/docs/basics/clusters/manage.md @@ -0,0 +1,117 @@ +# Managing Clusters + +## Using the `argocd` CLI + +### Listing all clusters + +To list all clusters, run `argocd cluster list`. You should see a list of output with details about the clusters. + +```bash +$ argocd cluster list +SERVER NAME VERSION STATUS MESSAGE +https://kubernetes.default.svc in-cluster 1.16+ Successful +``` + +### Get details about a cluster + +To get more detailed information about a specific cluster, you can use `argocd cluster get `, where `server` is the server URL of the cluster. + +```bash +$ argocd cluster get https://kubernetes.default.svc +config: + tlsClientConfig: + insecure: false +connectionState: + attemptedAt: "2021-03-19T16:42:09Z" + message: "" + status: Successful +info: + applicationsCount: 6 + cacheInfo: + apisCount: 54 + lastCacheSyncTime: "2021-03-19T16:39:36Z" + resourcesCount: 504 + connectionState: + attemptedAt: "2021-03-19T16:42:09Z" + message: "" + status: Successful + serverVersion: 1.16+ +name: in-cluster +server: https://kubernetes.default.svc +serverVersion: 1.16+ +``` + +### Add a cluster + +To add a cluster using the CLI: + +1. Ensure you have a valid context in your kubeconfig for the cluster. Running `argocd cluster add` will list all available contexts. +2. Add the cluster with `argocd cluster add `. + +Adding a cluster with `argocd cluster add` installs a ServiceAccount named `argocd-manager` into the `kube-system` namespace of that context and binds the service account to an admin-level ClusterRole. Argo CD uses this service account token to perform its management tasks (i.e. deploy/monitoring). + +!!! Tip + To register the `in-cluster` cluster as a cluster with its own secret, run + `argocd cluster add --in-cluster` + +### Removing a cluster + +To remove a cluster using the CLI: + +1. Identify the server URL for the cluster. Running `argocd cluster list` will show a list of all clusters with their name and server. +2. Remove the cluster with `argocd cluster rm ` + +!!! Note + Removing a cluster will not remove the Applications associated with that cluster + +## Using the web UI + +### Get details about a cluster + +To view details about a cluster in the web UI, first go to `/settings/clusters/` in your Argo CD instance in your browser, then click on the row for a cluster. You can also click on the "edit" button in the top right corner to edit the cluster name or allowed namespaces. + +### Removing a cluster + +To remove a cluster using the web UI, first go to `/settings/clusters` in your Argo CD instance in your browser +Then, find the cluster and click on the three dots on the right hand side of the cluster row, then click "delete". + +![Screenshot showing a cluster row in the ArgoCD UI with the "remove" option visible](../../assets/cluster-remove-ui.png) + +## Using the kubernetes API + +Clusters are stored as kubernetes secrets, so it is possible (but not typically recommended) to manipulate them using the kubernetes API. + +### Listing all clusters + +To view all cluster secrets, you can run `kubectl get secret -l argocd.argoproj.io/secret-type="cluster"` in the namespace for your Argo CD instance. The secrets should be in the format `cluster--`, and have keys for `config`, `name`, `server`, and (optionally) `shard`. + +```bash +$ kubectl get secret -l argocd.argoproj.io/secret-type="cluster" -n argocd +NAME TYPE DATA AGE +cluster-kubernetes.default.svc-3396314289 Opaque 3 3s +``` + +```bash +$ kubectl get secret -n argocd cluster-kubernetes.default.svc-3396314289 -o yaml +apiVersion: v1 +data: + config: **** + name: ZG9ja2VyLWRlc2t0b3A= + server: aHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3Zj +kind: Secret +metadata: + annotations: + managed-by: argocd.argoproj.io + creationTimestamp: "2021-03-19T16:59:50Z" + labels: + argocd.argoproj.io/secret-type: cluster + name: cluster-kubernetes.default.svc-3396314289 + namespace: argocd + resourceVersion: "8980461" + selfLink: /api/v1/namespaces/argocd/secrets/cluster-kubernetes.default.svc-3396314289 + uid: 19b453ce-93e7-41f0-b59d-0c4e3b51f3a0 +``` + +### Removing a cluster + +To remove a cluster, identify the name of the cluster secret and run `kubectl delete secret `. diff --git a/docs/basics/projects/index.md b/docs/basics/projects/index.md new file mode 100644 index 0000000000000..5fb2a0570dcf3 --- /dev/null +++ b/docs/basics/projects/index.md @@ -0,0 +1,35 @@ +# Projects + +## Overview + +The so-called *Projects* (or, *AppProject* alternatively) play a vital role in +the multi-tenancy and governance model of Argo CD. It is important to understand +how *Projects* work and how they impact *Applications* and permissions. + +You can think of a *Project* as a way to group specific *Applications* together +to enforce a common set of governance rules and settings on those Applications, +with the settings being defined in the *Project*. For example, you can restrict +the kind of resources allowed in an *Application*, or restrict the *Application* +to source its manifests only from a certain repository, etc etc. Furthermore, +projects can issue *access tokens* scoped to applications within the given +project. These tokens can be used to access the Argo CD API for manipulation +of *Applications* associated with the project, and their permissions can be +configured using *Project* specific RBAC configuration. + +*Projects* and Applications have a *1:n* relationship, that is, multiple +*Applications* can belong to the same *Project*, while each *Application* can +only belong to one *Project*. Furthermore, the association of an *Application* +to a *Project* is mandatory. It is not possible to have an *Application* that +is not associated to a *Project*. + +An Argo CD *Project* is implemented as a Custom Resource `AppProject` in the +`argoproj.io/v1alpha1` API. + +All `AppProject` resources must exist in Argo CD's installation namespace +(`argocd` by default) in the cluster Argo CD is installed to in order to be +used by Argo CD. They cannot be installed in other clusters or namespaces. + +!!! tip "The default project" + Argo CD installs a default *Project* which permits everything and restricts + nothing. The default *Project* is called, well, `default`. + diff --git a/docs/basics/projects/manage.md b/docs/basics/projects/manage.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/basics/projects/roles.md b/docs/basics/projects/roles.md new file mode 100644 index 0000000000000..f15390fa1a8ff --- /dev/null +++ b/docs/basics/projects/roles.md @@ -0,0 +1,7 @@ +# Project roles + +## Overview + +## Access tokens + +## Project specific RBAC rules diff --git a/docs/basics/projects/settings.md b/docs/basics/projects/settings.md new file mode 100644 index 0000000000000..8a5134a0854f7 --- /dev/null +++ b/docs/basics/projects/settings.md @@ -0,0 +1,135 @@ +# Project level settings + +A project can enforce restrictions on the following entities: + +## Destinations + +A *Project* can define allowed *destinations* for any of the *Applications* +associated with the *Project*. A *Project's* destination restriction is a +tuple of a target cluster and a namespace, with wildcard pattern matching +supported. + +|Cluster|Namespace|Outcome| +|-|-|-| +|*|*|Allow all namespaces in all clusters| +|https://kubernetes.default.svc|*|Allow all namespaces in the local cluster (`kubernetes.default.svc`)| +|https://prod-*|*|Allow all namespaces in target clusters with URL starting with `https://prod-*`| +|*|dev-apps-*|Allow namespaces starting with `dev-apps-*` in all target clusters| + +When an *Application's* destination or one of the *Application's* resources +with a hardcoded target namespace do not match an allowed destination of the +*Project*, any sync operation will not be allowed. + +## Sources + +A *Project* can define allowed *sources* for any of the *Applications* +associated with the *Project*. A *Project's* allowed sources is a list of one +or more URL patterns that must match an *Application's* source repository. + +The corresponding CLI commands for adding or removing constraints on +project sources are: + +* `argocd proj add-source` - adds a source +* `argocd proj remove-source` - removes a source + +## Cluster resources + +A *Project* must define what kind of cluster-scoped resources *Applications* are +allowed to deploy. If an *Application's* resources contain any cluster-scoped +resources not allowed by the *Project*, any sync operation will not be allowed. + +Allowance of cluster-scoped resources is evaluated from two lists: + +* A positive-list to allow specific resources +* A negative-list to deny specific resources + +In order to decide if a resource is allowed, it is first matched against the +positive list. If it matches the positive-list, and is not found in the +negative-list, the resource is allowed. If it doesn't match the positive-list, +or is matched in the negative-list, the resource - and therefore the sync +operation - is not allowed. + +Each list is using tuples of Kubernetes' API `Group` and `Kind` to match the +resources of the *Application* against. Wildcard patterns are supported. Each +resource **must** match against the positive-list, and **must not** match +against the negative-list. + +The following table shows matching for a cluster-wide resource of Group/Kind +`rbac.authorization.k8s.io/ClusterRole` (the dash `-` means, not configured) + +|Positive Group| Positive Kind|Negative Group|Negative Kind|Allowed| +|-|-|-|-|-| +|`*`|`*`|-|-|Yes| +|`*`|`*`|`*`|`*`|No| +|`rbac*`|`*`|-|-|Yes| +|`*`|`*`|`rbac.authorization.k8s.io`|`ClusterRoleBinding`|Yes| + +A newly created *Project* without further configuration will forbid all +cluster-scoped resources to be managed. The `default` *Project* allows all +cluster-scoped resources to be managed. + +The corresponding CLI commands for adding or removing constraints on +cluster-scoped resources are: + +* `argocd proj allow-cluster-resource` - adds a cluster-scoped resource to the + positive-list +* `argocd proj deny-cluster-resource` - adds a cluster-scoped resource to the + negative-list + +## Namespaced resources + +A *Project* must define what kind of namespace-scoped resources *Applications* +are allowed to deploy. If an *Application's* resources contain any +namespace-scoped resources not allowed by the *Project*, any sync operation will +not be allowed. + +The decision tree for whether allowing a namespaced resource for deployment is +the same as for +[cluster scoped resources](#cluster-resources). + +A newly created *Project* without further configuration will forbid all +namespaced-scoped resources to be managed. The `default` *Project* allows all +namespaced-scoped resources to be managed. + +The corresponding CLI commands for adding or removing constraints on namespaced +resources are: + +* `argocd proj allow-namespace-resource` - adds a namespace-scoped resource to the + positive-list +* `argocd proj deny-namespace-resource` - adds a namespace-scoped resource to the + negative-list + +!!! tip "Resources in the core API group" + If you need to add resources from the *Core* API group, i.e. *Secret* or + *ConfigMap* resources, use the empty string `''` as API group. + +## GnuPG keys used for signature verification + +An advanced feature of Argo CD is to only allow syncs from Git revisions that +are signed using GnuPG (e.g. commited using `git commit -S`). You can read more +about this feature in its +[documentation](/advanced/gnupg.md). + +You can configure the GnuPG key IDs that commits need to be signed by for all +applications belonging to a certain project. Once at least one key ID is added, +signature verification will be enforced and any sync operation to a non-signed +revision, or a revision that is signed with a GnuPG key not in the allow-list +will be denied. + +The corresponding CLI commands for adding and removing GnuPG key IDs are: + +* `argocd proj add-signature-key` +* `argocd proj remove-signature-key` + +By default, GnuPG commit verification is disabled. + +## Sync windows + +A *Project* can define time windows that determine when an *Application* is +allowed to be synced to a cluster. You can read more about this feature in the +[Sync Windows documentation](/advanced/sync_windows.md). + +By default, a *Project* does not restrict syncing to any time windows and the +sync is allowed at all times. + +To manage sync windows, you can use the `argocd proj windows` command. diff --git a/docs/basics/rbac.md b/docs/basics/rbac.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/basics/repos/auth.md b/docs/basics/repos/auth.md new file mode 100644 index 0000000000000..90c16a6b6ab10 --- /dev/null +++ b/docs/basics/repos/auth.md @@ -0,0 +1,77 @@ +# Repository authentication + +## Available authentication methods + +If your repository needs authentication to be accessed, the following methods +are currently supported: + +||Basic Auth|TLS client certs|SSH private keys| +|-|-|-|-| +|Git via https|X|v1.3+|-| +|Git via ssh|-|-|X| +|Helm via https|v1.3+|v1.3+|-| + +Other authentication methods, such as AWS IAM or Google ServiceAccounts, are +not (yet) supported by ArgoCD. + +!!! note "Optional vs mandatory authentication" + Authentication is optional for Git and Helm repositories connected using the + HTTPS protocol. For Git repositories connected using SSH, authentication is + mandatory and you need to supply a private key for these connections. + +## Personal Access Token (PAT) + +Some Git providers require you to use a personal access token (PAT) instead of +username/password combination when accessing the repositories hosted there +via HTTPS. + +Providers known to enforce the use of PATs are: + +* GitHub +* GitLab +* BitBucket + +You can specify the PAT simply as the password (see below) when connecting +the custom repository to ArgoCD, using any or the empty string as the username. +The value for the username (any, empty or your actual username) varies from +provider to provider. + +## Credential templates + +Credential templates are a convinient method for accessing multiple repositories +with the same set of credentials, so you don't have to configure (and possibly +change regulary) credentials for every repository that you might want to access +from ArgoCD. Instead, you set up the credentials once using the template and all +repositories whose URL matches the templated one will re-use these credentials, +as long as they don't have credentials set up specifically. + +For example, you have a bunch of private repositories in the GitHub organisation +`yourorg`, all accessible using the same SSH key, you can set up a credential +template for accessing the repositories via SSH like follows: + +```bash +argocd repocreds add git@github.com:yourorg/ --ssh-private-key-path yourorg.key +``` + +Since the URL here is a pattern, no validation of the credentials supplied will +be performed at all during creation of the template. + +### Matching templates against repository URLs + +Pattern matching will be done on a *best match* basis, so you can have more than +one matching pattern for any given URL. The pattern that matches best (i.e. is +the more specific) will win. + +Consider you have templates for the following two patterns: + +* `https://github.com/yourorg` + +* `https://github.com/yourorg/special-` + +Now, for the repository `https://github.com/yourorg/yourrepo`, the first pattern +would match while for the repository `https://github.com/yourorg/special-repo` +both pattern will match, but the second one will win because it is more specific. + +The syntax for the `argocd repocreds` command is similar to that of the +`argocd repo` command, however it does not support any repository specific +configuration such as LFS support. diff --git a/docs/basics/repos/index.md b/docs/basics/repos/index.md new file mode 100644 index 0000000000000..602428364e403 --- /dev/null +++ b/docs/basics/repos/index.md @@ -0,0 +1,126 @@ +# Repositories + +## Introduction + +Since ArgoCD is a GitOps centric tool, the repositories containing your +application manifest(s) play a very vital role in the configuration of +ArgoCD. + +ArgoCD supports pulling the manifests from two distinct types of repositories: + +* Git repositories, such as GitHub, GitLab or privately hosted ones +* Helm repositories, such as Helm's stable charts, Harbor or Chart museum + +Git repositories can hold any kind of manifests or sources that ArgoCD +supports. You can even store Helm charts in your Git repositories. Git +repositories can be connected using either HTTPS or SSH protocols. + +Helm repositories, however, can only hold Helm charts by definition. Helm +repositories can only be connected using HTTPS. + +!!! note + Each application defined in ArgoCD is mapped to exactly one repository. + It is not possible to map two or more repositories to a single + application. If you need resources from more than one repository to define + your application, you can look at the advanced repository topics below. + +## Unconfigured vs. Configured repositories + +ArgoCD differentiates between *unconfigured* and *configured* repositories. +Unconfigured repositories are those that you can access without any further +configuration, while a configured repository is required when you need to +authenticate to the repository (and don't use credential templates as +described below), or when you need additional custom settings. + +Configured repositories were previously known as *private* repositories, but +have now evolved to be named *configured* repositories - because they don't +necessarily need to be private. + +You don't have to configure a repository in ArgoCD in order to use it as a +manifest source for your application - you can simply specify the URL of the +repository when creating an application, as long as the repository is allowed +as a source in the +[project's configuration](projects/#sources) and is publicly accesible or matches one of +the configured credential templates. Using an unconfigured repository as source +for your application is as simple as specifying its URL using the `--repo` +parameter to the `argocd app create` command. + +!!! note + Only Git repositories accessed using HTTPS are currently supported to be + connected without further configuration. Git repositories connected using + SSH must always be configured in ArgoCD as a repository or have a matching + credential template. Helm repositories must always have an explicit + configuration before they can be used. + +Using a repository that requires further configuration as the source for an +Application requires the repository to be configured, or *connected* first. +For further information on how to connect a repository, please see below. + +It is suggested that each repository that you will use as an +application's source is configured in ArgoCD first. + +## Specifying repository URLs + +Repository URLs should always be specified in a fully-qualified manner, that +is they should contain the protocol modifier (i.e. `https://` or `ssh://`) as +a prefix. Specifying custom ports for the connection to the repository server +is possible using the `:port` modifier in the `hostname` portion of the URL. +If a port is not specified, the default ports for the requested protocol +will be used: + +* Port 443 for HTTPS connections +* Port 22 for SSH connections + +Generally, URLs for repositories take the following form + +```bash +protocol://[username@]hostname[:port]/path/to/repo +``` + +The `username` URL modifier is only valid (and mandatory!) for connecting Git +repositories using SSH. Likewise, the `--username` parameter for the appropriate +CLI commands is only valid for connecting Git or Helm repositories via HTTPS. + +!!! note "Usernames for SSH repositories" + When using SSH to connect to the repository, you *must* specify the remote + username in the URL, i.e. using `ssh://user@example.com/your/repo`. Most + Git providers use `git` as remote username, further information should be + taken from the provider's documentation. + +There is an exception when specifying repository URLs for repositories that +are to be connected using SSH. These URLs can also be of `scp` style syntax +in the following form: + +```bash +username@hostname:path/to/repo +``` + +!!! warning "Remote port in SSH URLs" + Please note that with the `scp` style syntax, it is not possible to specify + a custom SSH server port in the URL, because the colon denominates the + beginning of the path, and the path will be relative to the SSH server's + working directory. If you need to connect via SSH to a non-standard port, + you **must** use `ssh://` style URLs to specify the repository to use. + +The following are some examples for valid repository URLs + +* `https://example.com/yourorg/repo` - specifies repository `/yourorg/repo` on + remote server `example.com`, connected via HTTPS on standard port. +* `https://example.com:9443/yourorg/repo` - specifies repository `/yourorg/repo` + on remote server `example.com`, connected via HTTPS on non-standard port + `9443`. +* `ssh://git@example.com/yourorg/repo` - specifies repository `/yourorg/repo` + on remote server `example.com`, connected via SSH on standard port and using + the remote username `git`. +* `git@example.com:yourorg/repo` - same as above, but denoted using an `scp` + URL. +* `ssh://git@example.com:2222/yourorg/repo` - specifies repository + `/yourorg/repo` on remote server `example.com`, connected via SSH on the + non-standard port `2222` and using `git` as the remote username. + +A common pitfall is the following `scp` style URL: + +* `git@example.com:2222/yourorg/repo` - This would **not** specify a repository + `/yourorg/repo` on remote server `example.com` with a non-standard port of + `2222`, but rather the repository `2222/yourorg/repo` on the remote server + `example.com` with the default SSH port `22`. diff --git a/docs/basics/repos/manage.md b/docs/basics/repos/manage.md new file mode 100644 index 0000000000000..37437022d373d --- /dev/null +++ b/docs/basics/repos/manage.md @@ -0,0 +1,221 @@ +# Managing configured repositories + +## Overview + +You can manage configured repositories for use with ArgoCD in three ways: + +* Using the CLI's `repo` sub-command +* Using the web UI repository configuration, to be found at the `Repositories` + module in the `Settings` sections +* Using declarative setup. For further information, please refer to the + appropriate chapter in the + [Operator Manual](). + +With each of the methods above, you can add, edit and remove custom repositories +and their configuration. + +## Using the CLI + +### Listing all configured repositories + +You can list all currently configured repositories using the CLI: + +```shell +argocd repo list +``` + +If you prefer to use the web UI, you find the list of configured repositories +at the `Settings` -> `Repositories` page. + +### Adding a repository configuration + +Connecting a repository via HTTPS (TLS) is supported for both repository +types, `git` and `helm`. The URL for a Git repository connected using HTTPS +must be fully-qualified and prefixed with the protocol, i.e. `https://`. The +URL may have an optional port modifier if the repository is served from a non +default port, i.e. `https://example.com:9443`. + +!!! note "A few words on HTTP redirects" + ArgoCD does not follow HTTP redirects when handling repositories. Some Git + providers, notably GitLab and possibly also self-hosted GitLab, will send + you a HTTP redirect if your repository URL is not suffixed with `.git`. If + you receive a HTTP redirect on connecting the repository, try appending + the `.git` suffix to your URL. For example, if you use the URL + `https://gitlab.com/you/repo` and GitLab sends you a HTTP 301, try to use + `https://gitlab.com/you/repo.git` as the URL to your repository. + +To add a configuration for a Git repository to be connected using HTTPS, you +can use the `argocd repo add` command, specifying a repository URL starting +with `https://`. + +In its most simple form, the command + +```bash +argocd repo add https://example.com/your/repo +``` + +will add the Git repository at `https://example.com/your/repo` to the ArgoCD +configuration. This simple form however is not different from using an +unconfigured repository, except it will give you the perks from selecting +the repository as an application's source in the UI from a dropdown list. + +You can add custom configuration for the repository by using the following set +of command line switches to the `repo add` command: + +|Switch|Argument|Description| +|-|-|-| +|`--insecure-skip-server-verification`|None|Disables verification of the server's TLS certificate or SSH known host signature, depending on the connection method. You do not want use this switch for production environments.| +|`--username`|`username`|Use `username` for authenticating at the server (only valid for HTTPS repositories and in combination with `--password`)| +|`--password`|`password`|Use `password` for authenticating at the server (only valid for HTTPS repositories and in combination with `--username`)| +|`--ssh-private-key-path`|`path`|Use SSH private key from `path` to authenticate at the remote repository. Only valid and also mandatory for SSH repositories. The private key will be stored in a secret on the cluster ArgoCD runs on.| +|`--type`|`type`|Specify that repository is of type `repotype`. Current possible values are `helm` and `git` (defaults to `git`)| +|`--name`|`name`|Specify the name of the repository to be `name`. This is mandatory when adding Helm repositories and optional when adding Git repositories.| +|`--tls-client-cert-path`|`path`|Specifies to read the TLS client certificate used for authentication from `path` on the local machine. The certificate will be stored in a secret on the cluster ArgoCD is running on.| +|`--tls-client-cert-key-path`|`path`|Specifies to read the key for TLS client certificate used for authentication from `path` on the local machine. The key will be stored in a secret on the cluster ArgoCD is running on.| +|`--enable-lfs`|None|Enables the support for Git Large File Storage (LFS) on the repository. Only valid for Git repositories.| + +### Examples: Adding repositories via CLI + +The following command adds a Git repository from `https://github.com/foo/repo`, +using `foo` as the username and `bar` as the password for authentication: + +```bash +argocd repo add --username foo --password bar https://github.com/foo/repo +``` + +The following command uses a TLS client certificate in addition to the +username/password combination to connect the repository. The cert is read +from `~/mycert.crt`, the corresponding key from `~/mycert.key`: + +```bash +argocd repo add --username foo --password \ + --tls-client-cert-path ~/mycert.key \ + --tls-client-cert-key-path ~/mykey.key \ + https://secure.example.com/repos/myrepo +``` + +The following command adds the repository without any authentication, but will +ignore the TLS certificate presented by the server. Needless to say, this should +only be used for testing purposes in non-prod environments. Instead of using +this insecure option, you should consider adding the appropriate TLS certificate +or CA certificate to ArgoCD so it will be able to correctly verify the server's +certificate: + +```bash +argocd repo add --insecure-skip-server-verification \ + https://self-hosted.example.com/repos/myrepo +``` + +Finally, the following command adds a repository using the SSH protocol, the +private SSH key from your local path `~/.ssh/id_rsa` for authentication and +`git` as the remote username: + +```bash +argocd repo add --ssh-private-key-path ~/.ssh/id_rsa \ + ssh://git@example.com/yourorg/repo +``` + +## Using the web UI + +Repositories can also be configured using the web UI. The configuration module +can be found by clicking on `Settings` and then `Repositories`. + +You first need to chose what type of connection your repository should use, and +then click on the appropriate button: + +![Choose repo type](/assets/repo-mgmt-ui-add.png) + +The following will walk you through the dialogues for connecting the repository, +depending on which method you chose: + +**SSH:** + +![Connect repo using SSH](/assets/repo-mgmt-ui-add-ssh.png) + +1. The name of the repository. This is optional for Git repositories. + +1. The URL to the repository. This must be either a `ssh://` or `scp` style + URL (see discussions about URLs above) + +1. Paste the SSH private key to use. This must be a valid SSH private key, + including the start and end denominators. + +1. If you want to skip the server's SSH host key signature verification, tick + this box. You should **not** use this in production environments. + +1. If you require Git LFS, tick this box. + +1. Click on "Connect" to connect the repository to ArgoCD. + +!!! note "Note about SSH private keys" + You should make sure that the SSH private key you are pasting does not + contain any unintentional line breaks. If using a terminal, you should + use `cat ~/yourkey`, mark everything including the + `-----BEGIN OPENSSH PRIVATE KEY-----` and + `-----END OPENSSH PRIVATE KEY-----` markers, copy the selection to your + clipboard and paste it into the UI's field. + +**HTTPS:** + +![Add repository using HTTPS](/assets/repo-mgmt-ui-add-https.png) + +1. The type of the repository. This can either be `git` or `helm`. Please note + that when `helm` is selected, another input field for `Repository name` will + appear, which you need to fill out as well. + +1. The URL to the repository. This must be a `https://` URL. + +1. The username to use for authenticating at the repository (optional) + +1. The password to use for authenticating at the repository (optional) + +1. An optional TLS client certificate to use for authentication. This should + be a paste of the full Base64-encoded TLS certificate, including the + `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----` markers. + The certificate will be stored in a secret on the cluster ArgoCD is running + on. + +1. If you have specified a TLS client certificate, you must provide the + corresponding private key as well. This should be a paste of the full + Base64-encoded private key, including the + `-----BEGIN PRIVATE KEY-----` and `-----END PRIVATE KEY-----` markers. The + private key will be stored in a secret on the cluster ArgoCD is running on. + +1. To skip verification of the repository server's certificate, tick this box. + Using this setting in production environments is not recommended. + +1. If you require Git LFS support with this repository, tick this box. + +1. Click "Connect" to validate configuration and add the repository to ArgoCD + configuration. + +### Removing a repository configuration + +!!! warning + If you remove a repository configuration that is in active use by any of + your applications, ArgoCD will not prevent you to do so. All applications + that use the repository whose configuration has been removed as source, + will now access the repository as if it would be unconfigured - this could + lead to breakage due to unaccessible manifests. + +#### Remove using the CLI + +To remove a repository configuration from ArgoCD using the CLI, simply issue +the following command: + +```bash +argocd repo rm https://example.com/your/repo +``` + +#### Using the web UI + +Navigate to the repositories configuration at `Settings` -> `Repositories` and +find the repository you want to unconfigure in the list of configured +repositories. Then click on the three vertical dots next to the entry and select +`Disconnect` from the dropdown, as shown on the following screenshot: + +![Remove repository](/assets/repo-mgmt-ui-remove.png) + +The UI will ask for your final confirmation before removing the repository from +the configuration. + diff --git a/docs/basics/repositories.md b/docs/basics/repositories.md new file mode 100644 index 0000000000000..f11adacf2d77c --- /dev/null +++ b/docs/basics/repositories.md @@ -0,0 +1,433 @@ +# Working with repositories + +## Introduction + +Since ArgoCD is a GitOps centric tool, the repositories containing your +application manifest(s) play a very vital role in the configuration of +ArgoCD. + +ArgoCD supports pulling the manifests from two distinct types of repositories: + +* Git repositories, such as GitHub, GitLab or privately hostes ones +* Helm repositories, such as Helm's stable charts, Harbor or Chart museum + +Git repositories can hold any kind of manifests or sources that ArgoCD +supports. You can even store Helm charts in your Git repositories. Git +repositories can be connected using either HTTPS or SSH protocols. + +Helm repositories, however, can only hold Helm charts by definition. Helm +repositories can only be connected using HTTPS. + +!!! note + Each application defined in ArgoCD is mapped to exactly one repository. + It is not possible to map two or more repositories to a single + application. If you need resources from more than one repository to define + your application, you can look at the advanced repository topics below. + +## Unconfigured vs. Configured repositories + +ArgoCD differentiates between *unconfigured* and *configured* repositories. +Unconfigured repositories are those that you can access without any further +configuration, while a configured repository is required when you need to +authenticate to the repository (and don't use credential templates as +described below), or when you need additional custom settings. + +Configured repositories were previously known as *private* repositories, but +have now evolved to be named *configured* repositories - because they don't +necessarily need to be private. + +You don't have to configure a repository in ArgoCD in order to use it as a +manifest source for your application - you can simply specify the URL of the +repository when creating an application, as long as the repository is allowed +as a source in the +[project's configuration](projects/#sources) and is publicly accesible or matches one of +the configured credential templates. Using an unconfigured repository as source +for your application is as simple as specifying its URL using the `--repo` +parameter to the `argocd app create` command. + +!!! note + Only Git repositories accessed using HTTPS are currently supported to be + connected without further configuration. Git repositories connected using + SSH must always be configured in ArgoCD as a repository or have a matching + credential template. Helm repositories must always have an explicit + configuration before they can be used. + +Using a repository that requires further configuration as the source for an +Application requires the repository to be configured, or *connected* first. +For further information on how to connect a repository, please see below. + +It is suggested that you configure each repository that you will use as an +application's source is configured in ArgoCD first. + +## Repository authentication + +### Available authentication methods + +If your repository needs authentication to be accessed, the following methods +are currently supported: + +||Basic Auth|TLS client certs|SSH private keys| +|-|-|-|-| +|Git via https|X|v1.3+|-| +|Git via ssh|-|-|X| +|Helm via https|v1.3+|v1.3+|-| + +Other authentication methods, such as AWS IAM or Google ServiceAccounts, are +not (yet) supported by ArgoCD. + +!!! note "Optional vs mandatory authentication" + Authentication is optional for Git and Helm repositories connected using the + HTTPS protocol. For Git repositories connected using SSH, authentication is + mandatory and you need to supply a private key for these connections. + +### Personal Access Token (PAT) + +Some Git providers require you to use a personal access token (PAT) instead of +username/password combination when accessing the repositories hosted there +via HTTPS. + +Providers known to enforce the use of PATs are: + +* GitHub +* GitLab +* BitBucket + +You can specify the PAT simply as the password (see below) when connecting +the custom repository to ArgoCD, using any or the empty string as the username. +The value for the username (any, empty or your actual username) varies from +provider to provider. + +## Specifying repository URLs + +Repository URLs should always be specified in a fully-qualified manner, that +is they should contain the protocol modifier (i.e. `https://` or `ssh://`) as +a prefix. Specifying custom ports for the connection to the repository server +is possible using the `:port` modifier in the `hostname` portion of the URL. +If a port is not specified, the default ports for the requested protocol +will be used: + +* Port 443 for HTTPS connections +* Port 22 for SSH connections + +Generally, URLs for repositories take the following form + +```bash +protocol://[username@]hostname[:port]/path/to/repo +``` + +The `username` URL modifier is only valid (and mandatory!) for connecting Git +repositories using SSH. Likewise, the `--username` parameter for the appropriate +CLI commands is only valid for connecting Git or Helm repositories via HTTPS. + +!!! note "Usernames for SSH repositories" + When using SSH to connect to the repository, you *must* specify the remote + username in the URL, i.e. using `ssh://user@example.com/your/repo`. Most + Git providers use `git` as remote username, further information should be + taken from the provider's documentation. + +There is an exception when specifying repository URLs for repositories that +are to be connected using SSH. These URLs can also be of `scp` style syntax +in the following form: + +```bash +username@hostname:path/to/repo +``` + +!!! warning "Remote port in SSH URLs" + Please note that with the `scp` style syntax, it is not possible to specify + a custom SSH server port in the URL, because the colon denominates the + beginning of the path, and the path will be relative to the SSH server's + working directory. If you need to connect via SSH to a non-standard port, + you **must** use `ssh://` style URLs to specify the repository to use. + +The following are some examples for valid repository URLs + +* `https://example.com/yourorg/repo` - specifies repository `/yourorg/repo` on + remote server `example.com`, connected via HTTPS on standard port. +* `https://example.com:9443/yourorg/repo` - specifies repository `/yourorg/repo` + on remote server `example.com`, connected via HTTPS on non-standard port + `9443`. +* `ssh://git@example.com/yourorg/repo` - specifies repository `/yourorg/repo` + on remote server `example.com`, connected via SSH on standard port and using + the remote username `git`. +* `git@example.com:yourorg/repo` - same as above, but denoted using an `scp` + URL. +* `ssh://git@example.com:2222/yourorg/repo` - specifies repository + `/yourorg/repo` on remote server `example.com`, connected via SSH on the + non-standard port `2222` and using `git` as the remote username. + +A common pitfall is the following `scp` style URL: + +* `git@example.com:2222/yourorg/repo` - This would **not** specify a repository + `/yourorg/repo` on remote server `example.com` with a non-standard port of + `2222`, but rather the repository `2222/yourorg/repo` on the remote server + `example.com` with the default SSH port `22`. + +## Managing configured repositories + +You can manage configured repositories for use with ArgoCD in three ways: + +* Using the CLI's `repo` sub-command +* Using the web UI repository configuration, to be found at the `Repositories` + module in the `Settings` sections +* Using declarative setup. For further information, please refer to the + appropriate chapter in the + [Operator Manual](). + +With each of the methods above, you can add, edit and remove custom repositories +and their configuration. + +### Listing all configured repositories + +You can list all currently configured repositories using the CLI: + +```shell +argocd repo list +``` + +If you prefer to use the web UI, you find the list of configured repositories +at the `Settings` -> `Repositories` page. + +### Adding a repository configuration + +Connecting a repository via HTTPS (TLS) is supported for both repository +types, `git` and `helm`. The URL for a Git repository connected using HTTPS +must be fully-qualified and prefixed with the protocol, i.e. `https://`. The +URL may have an optional port modifier if the repository is served from a non +default port, i.e. `https://example.com:9443`. + +!!! note "A few words on HTTP redirects" + ArgoCD does not follow HTTP redirects when handling repositories. Some Git + providers, notably GitLab and possibly also self-hosted GitLab, will send + you a HTTP redirect if your repository URL is not suffixed with `.git`. If + you receive a HTTP redirect on connecting the repository, try appending + the `.git` suffix to your URL. For example, if you use the URL + `https://gitlab.com/you/repo` and GitLab sends you a HTTP 301, try to use + `https://gitlab.com/you/repo.git` as the URL to your repository. + +#### Configuration using the CLI + +To add a configuration for a Git repository to be connected using HTTPS, you +can use the `argocd repo add` command, specifying a repository URL starting +with `https://`. + +In its most simple form, the command + +```bash +argocd repo add https://example.com/your/repo +``` + +will add the Git repository at `https://example.com/your/repo` to the ArgoCD +configuration. This simple form however is not different from using an +unconfigured repository, except it will give you the perks from selecting +the repository as an application's source in the UI from a dropdown list. + +You can add custom configuration for the repository by using the following set +of command line switches to the `repo add` command: + +|Switch|Argument|Description| +|-|-|-| +|`--insecure-skip-server-verification`|None|Disables verification of the server's TLS certificate or SSH known host signature, depending on the connection method. You do not want use this switch for production environments.| +|`--username`|`username`|Use `username` for authenticating at the server (only valid for HTTPS repositories and in combination with `--password`)| +|`--password`|`password`|Use `password` for authenticating at the server (only valid for HTTPS repositories and in combination with `--username`)| +|`--ssh-private-key-path`|`path`|Use SSH private key from `path` to authenticate at the remote repository. Only valid and also mandatory for SSH repositories. The private key will be stored in a secret on the cluster ArgoCD runs on.| +|`--type`|`type`|Specify that repository is of type `repotype`. Current possible values are `helm` and `git` (defaults to `git`)| +|`--name`|`name`|Specify the name of the repository to be `name`. This is mandatory when adding Helm repositories and optional when adding Git repositories.| +|`--tls-client-cert-path`|`path`|Specifies to read the TLS client certificate used for authentication from `path` on the local machine. The certificate will be stored in a secret on the cluster ArgoCD is running on.| +|`--tls-client-cert-key-path`|`path`|Specifies to read the key for TLS client certificate used for authentication from `path` on the local machine. The key will be stored in a secret on the cluster ArgoCD is running on.| +|`--enable-lfs`|None|Enables the support for Git Large File Storage (LFS) on the repository. Only valid for Git repositories.| + +**Some examples:** + +The following command adds a Git repository from `https://github.com/foo/repo`, +using `foo` as the username and `bar` as the password for authentication: + +```bash +argocd repo add --username foo --password bar https://github.com/foo/repo +``` + +The following command uses a TLS client certificate in addition to the +username/password combination to connect the repository. The cert is read +from `~/mycert.crt`, the corresponding key from `~/mycert.key`: + +```bash +argocd repo add --username foo --password \ + --tls-client-cert-path ~/mycert.key \ + --tls-client-cert-key-path ~/mykey.key \ + https://secure.example.com/repos/myrepo +``` + +The following command adds the repository without any authentication, but will +ignore the TLS certificate presented by the server. Needless to say, this should +only be used for testing purposes in non-prod environments. Instead of using +this insecure option, you should consider adding the appropriate TLS certificate +or CA certificate to ArgoCD so it will be able to correctly verify the server's +certificate: + +```bash +argocd repo add --insecure-skip-server-verification \ + https://self-hosted.example.com/repos/myrepo +``` + +Finally, the following command adds a repository using the SSH protocol, the +private SSH key from your local path `~/.ssh/id_rsa` for authentication and +`git` as the remote username: + +```bash +argocd repo add --ssh-private-key-path ~/.ssh/id_rsa \ + ssh://git@example.com/yourorg/repo +``` + +#### Configuration using the web UI + +Repositories can also be configured using the web UI. The configuration module +can be found by clicking on `Settings` and then `Repositories`. + +You first need to chose what type of connection your repository should use, and +then click on the appropriate button: + +![Choose repo type](/assets/repo-mgmt-ui-add.png) + +The following will walk you through the dialogues for connecting the repository, +depending on which method you chose: + +**SSH:** + +![Connect repo using SSH](/assets/repo-mgmt-ui-add-ssh.png) + +1. The name of the repository. This is optional for Git repositories. + +1. The URL to the repository. This must be either a `ssh://` or `scp` style + URL (see discussions about URLs above) + +1. Paste the SSH private key to use. This must be a valid SSH private key, + including the start and end denominators. + +1. If you want to skip the server's SSH host key signature verification, tick + this box. You should **not** use this in production environments. + +1. If you require Git LFS, tick this box. + +1. Click on "Connect" to connect the repository to ArgoCD. + +!!! note "Note about SSH private keys" + You should make sure that the SSH private key you are pasting does not + contain any unintentional line breaks. If using a terminal, you should + use `cat ~/yourkey`, mark everything including the + `-----BEGIN OPENSSH PRIVATE KEY-----` and + `-----END OPENSSH PRIVATE KEY-----` markers, copy the selection to your + clipboard and paste it into the UI's field. + +**HTTPS:** + +![Add repository using HTTPS](/assets/repo-mgmt-ui-add-https.png) + +1. The type of the repository. This can either be `git` or `helm`. Please note + that when `helm` is selected, another input field for `Repository name` will + appear, which you need to fill out as well. + +1. The URL to the repository. This must be a `https://` URL. + +1. The username to use for authenticating at the repository (optional) + +1. The password to use for authenticating at the repository (optional) + +1. An optional TLS client certificate to use for authentication. This should + be a paste of the full Base64-encoded TLS certificate, including the + `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----` markers. + The certificate will be stored in a secret on the cluster ArgoCD is running + on. + +1. If you have specified a TLS client certificate, you must provide the + corresponding private key as well. This should be a paste of the full + Base64-encoded private key, including the + `-----BEGIN PRIVATE KEY-----` and `-----END PRIVATE KEY-----` markers. The + private key will be stored in a secret on the cluster ArgoCD is running on. + +1. To skip verification of the repository server's certificate, tick this box. + Using this setting in production environments is not recommended. + +1. If you require Git LFS support with this repository, tick this box. + +1. Click "Connect" to validate configuration and add the repository to ArgoCD + configuration. + +### Removing a repository configuration + +!!! warning + If you remove a repository configuration that is in active use by any of + your applications, ArgoCD will not prevent you to do so. All applications + that use the repository whose configuration has been removed as source, + will now access the repository as if it would be unconfigured - this could + lead to breakage due to unaccessible manifests. + +#### Remove using the CLI + +To remove a repository configuration from ArgoCD using the CLI, simply issue +the following command: + +```bash +argocd repo rm https://example.com/your/repo +``` + +#### Using the web UI + +Navigate to the repositories configuration at `Settings` -> `Repositories` and +find the repository you want to unconfigure in the list of configured +repositories. Then click on the three vertical dots next to the entry and select +`Disconnect` from the dropdown, as shown on the following screenshot: + +![Remove repository](/assets/repo-mgmt-ui-remove.png) + +The UI will ask for your final confirmation before removing the repository from +the configuration. + +## Managing credential templates + +Credential templates are a convinient method for accessing multiple repositories +with the same set of credentials, so you don't have to configure (and possibly +change regulary) credentials for every repository that you might want to access +from ArgoCD. Instead, you set up the credentials once using the template and all +repositories whose URL matches the templated one will re-use these credentials, +as long as they don't have credentials set up specifically. + +For example, you have a bunch of private repositories in the GitHub organisation +`yourorg`, all accessible using the same SSH key, you can set up a credential +template for accessing the repositories via SSH like follows: + +```bash +argocd repocreds add git@github.com:yourorg/ --ssh-private-key-path yourorg.key +``` + +Since the URL here is a pattern, no validation of the credentials supplied will +be performed at all during creation of the template. + +### Matching templates against repository URLs + +Pattern matching will be done on a *best match* basis, so you can have more than +one matching pattern for any given URL. The pattern that matches best (i.e. is +the more specific) will win. + +Consider you have templates for the following two patterns: + +* `https://github.com/yourorg` + +* `https://github.com/yourorg/special-` + +Now, for the repository `https://github.com/yourorg/yourrepo`, the first pattern +would match while for the repository `https://github.com/yourorg/special-repo` +both pattern will match, but the second one will win because it is more specific. + +The syntax for the `argocd repocreds` command is similar to that of the +`argocd repo` command, however it does not support any repository specific +configuration such as LFS support. + +## Self-signed TLS certificates, custom CAs and SSH Known Hosts + +## Advanced repository topics + +### Git LFS + +### Git submodules + +### Separating Helm values and Helm charts \ No newline at end of file diff --git a/docs/basics/terminology.md b/docs/basics/terminology.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/bug_triage.md b/docs/bug_triage.md deleted file mode 100644 index db64436ce40fd..0000000000000 --- a/docs/bug_triage.md +++ /dev/null @@ -1,175 +0,0 @@ -# Bug triage proposal for ArgoCD - -## Situation - -Lots of issues on our issue tracker. Many of them not bugs, but questions, -or very environment related. It's easy to lose oversight. - -Also, it's not obvious which bugs are important. Which bugs should be fixed -first? Can we make a new release with the current inventory of open bugs? -Is there still a bug that should make it to the new release? - -## Proposal - -We should agree upon a common issue triage process. The process must be lean -and efficient, and should support us and the community looking into the GH -issue tracker at making the following decisions: - -* Is it even a real bug? -* If it is a real bug, what is the current status of the bug (next to "open" or "closed")? -* How important is it to fix the bug? -* How urgent is it to fix the bug? -* Who will be working to fix the bug? - -We need new methods to classify our bugs, at least into these categories: - -* validity: Does the issue indeed represent a true bug -* severity: Denominates what impact the bug has -* priority: Denominates the urgency of the fix - -## Triage process - -GH issue tracker provides us with the possibility to label issues. Using these -labels is not perfect, but should give a good start. Each new issue created in -our issue tracker should be correctly labeled during its lifecycle, so keeping -an overview would be simplified by the ability to filter for labels. - -The triage process could be as follows: - -1. A new bug issue is created by someone on the tracker - -1. The first person of the core team to see it will start the triage by classifying - the issue (see below). This will indicate the creator that we have noticed the - issue, and that it's not "fire & forget" tracker. - -1. Initial classification should be possible even when much of the information is - missing yet. In this case, the issue would be classified as such (see below). - Again, this indicates that someone has noticed the issue, and there is activity - in progress to get the required information. - -1. Classification of the issue can change over its life-cycle. However, once the - issue has been initially classified correctly (that is, with something else than - the "placeholder" classification discussed above), changes to the classification - should be discussed first with the person who initially classified the issue. - -## Classification - -We have introduced some new labels in the GH issue tracker for classifying the -bug issues. These labels are prefixed with the string `bug/`, and should be -applied to all new issues in our tracker. - -### Classification requires more information - -If it is not yet possible to classify the bug, i.e. because more information is -required to correctly classify the bug, you should always set the label -`bug/in-triage` to make it clear that triage process has started but could not -yet be completed. - -### Issue type - -If it's clear that a bug issue is not a bug, but a question or reach for support, -it should be marked as such: - -* Remove any of the labels prefixed `bug/` that might be attached to the issue -* Remove the label `bug` from the issue -* Add the label `inquiry` to the issue - -If the inquiry turns out to be something that should be covered by the docs, but -is not, the following actions should be taken: - -* The title of the issue should be adapted that it will be clear that the bug - affects the docs, not the code -* The label `documentation` should be attached to the issue - -If the issue is too confusing (can happen), another possibility is to close the -issue and create a new one as described in above (with a meaningful title and -the label `documentation` attached to it). - -### Validity - -Some reported bugs may be invalid. It could be a user error, a misconfiguration -or something along these lines. If it is clear that the bug falls into one of -these categories: - -* Remove any of the labels prefixed `bug/` that might be attached to the issue -* Add the label `invalid` to the issue -* Retain the `bug` label to the issue -* Close the issue - -When closing the issue, it is important to let requester know why the issue -has been closed. The optimum would be to provide a solution to his request -in the comments of the issue, or at least pointers to possible solutions. - -### Regressions - -Sometimes it happens that something that worked in a previous release does -not work now when it should still work. If this is the case, the following -actions should be done - -* Add the label `regression` to the issue -* Continue with triage - -### Severity - -It is important to find out how severe the impact of a bug is, and to label -the bug with this information. For this purpose, the following labels exist -in our tracker: - -* `bug/severity:minor`: Bug has limited impact and maybe affects only an - edge-case. Core functionality is not affected, and there is no data loss - involved. Something might not work as expected. Example of these kind of - bugs could be a CLI command that is not working as expected, a glitch in - the UI, wrong documentation, etc. - -* `bug/severity:major`: Malfunction in one of the core components, impacting - a majority of users or one of the core functionalities in ArgoCD. There is - no data loss involved, but for example a sync is not working due to a bug - in ArgoCD (and not due to user error), manifests fail to render, etc. - -* `bug/severity:critical`: A critical bug in ArgoCD, possibly resulting in - data loss, integrity breach or severe degraded overall functionality. - -### Priority - -The priority of an issue indicates how quickly the issue should be fixed and -released. This information should help us in deciding the target release for -the fix, and whether a bug would even justify a dedicated patch release. The -following labels can be used to classify bugs into their priority: - -* `bug/priority:low`: Will be fixed without any specific target release. - -* `bug/priority:medium`: Should be fixed in the minor or major release, which - ever comes first. - -* `bug/priority:high`: Should be fixed with the next patch release. - -* `bug/priority:urgent`: Should be fixed immediately and might even justify a - dedicated patch release. - -The priority should be set according to the value of the fix and the attached -severity. This means. a bug with a severity of `minor` could still be classified -with priority `high`, when it is a *low hanging fruit* (i.e. the bug is easy to -fix with low effort) and contributes to overall user experience of ArgoCD. - -Likewise, a bug classified with a severity of `major` could still have a -priority of `medium`, if there is a workaround available for the bug which -mitigates the effects of the bug to a bearable extend. - -Bugs classified with a severity of `critical` most likely belong to either -the `urgent` priority, or to the `high` category when there is a workaround -available. - -Bugs that have a `regression`label attached (see Regression above) should -usually be handled with higher priority, so those kind of issues will most -likely have a priority of `high` or `urgent` attached to it. - -## Summary - -Applying a little discipline when working with our issue tracker could greatly -help us in making informed decision about which bugs to fix when. Also, it -would help us to get a clear view whether we can do for example a new minor -release without having forgot any outstanding issues that should make it into -that release. - -If we are able to work with classification of bug issues, we might want to -extend the triage for enhancement proposals and PRs as well. diff --git a/docs/cli_installation.md b/docs/cli_installation.md deleted file mode 100644 index 3ed832bdaeeea..0000000000000 --- a/docs/cli_installation.md +++ /dev/null @@ -1,79 +0,0 @@ -# Installation - -You can download the latest Argo CD version from [the latest release page of this repository](https://github.com/argoproj/argo-cd/releases/latest), which will include the `argocd` CLI. - -## Linux - -You can view the latest version of Argo CD at the link above or run the following command to grab the version: - -```bash -VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/') -``` - -Replace `VERSION` in the command below with the version of Argo CD you would like to download: - -```bash -curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-linux-amd64 -``` - -Make the `argocd` CLI executable: - -```bash -chmod +x /usr/local/bin/argocd -``` - -You should now be able to run `argocd` commands. - -## Mac - -### Homebrew - -```bash -brew install argocd -``` - -### Download With Curl - -You can view the latest version of Argo CD at the link above or run the following command to grab the version: - -```bash -VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/') -``` - -Replace `VERSION` in the command below with the version of Argo CD you would like to download: - -```bash -curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-darwin-amd64 -``` - -Make the `argocd` CLI executable: - -```bash -chmod +x /usr/local/bin/argocd -``` - -After finishing either of the instructions above, you should now be able to run `argocd` commands. - - -## Windows - -### Download With Powershell: Invoke-WebRequest - -You can view the latest version of Argo CD at the link above or run the following command to grab the version: - -```powershell -$version = (Invoke-RestMethod https://api.github.com/repos/argoproj/argo-cd/releases/latest).tag_name -``` - -Replace `$version` in the command below with the version of Argo CD you would like to download: - -```powershell -$url = "https://github.com/argoproj/argo-cd/releases/download/" + $version + "/argocd-windows-amd64.exe" -$output = "argocd.exe" - -Invoke-WebRequest -Uri $url -OutFile $output -``` -Also please note you will probably need to move the file into your PATH. - - -After finishing the instructions above, you should now be able to run `argocd` commands. diff --git a/docs/community.md b/docs/community.md new file mode 100644 index 0000000000000..752442d4d42c3 --- /dev/null +++ b/docs/community.md @@ -0,0 +1,7 @@ +# Community & Ecosystem + +The following is a curated list of community projects related to Argo CD. If +you have a cool project that benefits the general Argo CD community and want +to have it listed here, please feel free to +[submit a PR]() +with the addition to this document! diff --git a/docs/core_concepts.md b/docs/core_concepts.md deleted file mode 100644 index 08495edf41f6f..0000000000000 --- a/docs/core_concepts.md +++ /dev/null @@ -1,16 +0,0 @@ -# Core Concepts - -Let's assume you're familiar with core Git, Docker, Kubernetes, Continuous Delivery, and GitOps concepts. - -* **Application** A group of Kubernetes resources as defined by a manifest. This is a Custom Resource Definition (CRD). -* **Application source type** Which **Tool** is used to build the application. -* **Target state** The desired state of an application, as represented by files in a Git repository. -* **Live state** The live state of that application. What pods etc are deployed. -* **Sync status** Whether or not the live state matches the target state. Is the deployed application the same as Git says it should be? -* **Sync** The process of making an application move to its target state. E.g. by applying changes to a Kubernetes cluster. -* **Sync operation status** Whether or not a sync succeeded. -* **Refresh** Compare the latest code in Git with the live state. Figure out what is different. -* **Health** The health of the application, is it running correctly? Can it serve requests? -* **Tool** A tool to create manifests from a directory of files. E.g. Kustomize or Ksonnet. See **Application Source Type**. -* **Configuration management tool** See **Tool**. -* **Configuration management plugin** A custom tool. diff --git a/docs/developer-guide/api-docs.md b/docs/developer-guide/api-docs.md deleted file mode 100644 index b96d0c5b46a90..0000000000000 --- a/docs/developer-guide/api-docs.md +++ /dev/null @@ -1,31 +0,0 @@ -# API Docs - -You can find the Swagger docs by setting the path to `/swagger-ui` in your Argo CD UI's. E.g. [http://localhost:8080/swagger-ui](http://localhost:8080/swagger-ui). - -## Authorization - -You'll need to authorize your API using a bearer token. To get a token: - -```bash -$ curl $ARGOCD_SERVER/api/v1/session -d $'{"username":"admin","password":"password"}' -{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1Njc4MTIzODcsImlzcyI6ImFyZ29jZCIsIm5iZiI6MTU2NzgxMjM4Nywic3ViIjoiYWRtaW4ifQ.ejyTgFxLhuY9mOBtKhcnvobg3QZXJ4_RusN_KIdVwao"} -``` - -> <=v1.2 - -Then pass using the HTTP `SetCookie` header, prefixing with `argocd.token`: - -```bash -$ curl $ARGOCD_SERVER/api/v1/applications --cookie "argocd.token=$ARGOCD_TOKEN" -{"metadata":{"selfLink":"/apis/argoproj.io/v1alpha1/namespaces/argocd/applications","resourceVersion":"37755"},"items":...} -``` - -> v1.3 - -Then pass using the HTTP `Authorization` header, prefixing with `Bearer `: - -```bash -$ curl $ARGOCD_SERVER/api/v1/applications -H "Authorization: Bearer $ARGOCD_TOKEN" -{"metadata":{"selfLink":"/apis/argoproj.io/v1alpha1/namespaces/argocd/applications","resourceVersion":"37755"},"items":...} -``` - diff --git a/docs/developer-guide/ci-pipeline-failed.png b/docs/developer-guide/ci-pipeline-failed.png deleted file mode 100644 index 0c336f202dcb3..0000000000000 Binary files a/docs/developer-guide/ci-pipeline-failed.png and /dev/null differ diff --git a/docs/developer-guide/ci.md b/docs/developer-guide/ci.md deleted file mode 100644 index 79e9309fe1aec..0000000000000 --- a/docs/developer-guide/ci.md +++ /dev/null @@ -1,74 +0,0 @@ -# Continuous Integration (CI) - -## Troubleshooting CI checks - -You can click on the "Details" link next to the failed step to get more information about the failure. - -![Failed GitHub Action](ci-pipeline-failed.png) - -To read more about The GitHub actions are configured in [`ci-build.yaml`](https://github.com/argoproj/argo-cd/blob/master/.github/workflows/ci-build.yaml). - -### Can I retrigger the checks without pushing a new commit? - -Since the CI pipeline is triggered on Git commits, there is currently no (known) way on how to retrigger the CI checks without pushing a new commit to your branch. - -If you are absolutely sure that the failure was due to a failure in the pipeline, and not an error within the changes you commited, you can push an empty commit to your branch, thus retriggering the pipeline without any code changes. To do so, issue - -```bash -git commit --allow-empty -m "Retrigger CI pipeline" -git push origin -``` - -### Why does the build step fail? - -First, make sure the failing build step succeeds on your machine. Remember the containerized build toolchain is available, too. - -If the build is failing at the `Ensuring Gopkg.lock is up-to-date` step, you need to update the dependencies before you push your commits. Run `make dep-ensure` and `make dep` and commit the changes to `Gopkg.lock` to your branch. - -### Why does the codegen step fail? - -If the codegen step fails with "Check nothing has changed...", chances are high that you did not run `make codegen`, or did not commit the changes it made. You should double check by running `make codegen` followed by `git status` in the local working copy of your branch. Commit any changes and push them to your GH branch to have the CI check it again. - -A second common case for this is, when you modified any of the auto generated assets, as these will be overwritten upon `make codegen`. - -Generally, this step runs `codegen` and compares the outcome against the Git branch it has checked out. If there are differences, the step will fail. - -See [What checked-in code is generated and where does it come from?](faq.md#what-checked-in-code-is-generated-and-how-is-it-generated) for more information. - -### Why does the lint step fail? - -Your code failed to lint correctly, or modifications were performed by the `golangci-lint` process. - -* You should run `make lint`, or `golangci-lint run` on your local branch and fix all the issues. - -* If you receive an error like, ```File is not `goimports`-ed (goimports)```, the file is not formatted correctly. Run `gofmt -w $file.go` to resolve this linter error. - -### Why does the test or e2e steps fail? - -You should check for the cause of the failure in the check's detail page as described above. This will give you the name of the test that has failed, and details about why. If your test are passing locally (using the virtualized toolchain), chances are that the test might be flaky and will pass the next time it is run. Please retrigger the CI pipeline as described above and see if the test step now passes. - -## Updating The Builder Image - -Login to Docker Hub: - -```bash -docker login -``` - -Build image: - -```bash -make builder-image IMAGE_NAMESPACE=argoproj IMAGE_TAG=v1.0.0 -``` - -## Public CD - -Every commit to master is built and published to `docker.pkg.github.com/argoproj/argo-cd/argocd:-`. The list of images is available at -https://github.com/argoproj/argo-cd/packages. - -!!! note - Github docker registry [requires](https://github.community/t5/GitHub-Actions/docker-pull-from-public-GitHub-Package-Registry-fail-with-quot/m-p/32888#M1294) authentication to read - even publicly available packages. Follow the steps from Kubernetes [documentation](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry) - to configure image pull secret if you want to use `docker.pkg.github.com/argoproj/argo-cd/argocd` image. - -The image is automatically deployed to the dev Argo CD instance: [https://cd.apps.argoproj.io/](https://cd.apps.argoproj.io/) diff --git a/docs/developer-guide/contributing.md b/docs/developer-guide/contributing.md deleted file mode 100644 index ec55c3760d08d..0000000000000 --- a/docs/developer-guide/contributing.md +++ /dev/null @@ -1,293 +0,0 @@ -# Contribution guide - -## Preface - -We want to make contributing to ArgoCD as simple and smooth as possible. - -This guide shall help you in setting up your build & test environment, so that you can start developing and testing bug fixes and feature enhancements without having to make too much effort in setting up a local toolchain. - -If you want to submit a PR, please read this document carefully, as it contains important information guiding you through our PR quality gates. - -As is the case with the development process, this document is under constant change. If you notice any error, or if you think this document is out-of-date, or if you think it is missing something: Feel free to submit a PR or submit a bug to our GitHub issue tracker. - -If you need guidance with submitting a PR, or have any other questions regarding development of ArgoCD, do not hesitate to [join our Slack](https://argoproj.github.io/community/join-slack) and get in touch with us in the `#argo-dev` channel! - -## Before you start - -You will need at least the following things in your toolchain in order to develop and test ArgoCD locally: - -* A Kubernetes cluster. You won't need a fully blown multi-master, multi-node cluster, but you will need something like K3S, Minikube or microk8s. You will also need a working Kubernetes client (`kubectl`) configuration in your development environment. The configuration must reside in `~/.kube/config` and the API server URL must point to the IP address of your local machine (or VM), and **not** to `localhost` or `127.0.0.1` if you are using the virtualized development toolchain (see below) - -* You will also need a working Docker runtime environment, to be able to build and run images. -The Docker version must be fairly recent, and support multi-stage builds. You should not work as root. Make your local user a member of the `docker` group to be able to control the Docker service on your machine. - -* Obviously, you will need a `git` client for pulling source code and pushing back your changes. - -* Last but not least, you will need a Go SDK and related tools (such as GNU `make`) installed and working on your development environment. The minimum required Go version for building ArgoCD is **v1.14.0**. - -* We will assume that your Go workspace is at `~/go`. - -!!! note - **Attention minikube users**: By default, minikube will create Kubernetes client configuration that uses authentication data from files. This is incompatible with the virtualized toolchain. So if you intend to use the virtualized toolchain, you have to embed this authentication data into the client configuration. To do so, issue `minikube config set embed-certs true` and restart your minikube. Please also note that minikube using the Docker driver is currently not supported with the virtualized toolchain, because the Docker driver exposes the API server on 127.0.0.1 hard-coded. If in doubt, run `make verify-kube-connect` to find out. - -## Submitting PRs - -When you submit a PR against ArgoCD's GitHub repository, a couple of CI checks will be run automatically to ensure your changes will build fine and meet certain quality standards. Your contribution needs to pass those checks in order to be merged into the repository. - -In general, it might be beneficial to only submit a PR for an existing issue. Especially for larger changes, an Enhancement Proposal should exist before. - -!!!note - - Please make sure that you always create PRs from a branch that is up-to-date with the latest changes from ArgoCD's master branch. Depending on how long it takes for the maintainers to review and merge your PR, it might be necessary to pull in latest changes into your branch again. - -Please understand that we, as an Open Source project, have limited capacities for reviewing and merging PRs to ArgoCD. We will do our best to review your PR and give you feedback as soon as possible, but please bear with us if it takes a little longer as expected. - -The following read will help you to submit a PR that meets the standards of our CI tests: - -### Title of the PR - -Please use a meaningful and concise title for your PR. This will help us to pick PRs for review quickly, and the PR title will also end up in the Changelog. - -We use the [Semantic PR title checker](https://github.com/zeke/semantic-pull-requests) to categorize your PR into one of the following categories: - -* `fix` - Your PR contains one or more code bug fixes -* `feat` - Your PR contains a new feature -* `docs` - Your PR improves the documentation -* `chore` - Your PR improves any internals of ArgoCD, such as the build process, unit tests, etc - -Please prefix the title of your PR with one of the valid categories. For example, if you chose the title your PR `Add documentation for GitHub SSO integration`, please use `docs: Add documentation for GitHub SSO integration` instead. - -### Contributor License Agreement - -Every contributor to ArgoCD must have signed the current Contributor License Agreement (CLA). You only have to sign the CLA when you are a first time contributor, or when the agreement has changed since your last time signing it. The main purpose of the CLA is to ensure that you hold the required rights for your contribution. The CLA signing is an automated process. - -You can read the current version of the CLA [here](https://cla-assistant.io/argoproj/argo-cd). - -### PR template checklist - -Upon opening a PR, the details will contain a checklist from a template. Please read the checklist, and tick those marks that apply to you. - -### Automated builds & tests - -After you have submitted your PR, and whenever you push new commits to that branch, GitHub will run a number of Continuous Integration checks against your code. It will execute the following actions, and each of them has to pass: - -* Build the Go code (`make build`) -* Generate API glue code and manifests (`make codegen`) -* Run a Go linter on the code (`make lint`) -* Run the unit tests (`make test`) -* Run the End-to-End tests (`make test-e2e`) -* Build and lint the UI code (`make lint-ui`) -* Build the `argocd` CLI (`make cli`) - -If any of these tests in the CI pipeline fail, it means that some of your contribution is considered faulty (or a test might be flaky, see below). - -### Code test coverage - -We use [CodeCov](https://codecov.io) in our CI pipeline to check for test coverage, and once you submit your PR, it will run and report on the coverage difference as a comment within your PR. If the difference is too high in the negative, i.e. your submission introduced a significant drop in code coverage, the CI check will fail. - -Whenever you develop a new feature or submit a bug fix, please also write appropriate unit tests for it. If you write a completely new module, please aim for at least 80% of coverage. -If you want to see how much coverage just a specific module (i.e. your new one) has, you can set the `TEST_MODULE` to the (fully qualified) name of that module with `make test`, i.e.: - -```bash - make test TEST_MODULE=github.com/argoproj/argo-cd/server/cache -... -ok github.com/argoproj/argo-cd/server/cache 0.029s coverage: 89.3% of statements -``` - -## Local vs Virtualized toolchain - -ArgoCD provides a fully virtualized development and testing toolchain using Docker images. It is recommended to use those images, as they provide the same runtime environment as the final product and it is much easier to keep up-to-date with changes to the toolchain and dependencies. But as using Docker comes with a slight performance penalty, you might want to setup a local toolchain. - -Most relevant targets for the build & test cycles in the `Makefile` provide two variants, one of them suffixed with `-local`. For example, `make test` will run unit tests in the Docker container, `make test-local` will run it natively on your local system. - -If you are going to use the virtualized toolchain, please bear in mind the following things: - -* Your Kubernetes API server must listen on the interface of your local machine or VM, and not on `127.0.0.1` only. -* Your Kubernetes client configuration (`~/.kube/config`) must not use an API URL that points to `localhost` or `127.0.0.1`. - -You can test whether the virtualized toolchain has access to your Kubernetes cluster by running `make verify-kube-connect` (*after* you have setup your development environment, as described below), which will run `kubectl version` inside the Docker container used for running all tests. - -The Docker container for the virtualized toolchain will use the following local mounts from your workstation, and possibly modify its contents: - -* `~/go/src` - Your Go workspace's source directory (modifications expected) -* `~/.cache/go-build` - Your Go build cache (modifications expected) -* `~/.kube` - Your Kubernetes client configuration (no modifications) -* `/tmp` - Your system's temp directory (modifications expected) - -## Setting up your development environment - -The following steps are required no matter whether you chose to use a virtualized or a local toolchain. - -### Clone the ArgoCD repository from your personal fork on GitHub - -* `mkdir -p ~/go/src/github.com/argoproj` -* `cd ~/go/src/github.com/argoproj` -* `git clone https://github.com/yourghuser/argo-cd` -* `cd argo-cd` - -### Optional: Setup an additional Git remote - -While everyone has their own Git workflow, the author of this document recommends to create a remote called `upstream` in your local copy pointing to the original ArgoCD repository. This way, you can easily keep your local branches up-to-date by merging in latest changes from the ArgoCD repository, i.e. by doing a `git pull upstream master` in your locally checked out branch. To create the remote, run `git remote add upstream https://github.com/argoproj/argo-cd` - -### Install the must-have requirements - -Make sure you fulfill the pre-requisites above and run some preliminary tests. Neither of them should report an error. - -* Run `kubectl version` -* Run `docker version` -* Run `go version` - -### Build (or pull) the required Docker image - -Build the required Docker image by running `make test-tools-image` or pull the latest version by issuing `docker pull argoproj/argocd-test-tools`. - -The `Dockerfile` used to build these images can be found at `test/container/Dockerfile`. - -### Test connection from build container to your K8s cluster - -Run `make verify-kube-connect`, it should execute without error. - -If you receive an error similar to the following: - -``` -The connection to the server 127.0.0.1:6443 was refused - did you specify the right host or port? -make: *** [Makefile:386: verify-kube-connect] Error 1 -``` - -you should edit your `~/.kube/config` and modify the `server` option to point to your correct K8s API (as described above). - -### Using k3d - -[k3d](https://github.com/rancher/k3d) is a lightweight wrapper to run [k3s](https://github.com/rancher/k3s), a minimal Kubernetes distribution, in docker. Because it's running in a docker container, you're dealing with docker's internal networking rules when using k3d. A typical Kubernetes cluster running on your local machine is part of the same network that you're on so you can access it using **kubectl**. However, a Kubernetes cluster running within a docker container (in this case, the one launched by make) cannot access 0.0.0.0 from inside the container itself, when 0.0.0.0 is a network resource outside the container itself (and/or the container's network). This is the cost of a fully self-contained, disposable Kubernetes cluster. The following steps should help with a successful `make verify-kube-connect` execution. - -1. Find your host IP by executing `ifconfig` on Mac/Linux and `ipconfig` on Windows. For most users, the following command works to find the IP address. - - * For Mac: - - ``` - IP=`ifconfig en0 | grep inet | grep -v inet6 | awk '{print $2}'` - echo $IP - ``` - - * For Linux: - - ``` - IP=`ifconfig eth0 | grep inet | grep -v inet6 | awk '{print $2}'` - echo $IP - ``` - - Keep in mind that this IP is dynamically assigned by the router so if your router restarts for any reason, your IP might change. - -2. Edit your ~/.kube/config and replace 0.0.0.0 with the above IP address. - -3. Execute a `kubectl version` to make sure you can still connect to the Kubernetes API server via this new IP. Run `make verify-kube-connect` and check if it works. - -4. Finally, so that you don't have to keep updating your kube-config whenever you spin up a new k3d cluster, add `--api-port $IP:6550` to your **k3d cluster create** command, where $IP is the value from step 1. An example command is provided here: - -``` -k3d cluster create my-cluster --wait --k3s-server-arg '--disable=traefik' --api-port $IP:6550 -p 443:443@loadbalancer -``` - -## The development cycle - -When you have developed and possibly manually tested the code you want to contribute, you should ensure that everything will build correctly. Commit your changes to the local copy of your Git branch and perform the following steps: - -### Pull in all build dependencies - -As build dependencies change over time, you have to synchronize your development environment with the current specification. In order to pull in all required dependencies, issue: - -* `make dep-ui` - -ArgoCD recently migrated to Go modules. Usually, dependencies will be downloaded on build time, but the Makefile provides two targets to download and vendor all dependencies: - -* `make mod-download` will download all required Go modules and -* `make mod-vendor` will vendor those dependencies into the ArgoCD source tree - -### Generate API glue code and other assets - -ArgoCD relies on Google's [Protocol Buffers](https://developers.google.com/protocol-buffers) for its API, and this makes heavy use of auto-generated glue code and stubs. Whenever you touched parts of the API code, you must re-generate the auto generated code. - -* Run `make codegen`, this might take a while -* Check if something has changed by running `git status` or `git diff` -* Commit any possible changes to your local Git branch, an appropriate commit message would be `Changes from codegen`, for example. - -!!!note - There are a few non-obvious assets that are auto-generated. You should not change the autogenerated assets, as they will be overwritten by a subsequent run of `make codegen`. Instead, change their source files. Prominent examples of non-obvious auto-generated code are `swagger.json` or the installation manifest YAMLs. - -### Build your code and run unit tests - -After the code glue has been generated, your code should build and the unit tests should run without any errors. Execute the following statements: - -* `make build` -* `make test` - -These steps are non-modifying, so there's no need to check for changes afterwards. - -### Lint your code base - -In order to keep a consistent code style in our source tree, your code must be well-formed in accordance to some widely accepted rules, which are applied by a Linter. - -The Linter might make some automatic changes to your code, such as indentation fixes. Some other errors reported by the Linter have to be fixed manually. - -* Run `make lint` and observe any errors reported by the Linter -* Fix any of the errors reported and commit to your local branch -* Finally, after the Linter reports no errors anymore, run `git status` or `git diff` to check for any changes made automatically by Lint -* If there were automatic changes, commit them to your local branch - -If you touched UI code, you should also run the Yarn linter on it: - -* Run `make lint-ui` -* Fix any of the errors reported by it - -## Setting up a local toolchain - -For development, you can either use the fully virtualized toolchain provided as Docker images, or you can set up the toolchain on your local development machine. Due to the dynamic nature of requirements, you might want to stay with the virtualized environment. - -### Install required dependencies and build-tools - -!!!note - The installations instructions are valid for Linux hosts only. Mac instructions will follow shortly. - -For installing the tools required to build and test ArgoCD on your local system, we provide convenient installer scripts. By default, they will install binaries to `/usr/local/bin` on your system, which might require `root` privileges. - -You can change the target location by setting the `BIN` environment before running the installer scripts. For example, you can install the binaries into `~/go/bin` (which should then be the first component in your `PATH` environment, i.e. `export PATH=~/go/bin:$PATH`): - -```shell -make BIN=~/go/bin install-tools-local -``` - -Additionally, you have to install at least the following tools via your OS's package manager (this list might not be always up-to-date): - -* Git LFS plugin -* GnuPG version 2 - -### Install Go dependencies - -You need to pull in all required Go dependencies. To do so, run - -* `make mod-download-local` -* `make mod-vendor-local` - -### Test your build toolchain - -The first thing you can do whether your build toolchain is setup correctly is by generating the glue code for the API and after that, run a normal build: - -* `make codegen-local` -* `make build-local` - -This should return without any error. - -### Run unit-tests - -The next thing is to make sure that unit tests are running correctly on your system. These will require that all dependencies, such as Helm, Kustomize, Git, GnuPG, etc are correctly installed and fully functioning: - -* `make test-local` - -### Run end-to-end tests - -The final step is running the End-to-End testsuite, which makes sure that your Kubernetes dependencies are working properly. This will involve starting all of the ArgoCD components locally on your computer. The end-to-end tests consists of two parts: a server component, and a client component. - -* First, start the End-to-End server: `make start-e2e-local`. This will spawn a number of processes and services on your system. -* When all components have started, run `make test-e2e-local` to run the end-to-end tests against your local services. - -For more information about End-to-End tests, refer to the [End-to-End test documentation](test-e2e.md). diff --git a/docs/developer-guide/debugging-remote-environment.md b/docs/developer-guide/debugging-remote-environment.md deleted file mode 100644 index 46894f793e171..0000000000000 --- a/docs/developer-guide/debugging-remote-environment.md +++ /dev/null @@ -1,57 +0,0 @@ -# Debugging a Remote ArgoCD Environment - -In this guide, we will describe how to debug a remote ArgoCD environment with [Telepresence](https://telepresence.io/). - -Telepresence allows you to connect & debug a service deployed in a remote environment and to "cherry-pick" one service to run locally, staying connected to the remote cluster. This will: - -* Reduce resource footprint on the local machine -* Decrease the feedback loop time -* Result in more confidence about the delivered code. - -To read more about it, refer to the official documentation at [telepresence.io](https://telepresence.io/) or [Medium](https://medium.com/containers-101/development-environment-using-telepresence-634bd7210c26). - -## Install ArgoCD -First of all, install ArgoCD on your cluster -```shell -kubectl create ns argocd -curl -sSfL https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml | kubectl apply -n argocd -f - -``` - -## Connect -Connect to one of the services, for example, to debug the main ArgoCD server run: -```shell -telepresence --swap-deployment argocd-server --namespace argocd --env-file .envrc.remote --expose 8080:8080 --expose 8083:8083 --run bash -``` -* `--swap-deployment` changes the argocd-server deployment -* `--expose` forwards traffic of remote ports 8080 and 8083 to the same ports locally -* `--env-file` writes all the environment variables of the remote pod into a local file, the variables are also set on the subprocess of the `--run` command -* `--run` defines which command to run once a connection is established, use `bash`, `zsh` or others - - -## Debug -Once a connection is established, use your favorite tools to start the server locally. - -### Terminal -* Compile `make server` -* Run `./dist/argocd-server` - -### VSCode -In VSCode use the integrated terminal to run the Telepresence command to connect. Then, to run argocd-server service use the following configuration. -Make sure to run `packr` before starting the debugging session to generate the assets. -Update the configuration file to point to kubeconfig file: `KUBECONFIG=` (required) -```json - { - "name": "Launch", - "type": "go", - "request": "launch", - "mode": "auto", - "program": "${workspaceFolder}/cmd/argocd-server", - "envFile": [ - "${workspaceFolder}/.envrc.remote", - ], - "env": { - "CGO_ENABLED": "0", - "KUBECONFIG": "/path/to/kube/config" - } - } -``` \ No newline at end of file diff --git a/docs/developer-guide/dependencies.md b/docs/developer-guide/dependencies.md deleted file mode 100644 index aa9f5cc155b3e..0000000000000 --- a/docs/developer-guide/dependencies.md +++ /dev/null @@ -1,54 +0,0 @@ -# Managing Dependencies - -## GitOps Engine (`github.com/argoproj/gitops-engine`) - -### Repository - -https://github.com/argoproj/gitops-engine - -### Pulling changes from `gitops-engine` - -After your GitOps Engine PR has been merged, ArgoCD needs to be updated to pull in the version of the GitOps engine that contains your change. Here are the steps: - -* Retrieve the SHA hash for your commit. You will use this in the next step. -* From the `argo-cd` folder, run the following command - - `go get github.com/argoproj/gitops-engine@` - - If you get an error message `invalid version: unknown revision` then you got the wrong SHA hash - -* Run: - - `go mod tidy` - -* The following files are changed: - - - `go.mod` - - `go.sum` - -* Create an ArgoCD PR with a `refactor:` type in its title for the two file changes. - -### Tips: -* See https://github.com/argoproj/argo-cd/pull/4434 as an example -* The PR might require additional, dependent changes in ArgoCD that are directly impacted by the changes made in the engine. - -## Argo UI Components - -### Repository - -https://github.com/argoproj/argo-ui - -### Pulling changes from Argo UI into Argo CD - -If you make changes to the Argo UI component, and your Argo CD changes depend on those changes, follow these steps: - -1. Make changes to Argo UI and submit the PR request. -2. Also, prepare your Argo CD changes, but don't create the PR just yet. -3. **After** the Argo UI PR has been merged to master, then as part of your Argo CD changes: - - Run `yarn add https://github.com/argoproj/argo-ui.git`, and then, - - Check in the regenerated yarn.lock file as part of your Argo CD commit -4. Create the Argo CD PR when you are ready. The PR build and test checks should pass. - -If your Argo UI change is a 'stand-alone' fix, and you simply want Argo CD to pull in your change, then simply create an Argo CD PR with the yarn.lock file change. - - diff --git a/docs/developer-guide/faq.md b/docs/developer-guide/faq.md deleted file mode 100644 index 2614c5530acde..0000000000000 --- a/docs/developer-guide/faq.md +++ /dev/null @@ -1,32 +0,0 @@ -# Contribution FAQ - -## General - -### Can I discuss my contribution ideas somewhere? - -Sure thing! You can either open an Enhancement Proposal in our GitHub issue tracker or you can [join us on Slack](https://argoproj.github.io/community/join-slack) in channel #argo-dev to discuss your ideas and get guidance for submitting a PR. - -### No one has looked at my PR yet. Why? - -As we have limited manpower, it can sometimes take a while for someone to respond to your PR. Especially, when your PR contains complex or non-obvious changes. Please bear with us, we try to look at every PR that we receive. - -### Why has my PR been declined? I put much work in it! - -We appreciate that you have put your valuable time and know how into a contribution. Alas, some changes do not fit into the overall ArgoCD philosophy, and therefore can't be merged into the official ArgoCD source tree. - -To be on the safe side, make sure that you have created an Enhancement Proposal for your change before starting to work on your PR and have gathered enough feedback from the community and the maintainers. - -### A check on my PR is failing. -See [Failing CI Checks](ci.md#troubleshooting-ci-checks). - -### What checked-in code is generated, and how is it generated? -The following files under this repository are generated, and must be kept up-to-date. Also see [Why does the codegen step fail?](ci.md#why-does-the-codegen-step-fail). - -See the Makefile for targets that can also run these scripts, and the `codegen` target which runs them all. - -| Filename | Purpose | Generated by | -| -------- | ------- | ------------ | -| `*.pb.go`, `*.pb.gw.go` | [Protobuf](https://developers.google.com/protocol-buffers/docs/gotutorial) Interfaces | `hack/generate-proto.sh` | -| `assets/swagger.json` | Swagger 2 API spec | `hack/update-openapi.sh` | -| `manifests/` | k8s Installation Manifests | `hack/update-manifests.sh` | -| `docs/user-guide/commands` | CLI Documentation | `tools/cmd-docs/main.go` | diff --git a/docs/developer-guide/index.md b/docs/developer-guide/index.md deleted file mode 100644 index c0405c5e0803b..0000000000000 --- a/docs/developer-guide/index.md +++ /dev/null @@ -1,10 +0,0 @@ -# Overview - -!!! warning "You probably don't want to be reading this section of the docs." - This part of the manual is aimed at people wanting to develop third-party applications that interact with Argo CD, e.g. - - * A chat bot - * A Slack integration - -!!! note - Please make sure you've completed the [getting started guide](../getting_started.md). diff --git a/docs/developer-guide/releasing.md b/docs/developer-guide/releasing.md deleted file mode 100644 index ed8297fb0e5c5..0000000000000 --- a/docs/developer-guide/releasing.md +++ /dev/null @@ -1,236 +0,0 @@ -# Releasing - -## Automated release procedure - -Starting from `release-1.6` branch, ArgoCD can be released in an automated fashion -using GitHub actions. The release process takes about 20 minutes, sometimes a -little less, depending on the performance of GitHub Actions runners. - -The target release branch must already exist in the GitHub repository. If you for -example want to create a release `v1.7.0`, the corresponding release branch -`release-1.7` needs to exist, otherwise, the release cannot be built. Also, -the trigger tag should always be created in the release branch, checked out -in your local repository clone. - -Before triggering the release automation, the `CHANGELOG.md` should be updated -with the latest information, and this change should be committed and pushed to -the GitHub repository to the release branch. Afterward, the automation can be -triggered. - -**Manual steps before release creation:** - -* Update `CHANGELOG.md` with changes for this release -* Commit & push changes to `CHANGELOG.md` -* Prepare release notes (save to some file, or copy from Changelog) - -**The automation will perform the following steps:** - -* Update `VERSION` file in the release branch -* Update manifests with image tags of the new version in the release branch -* Build the Docker image and push to Docker Hub -* Create a release tag in the GitHub repository -* Create a GitHub release and attach the required assets to it (CLI binaries, ...) - -Finally, it will the remove trigger tag from the repository again. - -Automation supports both, GA and pre-releases. The automation is triggered by -pushing a tag to the repository. The tag must be in one of the following formats -to trigger the GH workflow: - -* GA: `release-v..` -* Pre-release: `release-v..-rc` - -The tag must be an annotated tag, and it must contain the release notes in the -commit message. Please note that Markdown uses `#` character for formatting, but -Git uses it as comment char. To solve this, temporarily switch Git's comment char -to something else, the `;` character is recommended. - -For example, consider you have configured the Git remote for the repository to -`github.com/argoproj/argo-cd` to be named `upstream` and are in your locally -checked out repo: - -```shell -git config core.commentChar ';' -git tag -a -F /path/to/release-notes.txt release-v1.6.0-rc2 -git push upstream release-v1.6.0-rc2 -git tag -d release-v1.6.0-rc2 -git config core.commentChar '#' - -``` - -For convenience, there is a shell script in the tree that ensures all the -pre-requisites are met and that the trigger is well-formed before pushing -it to the GitHub repo. - -In summary, the modifications it does are: - -* Create annotated trigger tag in your local repository -* Push the tag to the GitHub repository to trigger the workflow -* Remove trigger tag from your local repository - -The script can be found at `hack/trigger-release.sh` and is used as follows: - -```shell -./hack/trigger-release.sh [] -``` - -The `` identifier needs to be specified **without** the `release-` -prefix, so just specify it as `v1.6.0-rc2` for example. The `` -specifies the name of the remote used to push to the GitHub repository. - -If you omit the ``, an editor will pop-up asking you to -enter the tag's annotation so you can paste the release notes, save, and exit. -It will also take care of temporarily configuring the `core.commentChar` and -setting it back to its original state. - -:warning: - It is strongly recommended to use this script to trigger the workflow - instead of manually pushing a tag to the repository. - -Once the trigger tag is pushed to the repo, the GitHub workflow will start -execution. You can follow its progress under the `Actions` tab, the name of the -action is `Create release`. Don't get confused by the name of the running -workflow, it will be the commit message of the latest commit to the `master` -branch, this is a limitation of GH actions. - -The workflow performs necessary checks so that the release can be successfully -built before the build actually starts. It will error when one of the -prerequisites is not met, or if the release cannot be built (i.e. already -exists, release notes invalid, etc etc). You can see a summary of what has -failed in the job's overview page and more detailed errors in the output -of the step that has failed. - -:warning: - You cannot perform more than one release on the same release branch at the - same time. For example, both `v1.6.0` and `v1.6.1` would operate on the - `release-1.6` branch. If you submit `v1.6.1` while `v1.6.0` is still - executing, the release automation will not execute. You have to either - cancel `v1.6.0` before submitting `v1.6.1` or wait until it has finished. - You can execute releases on different release branches simultaneously, for - example, `v1.6.0` and `v1.7.0-rc1`, without problems. - -### Verifying automated release - -After the automatic release creation has finished, you should perform manual -checks to see if the release came out correctly: - -* Check status & output of the GitHub action -* Check [https://github.com/argoproj/argo-cd/releases](https://github.com/argoproj/argo-cd/releases) - to see if the release has been correctly created and if all required assets - are attached. -* Check whether the image has been published on DockerHub correctly - -### If something went wrong - -If something went wrong, damage should be limited. Depending on the steps that -have been performed, you will need to manually clean up. - -* Delete the release tag (e.g. `v1.6.0-rc2`) created in the GitHub repository. This - will immediately set the release (if created) to `draft` status, invisible to the - general public. -* Delete the draft release (if created) from the `Releases` page on GitHub -* If Docker image has been pushed to DockerHub, delete it -* If commits have been performed to the release branch, revert them. Paths that could have been committed to are: - * `VERSION` - * `manifests/*` - -### Post-process manual steps - -For now, the only manual steps left are to - -* update stable tag in the GitHub repository to point to new the release (if appropriate) -* update the `VERSION` file on `master` if this is a new major release - -These may be automated as well in the future. - -## Manual releasing - -The automatic release process does not interfere with the manual release process, since -the trigger tag does not match a normal release tag. If you prefer to perform, -manual release or if automatic release is for some reason broken, these are the -steps: - -Make sure you are logged into Docker Hub: - -```bash -docker login -``` - -Export the upstream repository and branch name, e.g.: - -```bash -REPO=upstream ;# or origin -BRANCH=release-1.3 -``` - -Set the `VERSION` environment variable: - -```bash -# release candidate -VERSION=v1.3.0-rc1 -# GA release -VERSION=v1.3.1 -``` - -Update `VERSION` and manifests with the new version: - -```bash -git checkout $BRANCH -echo ${VERSION:1} > VERSION -make dev-tools-image -make manifests IMAGE_TAG=$VERSION -git commit -am "Update manifests to $VERSION" -git tag $VERSION -``` - -Build, and push release to Docker Hub - -```bash -git clean -fd -make release IMAGE_NAMESPACE=argoproj IMAGE_TAG=$VERSION DOCKER_PUSH=true -git push $REPO $BRANCH -git push $REPO $VERSION -``` - -Update [GitHub releases](https://github.com/argoproj/argo-cd/releases) with: - -* Getting started (copy from the previous release) -* Changelog -* Binaries (e.g. `dist/argocd-darwin-amd64`). - -## Update brew formulae (manual) - -If GA, update the Brew formula: - -```bash -brew bump-formula-pr argocd --version ${VERSION:1} -``` - -## Update stable tag (manual) - -If GA, update `stable` tag: - -```bash -git tag stable --force && git push $REPO stable --force -``` - -## Verify release - -Locally: - -```bash -kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/$VERSION/manifests/install.yaml -``` - -Follow the [Getting Started Guide](../getting_started/). - -If GA: - -```bash -brew upgrade argocd -/usr/local/bin/argocd version -``` - -Sync Argo CD in [https://cd.apps.argoproj.io/applications/argo-cd](https://cd.apps.argoproj.io/applications/argo-cd). - -Deploy the [site](site.md). diff --git a/docs/developer-guide/running-locally.md b/docs/developer-guide/running-locally.md deleted file mode 100644 index 0ea809f8bd999..0000000000000 --- a/docs/developer-guide/running-locally.md +++ /dev/null @@ -1,117 +0,0 @@ -# Running ArgoCD locally - -## Run ArgoCD outside of Kubernetes - -During development, it might be viable to run ArgoCD outside of a Kubernetes cluster. This will greatly speed up development, as you don't have to constantly build, push and install new ArgoCD Docker images with your latest changes. - -You will still need a working Kubernetes cluster, as described in the [Contribution Guide](contributing.md), where ArgoCD will store all of its resources. - -If you followed the [Contribution Guide](contributing.md) in setting up your toolchain, you can run ArgoCD locally with these simple steps: - -### Install ArgoCD resources to your cluster - -First push the installation manifest into argocd namespace: - -```shell -kubectl create namespace argocd -kubectl apply -n argocd --force -f manifests/install.yaml -``` - -### Scale down any ArgoCD instance in your cluster - -Make sure that ArgoCD is not running in your development cluster by scaling down the deployments: - -```shell -kubectl -n argocd scale statefulset/argocd-application-controller --replicas 0 -kubectl -n argocd scale deployment/argocd-dex-server --replicas 0 -kubectl -n argocd scale deployment/argocd-repo-server --replicas 0 -kubectl -n argocd scale deployment/argocd-server --replicas 0 -kubectl -n argocd scale deployment/argocd-redis --replicas 0 -``` - -### Start local services - -Before starting local services, make sure you are present in `argocd` namespace. When you use the virtualized toolchain, starting local services is as simple as running - -```bash -make start -``` - -This will start all ArgoCD services and the UI in a Docker container and expose the following ports to your host: - -* The ArgoCD API server on port 8080 -* The ArgoCD UI server on port 4000 - -You can now use either the web UI by pointing your browser to `http://localhost:4000` or use the CLI against the API at `http://localhost:8080`. Be sure to use the `--insecure` and `--plaintext` options to the CLI. - -As an alternative to using the above command line parameters each time you call `argocd` CLI, you can set the following environment variables: - -```bash -export ARGOCD_SERVER=127.0.0.1:8080 -export ARGOCD_OPTS="--plaintext --insecure" -``` - -### Scale up ArgoCD in your cluster - -Once you have finished testing your changes locally and want to bring back ArgoCD in your development cluster, simply scale the deployments up again: - -```bash -kubectl -n argocd scale statefulset/argocd-application-controller --replicas 1 -kubectl -n argocd scale deployment/argocd-dex-server --replicas 1 -kubectl -n argocd scale deployment/argocd-repo-server --replicas 1 -kubectl -n argocd scale deployment/argocd-server --replicas 1 -kubectl -n argocd scale deployment/argocd-redis --replicas 1 -``` - -## Run your own ArgoCD images on your cluster - -For your final tests, it might be necessary to build your own images and run them in your development cluster. - -### Create Docker account and login - -You might need to create a account on [Docker Hub](https://hub.docker.com) if you don't have one already. Once you created your account, login from your development environment: - -```bash -docker login -``` - -### Create and push Docker images - -You will need to push the built images to your own Docker namespace: - -```bash -export IMAGE_NAMESPACE=youraccount -``` - -If you don't set `IMAGE_TAG` in your environment, the default of `:latest` will be used. To change the tag, export the variable in the environment: - -```bash -export IMAGE_TAG=1.5.0-myrc -``` - -Then you can build & push the image in one step: - -```bash -DOCKER_PUSH=true make image -``` - -### Configure manifests for your image - -With `IMAGE_NAMESPACE` and `IMAGE_TAG` still set, run: - -```bash -make manifests -``` - -to build a new set of installation manifests which include your specific image reference. - -!!!note - Do not commit these manifests to your repository. If you want to revert the changes, the easiest way is to unset `IMAGE_NAMESPACE` and `IMAGE_TAG` from your environment and run `make manifests` again. This will re-create the default manifests. - -### Configure your cluster with custom manifests - -The final step is to push the manifests to your cluster, so it will pull and run your image: - -```bash -kubectl apply -n argocd --force -f manifests/install.yaml -``` diff --git a/docs/developer-guide/site.md b/docs/developer-guide/site.md deleted file mode 100644 index c1ff0cac6251e..0000000000000 --- a/docs/developer-guide/site.md +++ /dev/null @@ -1,30 +0,0 @@ -# Site - -## Developing And Testing - -The web site is build using `mkdocs` and `mkdocs-material`. - -To test: - -```bash -make serve-docs -``` - -Check for broken external links: - -```bash -make lint-docs -``` - -## Deploying - -```bash -make publish-docs -``` - -## Analytics - -!!! tip - Don't forget to disable your ad-blocker when testing. - -We collect [Google Analytics](https://analytics.google.com/analytics/web/#/report-home/a105170809w198079555p192782995). \ No newline at end of file diff --git a/docs/developer-guide/static-code-analysis.md b/docs/developer-guide/static-code-analysis.md deleted file mode 100644 index ef4d72c99a3b6..0000000000000 --- a/docs/developer-guide/static-code-analysis.md +++ /dev/null @@ -1,10 +0,0 @@ -# Static Code Analysis - -We use the following static code analysis tools: - -* golangci-lint and tslint for compile time linting -* [codecov.io](https://codecov.io/gh/argoproj/argo-cd) - for code coverage -* [snyk.io](https://app.snyk.io/org/argoproj/projects) - for image scanning -* [sonarcloud.io](https://sonarcloud.io/organizations/argoproj/projects) - for code scans and security alerts - -These are at least run daily or on each pull request. \ No newline at end of file diff --git a/docs/developer-guide/test-e2e.md b/docs/developer-guide/test-e2e.md deleted file mode 100644 index 4425acff039da..0000000000000 --- a/docs/developer-guide/test-e2e.md +++ /dev/null @@ -1,62 +0,0 @@ -# E2E Tests - -The directory contains E2E tests and test applications. The test assume that Argo CD services are installed into `argocd-e2e` namespace or cluster in current context. One throw-away -namespace `argocd-e2e***` is created prior to tests execute. The throw-away namespace is used as a target namespace for test applications. - -The `test/e2e/testdata` directory contains various Argo CD applications. Before test execution directory is copies into `/tmp/argocd-e2e***` temp directory and used in tests as a -Git repository via file url: `file:///tmp/argocd-e2e***`. - -## Running Tests Locally - -1. Start the e2e version `make start-e2e` -1. Run the tests: `make test-e2e` - -You can observe the tests by using the UI [http://localhost:4000/applications](http://localhost:4000/applications). - -## Configuration of E2E Tests execution - -The Makefile's `start-e2e` target starts instances of ArgoCD on your local machine, of which the most will require a network listener. If for whatever reason you already have network services on your machine listening on the same ports, the e2e tests will not be able to run. You can derive from the defaults by setting the following environment variables before you run `make start-e2e`: - -* `ARGOCD_E2E_APISERVER_PORT`: Listener port for `argocd-server` (default: `8080`) -* `ARGOCD_E2E_REPOSERVER_PORT`: Listener port for `argocd-reposerver` (default: `8081`) -* `ARGOCD_E2E_DEX_PORT`: Listener port for `dex` (default: `5556`) -* `ARGOCD_E2E_REDIS_PORT`: Listener port for `redis` (default: `6379`) -* `ARGOCD_E2E_YARN_CMD`: Command to use for starting the UI via Yarn (default: `yarn`) - -If you have changed the port for `argocd-server`, be sure to also set `ARGOCD_SERVER` environment variable to point to that port, e.g. `export ARGOCD_SERVER=localhost:8888` before running `make test-e2e` so that the test will communicate to the correct server component. - -## CI Set-up - -The tests are executed by Argo Workflow defined at `.argo-ci/ci.yaml`. CI job The builds an Argo CD image, deploy argo cd components into throw-away kubernetes cluster provisioned -using k3s and run e2e tests against it. - -## Test Isolation - -Some effort has been made to balance test isolation with speed. Tests are isolated as follows as each test gets: - -* A random 5 character ID. -* A unique Git repository containing the `testdata` in `/tmp/argocd-e2e/${id}`. -* A namespace `argocd-e2e-ns-${id}`. -* An primary name for the app `argocd-e2e-${id}`. - -## Troubleshooting - -**Tests fails to delete `argocd-e2e-ns-*` namespaces.** - -This maybe due to the metrics server, run this: - -```bash -kubectl api-resources -``` - -If it exits with status code 1, run: - -```bash -kubectl delete apiservice v1beta1.metrics.k8s.io -``` - -Remove `/spec/finalizers` from the namespace - -```bash -kubectl edit ns argocd-e2e-ns-* -``` diff --git a/docs/faq.md b/docs/faq.md index 3b2e446844900..eaff180470c79 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,199 +1 @@ -# FAQ - -## I've deleted/corrupted my repo and can't delete my app. - -Argo CD can't delete an app if it cannot generate manifests. You need to either: - -1. Reinstate/fix your repo. -1. Delete the app using `--cascade=false` and then manually deleting the resources. - -## Why is my application still `OutOfSync` immediately after a successful Sync? - -See [Diffing](user-guide/diffing.md) documentation for reasons resources can be OutOfSync, and ways to configure Argo CD -to ignore fields when differences are expected. - -## Why is my application stuck in `Progressing` state? - -Argo CD provides health for several standard Kubernetes types. The `Ingress` and `StatefulSet` types have known issues -which might cause health check to return `Progressing` state instead of `Healthy`. - -* `Ingress` is considered healthy if `status.loadBalancer.ingress` list is non-empty, with at least one value - for `hostname` or `IP`. Some ingress controllers - ([contour](https://github.com/heptio/contour/issues/403) - , [traefik](https://github.com/argoproj/argo-cd/issues/968#issuecomment-451082913)) don't update - `status.loadBalancer.ingress` field which causes `Ingress` to stuck in `Progressing` state forever. - -* `StatefulSet` is considered healthy if value of `status.updatedReplicas` field matches to `spec.replicas` field. Due - to Kubernetes bug - [kubernetes/kubernetes#68573](https://github.com/kubernetes/kubernetes/issues/68573) the `status.updatedReplicas` is - not populated. So unless you run Kubernetes version which include the - fix [kubernetes/kubernetes#67570](https://github.com/kubernetes/kubernetes/pull/67570) `StatefulSet` might stay - in `Progressing` state. -* Your `StatefulSet` or `DaemonSet` is using `OnDelete` instead of `RollingUpdate` strategy. - See [#1881](https://github.com/argoproj/argo-cd/issues/1881). - -As workaround Argo CD allows providing [health check](operator-manual/health.md) customization which overrides default -behavior. - -## I forgot the admin password, how do I reset it? - -For Argo CD v1.8 and earlier, the initial password is set to the name of the server pod, as -per [the getting started guide](getting_started.md). For Argo CD v1.9 and later, the initial password is available from -a secret named `argocd-initial-admin-secret`. - -To change the password, edit the `argocd-secret` secret and update the `admin.password` field with a new bcrypt hash. -You can use a site like [https://www.browserling.com/tools/bcrypt](https://www.browserling.com/tools/bcrypt) to generate -a new hash. For example: - -```bash -# bcrypt(password)=$2a$10$rRyBsGSHK6.uc8fntPwVIuLVHgsAhAX7TcdrqW/RADU0uh7CaChLa -kubectl -n argocd patch secret argocd-secret \ - -p '{"stringData": { - "admin.password": "$2a$10$rRyBsGSHK6.uc8fntPwVIuLVHgsAhAX7TcdrqW/RADU0uh7CaChLa", - "admin.passwordMtime": "'$(date +%FT%T%Z)'" - }}' -``` - -Another option is to delete both the `admin.password` and `admin.passwordMtime` keys and restart argocd-server. This -will generate a new password as per [the getting started guide](getting_started.md), so either to the name of the pod ( -Argo CD 1.8 and earlier) -or a randomly generated password stored in a secret (Argo CD 1.9 and later). - -## How to disable admin user? - -Add `admin.enabled: "false"` to the `argocd-cm` ConfigMap ( -see [user management](operator-manual/user-management/index.md)). - -## Argo CD cannot deploy Helm Chart based applications without internet access, how can I solve it? - -Argo CD might fail to generate Helm chart manifests if the chart has dependencies located in external repositories. To -solve the problem you need to make sure that `requirements.yaml` -uses only internally available Helm repositories. Even if the chart uses only dependencies from internal repos Helm -might decide to refresh `stable` repo. As workaround override -`stable` repo URL in `argocd-cm` config map: - -```yaml -data: - # v1.2 or earlier use `helm.repositories` - helm.repositories: | - - url: http://:8080 - name: stable - # v1.3 or later use `repositories` with `type: helm` - repositories: | - - type: helm - url: http://:8080 - name: stable -``` - -## I've configured [cluster secret](./operator-manual/declarative-setup.md#clusters) but it does not show up in CLI/UI, how do I fix it? - -Check if cluster secret has `argocd.argoproj.io/secret-type: cluster` label. If secret has the label but the cluster is -still not visible then make sure it might be a permission issue. Try to list clusters using `admin` user ( -e.g. `argocd login --username admin && argocd cluster list`). - -## Argo CD is unable to connect to my cluster, how do I troubleshoot it? - -Use the following steps to reconstruct configured cluster config and connect to your cluster manually using kubectl: - -```bash -kubectl exec -it bash # ssh into any argocd server pod -argocd-util kubeconfig https:// /tmp/config --namespace argocd # generate your cluster config -KUBECONFIG=/tmp/config kubectl get pods # test connection manually -``` - -Now you can manually verify that cluster is accessible from the Argo CD pod. - -## How Can I Terminate A Sync? - -To terminate the sync, click on the "synchronisation" then "terminate": - -![Synchronization](assets/synchronization-button.png) ![Terminate](assets/terminate-button.png) - -## Why Is My App Out Of Sync Even After Syncing? - -Is some cases, the tool you use may conflict with Argo CD by adding the `app.kubernetes.io/instance` label. E.g. using -Kustomize common labels feature. - -Argo CD automatically sets the `app.kubernetes.io/instance` label and uses it to determine which resources form the app. -If the tool does this too, this causes confusion. You can change this label by setting -the `application.instanceLabelKey` value in the `argocd-cm`. We recommend that you use `argocd.argoproj.io/instance`. - -!!! note When you make this change your applications will become out of sync and will need re-syncing. - -See [#1482](https://github.com/argoproj/argo-cd/issues/1482). - -## Why Are My Resource Limits Out Of Sync? - -Kubernetes has normalized your resource limits when they are applied, and then Argo CD has then compared the version in -your generated manifests to the normalized one is Kubernetes - they won't match. - -E.g. - -* `'1000m'` normalized to `'1'` -* `'0.1'` normalized to `'100m'` -* `'3072Mi'` normalized to `'3Gi'` -* `3072` normalized to `'3072'` (quotes added) - -To fix this use diffing -customizations [settings](./user-guide/diffing.md#known-kubernetes-types-in-crds-resource-limits-volume-mounts-etc). - -## How Do I Fix "invalid cookie, longer than max length 4093"? - -Argo CD uses a JWT as the auth token. You likely are part of many groups and have gone over the 4KB limit which is set -for cookies. You can get the list of groups by opening "developer tools -> network" - -* Click log in -* Find the call to `/auth/callback?code=` - -Decode the token at [https://jwt.io/](https://jwt.io/). That will provide the list of teams that you can remove yourself -from. - -See [#2165](https://github.com/argoproj/argo-cd/issues/2165). - -## Why Am I Getting `rpc error: code = Unavailable desc = transport is closing` When Using The CLI? - -Maybe you're behind a proxy that does not support HTTP 2? Try the `--grpc-web` flag: - -```bash -argocd ... --grpc-web -``` - -## Why Am I Getting `x509: certificate signed by unknown authority` When Using The CLI? - -Your not running your server with correct certs. - -If you're not running in a production system (e.g. you're testing Argo CD out), try the `--insecure` flag: - -```bash -argocd ... --insecure -``` - -!!! warning "Do not use `--insecure` in production" - -## I have configured Dex via `dex.config` in `argocd-cm`, it still says Dex is unconfigured. Why? - -Most likely you forgot to set the `url` in `argocd-cm` to point to your ArgoCD as well. See also -[the docs](/operator-manual/user-management/#2-configure-argo-cd-for-sso). - -## Why are resources of type `SealedSecret` stuck in the `Progressing` state? - -The controller of the `SealedSecret` resource may expose the status condition on resource it provisioned. Since -version `v1.9.0` ArgoCD picks up that status condition to derive a health status for the `SealedSecret`. - -Versions before `v0.15.0` of the `SealedSecret` controller are affected by an issue regarding this status -conditions updates, which is why this feature is disabled by default in these versions. Status condition updates may be -enabled by starting the `SealedSecret` controller with the `--update-status` command line parameter or by setting -the `SEALED_SECRETS_UPDATE_STATUS` environment variable. - -To disable ArgoCD from checking the status condition on `SealedSecret` resources, add the following resource -customization in your `argocd-cm` ConfigMap: - -```yaml -resource.customizations: | - bitnami.com/SealedSecret: - health.lua: | - hs = {} - hs.status = "Healthy" - hs.message = "Controller doesn't report resource status" - return hs -``` \ No newline at end of file +# Frequently Asked Questions (FAQ) diff --git a/docs/getting_started.md b/docs/getting_started.md deleted file mode 100644 index bd304d75ceb48..0000000000000 --- a/docs/getting_started.md +++ /dev/null @@ -1,232 +0,0 @@ -# Getting Started - -!!! tip - This guide assumes you have a grounding in the tools that Argo CD is based on. Please read [understanding the basics](understand_the_basics.md) to learn about these tools. - -## Requirements - -* Installed [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) command-line tool. -* Have a [kubeconfig](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) file (default location is `~/.kube/config`). - -## 1. Install Argo CD - -```bash -kubectl create namespace argocd -kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml -``` - -This will create a new namespace, `argocd`, where Argo CD services and application resources will live. - -!!! note - If you are not interested in UI, SSO, multi-cluster management and just want to pull changes into the cluster then you can disable - authentication using `--disable-auth` flag and access Argo CD via CLI using `--port-forward` or `--port-forward-namespace` flags - and proceed to step [#6](#6-create-an-application-from-a-git-repository): - - `kubectl patch deploy argocd-server -n argocd -p '[{"op": "add", "path": "/spec/template/spec/containers/0/command/-", "value": "--disable-auth"}]' --type json` - -## 2. Download Argo CD CLI - -Download the latest Argo CD version from [https://github.com/argoproj/argo-cd/releases/latest](https://github.com/argoproj/argo-cd/releases/latest). More detailed installation instructions can be found via the [CLI installation documentation](cli_installation.md). - -Also available in Mac Homebrew: - -```bash -brew install argocd -``` - -## 3. Access The Argo CD API Server - -By default, the Argo CD API server is not exposed with an external IP. To access the API server, -choose one of the following techniques to expose the Argo CD API server: - -### Service Type Load Balancer -Change the argocd-server service type to `LoadBalancer`: - -```bash -kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}' -``` - -### Ingress -Follow the [ingress documentation](operator-manual/ingress.md) on how to configure Argo CD with ingress. - -### Port Forwarding -Kubectl port-forwarding can also be used to connect to the API server without exposing the service. - -```bash -kubectl port-forward svc/argocd-server -n argocd 8080:443 -``` - -The API server can then be accessed using the localhost:8080 - - -## 4. Login Using The CLI - -!!! warning - We strongly advise to change the initially generated administrative password - as soon as after your first login to the system. - -Depending on the Argo CD version you are installing, the method how to get the -initial password for the `admin` user is different. - -> Argo CD 1.8 and earlier - -The initial password is autogenerated to be the pod name of the -Argo CD API server. This can be retrieved with the command: - -```bash -kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2 -``` - -Using the username `admin` and the password from above, login to Argo CD's IP or hostname: - -```bash -argocd login # e.g. localhost:8080 or argocd.example.com -``` - -Change the password using the command: - -```bash -argocd account update-password -``` - -!!! note - The initial password is set in a kubernetes secret, named `argocd-secret`, during ArgoCD's initial start up. This means if you edit - the deployment in any way which causes a new pod to be deployed, such as disabling TLS on the Argo CD API server. Take note of the initial - pod name when you first install Argo CD, or reset the password by following [these instructions](../../faq/#i-forgot-the-admin-password-how-do-i-reset-it) - -> Argo CD v1.9 and later - -The initial password for the `admin` account is auto-generated and stored as -clear text in the field `password` in a secret named `argocd-initial-admin-secret` -in your Argo CD installation namespace. You can simply retrieve this password -using `kubectl`: - -```bash -kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d -``` - -For better readability, e.g. if you want to copy & paste the generated password, -you can simply append `&& echo` to above command, which will add a newline to -the output. - -Using the username `admin` and the password from above, login to Argo CD's IP or hostname: - -```bash -argocd login -``` - -Change the password using the command: - -```bash -argocd account update-password -``` - -!!! note - You should delete the `argocd-initial-admin-secret` from the Argo CD - namespace once you changed the password. The secret serves no other - purpose than to store the initially generated password in clear and can - safely be deleted at any time. It will be re-created on demand by Argo CD - if a new admin password must be re-generated. - -## 5. Register A Cluster To Deploy Apps To (Optional) - -This step registers a cluster's credentials to Argo CD, and is only necessary when deploying to -an external cluster. When deploying internally (to the same cluster that Argo CD is running in), -https://kubernetes.default.svc should be used as the application's K8s API server address. - -First list all clusters contexts in your current kubeconfig: -```bash -kubectl config get-contexts -o name -``` - -Choose a context name from the list and supply it to `argocd cluster add CONTEXTNAME`. For example, -for docker-desktop context, run: -```bash -argocd cluster add docker-desktop -``` - -The above command installs a ServiceAccount (`argocd-manager`), into the kube-system namespace of -that kubectl context, and binds the service account to an admin-level ClusterRole. Argo CD uses this -service account token to perform its management tasks (i.e. deploy/monitoring). - -!!! note - The rules of the `argocd-manager-role` role can be modified such that it only has `create`, `update`, `patch`, `delete` privileges to a limited set of namespaces, groups, kinds. - However `get`, `list`, `watch` privileges are required at the cluster-scope for Argo CD to function. - -## 6. Create An Application From A Git Repository - -An example repository containing a guestbook application is available at -[https://github.com/argoproj/argocd-example-apps.git](https://github.com/argoproj/argocd-example-apps.git) to demonstrate how Argo CD works. - -### Creating Apps Via CLI - -!!! note - You can access Argo CD using port forwarding: add `--port-forward-namespace argocd` flag to every CLI command or set `ARGOCD_OPTS` environment variable: `export ARGOCD_OPTS='--port-forward-namespace argocd'`: - - `argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default` - -### Creating Apps Via UI - -Open a browser to the Argo CD external UI, and login by visiting the IP/hostname in a browser and use the credentials set in step 4. - -After logging in, click the **+ New App** button as shown below: - -![+ new app button](assets/new-app.png) - -Give your app the name `guestbook`, use the project `default`, and leave the sync policy as `Manual`: - -![app information](assets/app-ui-information.png) - -Connect the [https://github.com/argoproj/argocd-example-apps.git](https://github.com/argoproj/argocd-example-apps.git) repo to Argo CD by setting repository url to the github repo url, leave revision as `HEAD`, and set the path to `guestbook`: - -![connect repo](assets/connect-repo.png) - -For **Destination**, set cluster to `in-cluster` and namespace to `default`: - -![destination](assets/destination.png) - -After filling out the information above, click **Create** at the top of the UI to create the `guestbook` application: - -![destination](assets/create-app.png) - - -## 7. Sync (Deploy) The Application - -### Syncing via CLI - -Once the guestbook application is created, you can now view its status: - -```bash -$ argocd app get guestbook -Name: guestbook -Server: https://kubernetes.default.svc -Namespace: default -URL: https://10.97.164.88/applications/guestbook -Repo: https://github.com/argoproj/argocd-example-apps.git -Target: -Path: guestbook -Sync Policy: -Sync Status: OutOfSync from (1ff8a67) -Health Status: Missing - -GROUP KIND NAMESPACE NAME STATUS HEALTH -apps Deployment default guestbook-ui OutOfSync Missing - Service default guestbook-ui OutOfSync Missing -``` - -The application status is initially in `OutOfSync` state since the application has yet to be -deployed, and no Kubernetes resources have been created. To sync (deploy) the application, run: - -```bash -argocd app sync guestbook -``` - -This command retrieves the manifests from the repository and performs a `kubectl apply` of the -manifests. The guestbook app is now running and you can now view its resource components, logs, -events, and assessed health status. - -### Syncing via UI - -![guestbook app](assets/guestbook-app.png) -![view app](assets/guestbook-tree.png) - diff --git a/docs/getting_started/first_steps.md b/docs/getting_started/first_steps.md new file mode 100644 index 0000000000000..7484238eba697 --- /dev/null +++ b/docs/getting_started/first_steps.md @@ -0,0 +1,11 @@ +# Accessing Argo CD + +## Install the Argo CD CLI + +Argo CD provides a CLI for interaction. Currently supported CLI platforms are +linux/amd64, darwin/amd64 and windows/amd64. + +To install the Argo CD CLI on your workstation, follow the +[CLI installation guide](install_cli.md) + +## Exposing the API and web UI to the outside world diff --git a/docs/getting_started/install.md b/docs/getting_started/install.md new file mode 100644 index 0000000000000..d74e3abd5bf2b --- /dev/null +++ b/docs/getting_started/install.md @@ -0,0 +1,226 @@ +# Installing Argo CD server components + +!!! tip "Want to upgrade?" + If you're looking to upgrade an existing Argo CD installation to a newer + version, please have a look at the + [upgrade documentation](../../operations/upgrading/). + +## Requirements + +Argo CD is a Kubernetes-native application, and must be installed into a K8s +cluster in order to function properly. Regardless of which +[installation type](#installation-types) or +[installation methods](#installation-methods) +you chose, you will need a target cluster running a supported version of +Kubernetes, and you will need permissions to create resources in this cluster. +Depending on which +[installation type](#installation-types) you chose, the required permissions +will vary. + +## TL;DR + +If you are impatient and just want to give Argo CD a quick try, make sure that +your current `kubectl` context is pointing to the cluster you want to install +Argo CD to, then run + +```bash +kubectl create namespace argocd +kubectl -n argocd apply -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml +``` + +This will install the current stable version of Argo CD into the `argocd` +namespace of your Kubernetes cluster. + +If you are planning a production-grade installation, please skip this step and +read further. + +## Installation types + +Argo CD provides various installation types, from which you need to pick the +one that meets your operational requirements. + +### Cluster-scoped installation + +The cluster-scoped installation type provides the most functionality, and is +the required installation type if you plan to manage cluster-scoped resources +with Argo CD. In order to install Argo CD in the cluster scope, you will need +cluster admin privileges on the cluster you are going to install Argo CD to. + +The cluster-scoped installation will install additional `ClusterRoles` and +`ClusterRoleBindings` in your cluster, with elevated privileges. + +This is the generally recommended installation type for most use-cases. It is +possible to lock-down a cluster-scoped installation later on. + +### Namespace-scoped installation + +The namespace-scoped installation type will limit the Argo CD installation to +manage only resources within the namespace on the cluster it is installed to. +This installation type will not be able to manage cluster-scoped resources on +the cluster it is installed to, but can be setup to manage cluster-scoped +resources on other remote clusters. + +The namespace-scoped installation will install additional `Roles` and +`RoleBindings` within the namespace it is installed to. + +This installation type cannot be easily upgraded to a cluster-scope later on, +and should be used if you do not have administrative privileges on the cluster +you are installing to. + +## Installation variants + +Both, the cluster-scoped and namespace-scoped installation manifests come in +two distinct variants: + +* Standard +* High availability + +As with the installation type, you should pick the one that meets your +operational requirements. + +### Standard installation + +The standard installation is suitable for most use cases in development or +pre-production environments, and doesn't need much resources on the cluster +it is installed to. + +It will install all Argo CD workloads with a single replica, and also will +setup a single instance, non-clustered Redis cache. + +This flavour can later be easily upgraded to a HA flavour. + +### High-availability installation + +The HA installation differs from the standard installation in that it will +start two replicas of `argocd-server` and `argocd-repo-server` each and +will install a clustered version of the Redis cache, using three replicas +of `argocd-redis-ha-server` in a `StatefulSet` manager. + +The Argo CD workloads will also be setup with anti-affinity rules, so that the +replicas will be scheduled on different nodes. + +Obviously, this flavour requires some more resources on the target cluster. +You can change the number of replicas later on, except for the Redis cache +which requires 3 replicas in order to function properly. + +This is the recommended flavour for production environments. + +## Installation + +### Pre-requisites + +No matter what method you chose, you should make sure that you have all the +required privileges in the target cluster, and that the installation namespace +is created. So make sure your `kubectl` context points to your target cluster +and run: + +```bash +kubectl create namespace argocd +``` + +### Using plain Kubernetes manifests + +Argo CD provides ready-to-use, pre-rendered installation manifests for all +combinations of installation type and installation variant, as described above. + +You can install these manifests using `kubectl apply`, directly from GitHub +or previously downloaded to your local machine. To install the current *stable* +version of Argo CD version, you can use one of the below commands: + +*Cluster-scope, standard availability:* + +```bash +kubectl -n argocd apply -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml +``` + +*Cluster-scope, high availability:* + +```bash +kubectl -n argocd apply -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/ha/install.yaml +``` + +*Namespace-scope, standard availability:* + +```bash +kubectl -n argocd apply -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/namespace-install.yaml +``` + +*Namespace-scope, high availability:* + +```bash +kubectl -n argocd apply -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/ha/namespace-install.yaml +``` + +### Using Kustomize + +Argo CD provides Kustomize resources which you can use to create an installation +that is custom-tailored to your environment. You can use Kustomize to render the +manifests with your own configuration and settings. + +If you plan to deviate from the default settings (and you most likely will for +production environments), using Kustomize is the recommended way of installing +Argo CD. + +The following are minimal examples of `kustomization.yaml` files for each of the +installation flavours: + +*Cluster-scope, standard availability:* + +```yaml +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: +- https://github.com/argoproj/argo-cd/manifests/cluster-install?ref=stable +``` + +*Cluster-scope, high availability:* + +```yaml +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: +- https://github.com/argoproj/argo-cd/manifests/ha/cluster-install?ref=stable +``` + +*Namespace-scope, standard availability:* + +```yaml +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: +- https://github.com/argoproj/argo-cd/manifests/namespace-install?ref=stable +``` + +*Namespace-scope, high availability:* + +```yaml +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: +- https://github.com/argoproj/argo-cd/manifests/ha/namespace-install?ref=stable +``` + +### Using Helm + +While Argo CD provides no official Helm charts, there is an awesome, community +maintained chart for Argo CD available. + +You can find this chart, along with installation instructions, at the +[Argo project's community managed Helm charts](https://github.com/argoproj/argo-helm/tree/master/charts/argo-cd) +GitHub repository. + +Be aware that the Helm chart's maintainers do some things differently, and you +might not find all of the terminology used here in the Chart. + +Also, please note that this is not an officially supported installation method. +Please direct all questions or problems you face using the Helm chart directly +to the chart's maintainers. + +## Post installation + +After installation, you should take some time to +[lockdown your installation](/operations/security). \ No newline at end of file diff --git a/docs/getting_started/install_cli.md b/docs/getting_started/install_cli.md new file mode 100644 index 0000000000000..62e1585ab9b9e --- /dev/null +++ b/docs/getting_started/install_cli.md @@ -0,0 +1,121 @@ +# Installing Argo CD CLI + +Argo CD provides a CLI (command line interface) tool for interaction through its +API. The CLI is currently available for the following platforms: + +* Linux on amd64 architecture, +* Mac (darwin) on amd64 architecture, +* Windows on amd64 architecture + +Ports for other architectures, such as arm32 and arm64, are not yet officially +available but are planned. + +Installing and/or using the CLI is completely optional, but recommended. The +CLI provides a convinient way to interact with Argo CD through its API. + +## Install on Linux + +We are not aware of official Argo CD CLI packages for Linux distributions, so +the easiest way to retrieve and install the CLI on your Linux machine is to +download the appropriate binary from GitHub using the shell and `curl`: + +### Manual download and install Linux CLI + +First, retrieve the version of the current release (or set the `ARGOCD_VERSION` +environment variable manually): + +```bash +ARGOCD_VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/') +``` + +Then, retrieve the binary from GitHub to a temporary location: + +```bash +curl -sSL -o /tmp/argocd-${ARGOCD_VERSION} https://github.com/argoproj/argo-cd/releases/download/${ARGOCD_VERSION}/argocd-linux-amd64 +``` + +Finally, make the binary executable and move it to a location within your +`$PATH`, in this example `/usr/local/bin`: + +```bash +chmod +x /tmp/argocd-${VERSION} +sudo mv /tmp/argocd-${VERSION} /usr/local/bin/argocd +``` + +Verify that your CLI is working properly: + +```bash +argocd version --client +``` + +This should give an output similar to the following (details may differ across +versions and platform): + +```bash +argocd: v1.8.1+c2547dc + BuildDate: 2020-12-10T02:57:57Z + GitCommit: c2547dca95437fdbb4d1e984b0592e6b9110d37f + GitTreeState: clean + GoVersion: go1.14.12 + Compiler: gc + Platform: linux/amd64 +``` + +## Install on MacOS (Darwin) + +You can install the MacOS CLI either using Homebrew, or manually by downloading +the CLI from GitHub. + +### Installing using Homebrew + +This is as simple as running + +```bash +brew install argocd +``` + +### Manual download and install MacOS CLI + +First, retrieve the version of the current release (or set the `ARGOCD_VERSION` +environment variable manually): + +```bash +ARGOCD_VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/') +``` + +Then, retrieve the binary from GitHub to a temporary location: + +```bash +curl -sSL -o /tmp/argocd-${ARGOCD_VERSION} https://github.com/argoproj/argo-cd/releases/download/${ARGOCD_VERSION}/argocd-darwin-amd64 +``` + +Finally, make the binary executable and move it to a location within your +`$PATH`, in this example `/usr/local/bin`: + +```bash +chmod +x /tmp/argocd-${VERSION} +sudo mv /tmp/argocd-${VERSION} /usr/local/bin/argocd +``` + +Verify that your CLI is working properly: + +```bash +argocd version --client +``` + +This should give an output similar to the following (details may differ across +versions and platform): + +```bash +argocd: v1.8.1+c2547dc + BuildDate: 2020-12-10T02:57:57Z + GitCommit: c2547dca95437fdbb4d1e984b0592e6b9110d37f + GitTreeState: clean + GoVersion: go1.14.12 + Compiler: gc + Platform: darwin/amd64 +``` + +## Install on Windows + +To be written. diff --git a/docs/index.md b/docs/index.md index 454b8c64589c1..e69de29bb2d1d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,93 +0,0 @@ -# Overview - - -## What Is Argo CD? - - -Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. - -![Argo CD UI](assets/argocd-ui.gif) - - -## Why Argo CD? - - -Application definitions, configurations, and environments should be declarative and version controlled. -Application deployment and lifecycle management should be automated, auditable, and easy to understand. - -## Getting Started - -### Quick Start - -```bash -kubectl create namespace argocd -kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml -``` - -Follow our [getting started guide](getting_started.md). Further user oriented [documentation](user-guide/) -is provided for additional features. If you are looking to upgrade ArgoCD, see the [upgrade guide](./operator-manual/upgrading/overview.md). -Developer oriented [documentation](developer-guide/) is available for people interested in building third-party integrations. - -## How it works - -Argo CD follows the **GitOps** pattern of using Git repositories as the source of truth for defining -the desired application state. Kubernetes manifests can be specified in several ways: - -* [kustomize](https://kustomize.io) applications -* [helm](https://helm.sh) charts -* [ksonnet](https://ksonnet.io) applications -* [jsonnet](https://jsonnet.org) files -* Plain directory of YAML/json manifests -* Any custom config management tool configured as a config management plugin - -Argo CD automates the deployment of the desired application states in the specified target environments. -Application deployments can track updates to branches, tags, or pinned to a specific version of -manifests at a Git commit. See [tracking strategies](user-guide/tracking_strategies.md) for additional -details about the different tracking strategies available. - -For a quick 10 minute overview of Argo CD, check out the demo presented to the Sig Apps community -meeting: - -[![Argo CD Overview Demo](https://img.youtube.com/vi/aWDIQMbp1cc/0.jpg)](https://youtu.be/aWDIQMbp1cc?t=1m4s) - -## Architecture - -![Argo CD Architecture](assets/argocd_architecture.png) - -Argo CD is implemented as a kubernetes controller which continuously monitors running applications -and compares the current, live state against the desired target state (as specified in the Git repo). -A deployed application whose live state deviates from the target state is considered `OutOfSync`. -Argo CD reports & visualizes the differences, while providing facilities to automatically or -manually sync the live state back to the desired target state. Any modifications made to the desired -target state in the Git repo can be automatically applied and reflected in the specified target -environments. - -For additional details, see [architecture overview](operator-manual/architecture.md). - -## Features - -* Automated deployment of applications to specified target environments -* Support for multiple config management/templating tools (Kustomize, Helm, Ksonnet, Jsonnet, plain-YAML) -* Ability to manage and deploy to multiple clusters -* SSO Integration (OIDC, OAuth2, LDAP, SAML 2.0, GitHub, GitLab, Microsoft, LinkedIn) -* Multi-tenancy and RBAC policies for authorization -* Rollback/Roll-anywhere to any application configuration committed in Git repository -* Health status analysis of application resources -* Automated configuration drift detection and visualization -* Automated or manual syncing of applications to its desired state -* Web UI which provides real-time view of application activity -* CLI for automation and CI integration -* Webhook integration (GitHub, BitBucket, GitLab) -* Access tokens for automation -* PreSync, Sync, PostSync hooks to support complex application rollouts (e.g.blue/green & canary upgrades) -* Audit trails for application events and API calls -* Prometheus metrics -* Parameter overrides for overriding ksonnet/helm parameters in Git - -## Development Status - -Argo CD is being actively developed by the community. Our releases can be found [here](https://github.com/argoproj/argo-cd/releases). - -## Adoption - -Organizations who have officially adopted Argo CD can be found [here](https://github.com/argoproj/argo-cd/blob/master/USERS.md). diff --git a/docs/operations/backup_restore.md b/docs/operations/backup_restore.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/index.md b/docs/operations/index.md new file mode 100644 index 0000000000000..90a97109fa6f6 --- /dev/null +++ b/docs/operations/index.md @@ -0,0 +1,3 @@ +# Operating & maintaining Argo CD + +## Architectural overview diff --git a/docs/operations/ingress/ambassador.md b/docs/operations/ingress/ambassador.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/ingress/aws.md b/docs/operations/ingress/aws.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/ingress/contour.md b/docs/operations/ingress/contour.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/ingress/index.md b/docs/operations/ingress/index.md new file mode 100644 index 0000000000000..fcdeebc142487 --- /dev/null +++ b/docs/operations/ingress/index.md @@ -0,0 +1,9 @@ +# Configuring Ingress for Argo CD + +## HTTP/2 and gRPC + +## Configuring the root context + +## Configuring the UI base path + +## Authenticating through multiple layers of authenticating reverse proxies diff --git a/docs/operations/ingress/nginx.md b/docs/operations/ingress/nginx.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/ingress/traefik.md b/docs/operations/ingress/traefik.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/metrics.md b/docs/operations/metrics.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operator-manual/high_availability.md b/docs/operations/scaling.md similarity index 71% rename from docs/operator-manual/high_availability.md rename to docs/operations/scaling.md index d1eb3faca7a8c..96d914607ea09 100644 --- a/docs/operator-manual/high_availability.md +++ b/docs/operations/scaling.md @@ -1,111 +1,27 @@ -# High Availability +## Common Scaling Problems + +* Syncs are taking too long to start or complete: + * Increase the parallelism limits for the [application controller](#argocd-application-controller) and [repo servers](#argocd-server) to allow more operations to run simultaneously + * If you're running many applications with auto-sync enabled, try changing `--app-resync-seconds` in the [application controller](#argocd-application-controller) to reduce the number of operations it's trying to do at once +* The application controller is using too many resources: + * Reduce the parallelism limits for the [application controller](#argocd-application-controller) to improve memory and CPU usage at the expense of sync throughput + * For Argo CD installations with multiple clusters and many applications, you can enable [controller sharding](#controller-sharding) to split the load across multiple instances +* Individual applications with large repositories or large sets of manifests taking too long to sync or refresh: + * See [monorepo scaling considerations](#monorepo-scaling-considerations) + +[Enabling metrics](./metrics.md) is an important way to ensure you have visibility into the performance of your Argo CD installation as it scales, and will be valuable for troubleshooting many of these issues. +## High Availability Mode Argo CD is largely stateless, all data is persisted as Kubernetes objects, which in turn is stored in Kubernetes' etcd. Redis is only used as a throw-away cache and can be lost. When lost, it will be rebuilt without loss of service. -A set HA of manifests are provided for users who wish to run Argo CD in a highly available manner. This runs more containers, and run Redis in HA mode. +A set of HA manifests are provided for users who wish to run Argo CD in a highly available manner. This runs more containers, and runs Redis in HA mode. [Manifests ⧉](https://github.com/argoproj/argo-cd/tree/master/manifests) !!! note The HA installation will require at least three different nodes due to pod anti-affinity roles in the specs. -## Scaling Up - -### argocd-repo-server - -**settings:** - -The `argocd-repo-server` is responsible for cloning Git repository, keeping it up to date and generating manifests using the appropriate tool. - -* `argocd-repo-server` fork/exec config management tool to generate manifests. The fork can fail due to lack of memory and limit on the number of OS threads. -The `--parallelismlimit` flag controls how many manifests generations are running concurrently and allows avoiding OOM kills. - -* the `argocd-repo-server` ensures that repository is in the clean state during the manifest generation using config management tools such as Kustomize, Helm -or custom plugin. As a result Git repositories with multiple applications might be affect repository server performance. -Read [Monorepo Scaling Considerations](#monorepo-scaling-considerations) for more information. - -* `argocd-repo-server` clones repository into `/tmp` ( of path specified in `TMPDIR` env variable ). Pod might run out of disk space if have too many repository -or repositories has a lot of files. To avoid this problem mount persistent volume. - -* `argocd-repo-server` `git ls-remote` to resolve ambiguous revision such as `HEAD`, branch or tag name. This operation is happening pretty frequently -and might fail. To avoid failed syncs use `ARGOCD_GIT_ATTEMPTS_COUNT` environment variable to retry failed requests. - -* `argocd-repo-server` Every 3m (by default) Argo CD checks for changes to the app manifests. Argo CD assumes by default that manifests only change when the repo changes, so it caches generated manifests (for 24h by default). With Kustomize remote bases, or Helm patch releases, the manifests can change even though the repo has not changed. By reducing the cache time, you can get the changes without waiting for 24h. Use `--repo-cache-expiration duration`, and we'd suggest in low volume environments you try '1h'. Bear in mind this will negate the benefit of caching if set too low. - -* `argocd-repo-server` fork exec config management tools such as `helm` or `kustomize` and enforces 90 seconds timeout. The timeout can be increased using `ARGOCD_EXEC_TIMEOUT` env variable. - -**metrics:** -* `argocd_git_request_total` - Number of git requests. The metric provides two tags: `repo` - Git repo URL; `request_type` - `ls-remote` or `fetch`. - -* `ARGOCD_ENABLE_GRPC_TIME_HISTOGRAM` (v1.8+) - environment variable that enables collecting RPC performance metrics. Enable it if you need to troubleshoot performance issue. Note: metric is expensive to both query and store! - -### argocd-application-controller - -**settings:** - -The `argocd-application-controller` uses `argocd-repo-server` to get generated manifests and Kubernetes API server to get actual cluster state. - -* each controller replica uses two separate queues to process application reconciliation (milliseconds) and app syncing (seconds). Number of queue processors for each queue is controlled by -`--status-processors` (20 by default) and `--operation-processors` (10 by default) flags. Increase number of processors if your Argo CD instance manages too many applications. -For 1000 application we use 50 for `--status-processors` and 25 for `--operation-processors` - -* The manifest generation typically takes the most time during reconciliation. The duration of manifest generation is limited to make sure controller refresh queue does not overflow. -The app reconciliation fails with `Context deadline exceeded` error if manifest generating taking too much time. As workaround increase value of `--repo-server-timeout-seconds` and -consider scaling up `argocd-repo-server` deployment. - -* The controller uses `kubectl` fork/exec to push changes into the cluster and to convert resource from preferred version into user specified version -(e.g. Deployment `apps/v1` into `extensions/v1beta1`). Same as config management tool `kubectl` fork/exec might cause pod OOM kill. Use `--kubectl-parallelism-limit` flag to limit -number of allowed concurrent kubectl fork/execs. - -* The controller uses Kubernetes watch APIs to maintain lightweight Kubernetes cluster cache. This allows to avoid querying Kubernetes during app reconciliation and significantly improve -performance. For performance reasons controller monitors and caches only preferred the version of a resource. During reconciliation, the controller might have to convert cached resource from -preferred version into a version of the resource stored in Git. If `kubectl convert` fails because conversion is not supported than controller fallback to Kubernetes API query which slows down -reconciliation. In this case advice user-preferred resource version in Git. - -* The controller polls Git every 3m by default. You can increase this duration using `--app-resync seconds` to reduce polling. - -* If the controller is managing too many clusters and uses too much memory then you can shard clusters across multiple -controller replicas. To enable sharding increase the number of replicas in `argocd-application-controller` `StatefulSet` -and repeat number of replicas in `ARGOCD_CONTROLLER_REPLICAS` environment variable. The strategic merge patch below -demonstrates changes required to configure two controller replicas. - -```yaml -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: argocd-application-controller -spec: - replicas: 2 - template: - spec: - containers: - - name: argocd-application-controller - env: - - name: ARGOCD_CONTROLLER_REPLICAS - value: "2" -``` - -* `ARGOCD_ENABLE_GRPC_TIME_HISTOGRAM` (v1.8+)- environment variable that enables collecting RPC performance metrics. Enable it if you need to troubleshoot performance issue. Note: metric is expensive to both query and store! - -**metrics** - -* `argocd_app_reconcile` - reports application reconciliation duration. Can be used to build reconciliation duration heat map to get high-level reconciliation performance picture. -* `argocd_app_k8s_request_total` - number of k8s requests per application. The number of fallback Kubernetes API queries - useful to identify which application has a resource with -non-preferred version and causes performance issues. - -### argocd-server - -The `argocd-server` is stateless and probably least likely to cause issues. You might consider increasing number of replicas to 3 or more to ensure there is no downtime during upgrades. - -**settings:** - -* The `ARGOCD_GRPC_MAX_SIZE_MB` environment variable allows specifying the max size of the server response message in megabytes. -The default value is 200. You might need to increase for an Argo CD instance that manages 3000+ applications. - -### argocd-dex-server, argocd-redis - -The `argocd-dex-server` uses an in-memory database, and two or more instances would have inconsistent data. `argocd-redis` is pre-configured with the understanding of only three total redis servers/sentinels. ## Monorepo Scaling Considerations @@ -121,13 +37,13 @@ If the manifest generation has no side effects then requests are processed in pa * **Multiple Custom plugin based applications:** avoid creating temporal files during manifest generation and and create `.argocd-allow-concurrency` file in app directory. - * **Multiple Kustomize or Ksonnet applications in same repository with [parameter overrides](../user-guide/parameters.md):** sorry, no workaround for now. + * **Multiple Kustomize or Ksonnet applications in same repository with parameter overrides:** sorry, no workaround for now. ### Webhook and Manifest Paths Annotation Argo CD aggressively caches generated manifests and uses repository commit SHA as a cache key. A new commit to the Git repository invalidates cache for all applications configured in the repository -that again negatively affect mono repositories with multiple applications. You might use [webhooks ⧉](https://github.com/argoproj/argo-cd/tree/master/docs/operator-manual/webhook) and `argocd.argoproj.io/manifest-generate-paths` Application +that again negatively affect mono repositories with multiple applications. You might use [webhooks ⧉](https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/webhook.md) and `argocd.argoproj.io/manifest-generate-paths` Application CRD annotation to solve this problem and improve performance. The `argocd.argoproj.io/manifest-generate-paths` contains a semicolon-separated list of paths within the Git repository that are used during manifest generation. The webhook compares paths specified in the annotation @@ -194,3 +110,133 @@ spec: path: my-application # ... ``` + +## Controller Sharding + +If the controller is managing too many clusters and uses too much memory then you can shard clusters across multiple +controller replicas. To enable sharding increase the number of replicas in `argocd-application-controller` `StatefulSet` +and repeat number of replicas in `ARGOCD_CONTROLLER_REPLICAS` environment variable. The strategic merge patch below +demonstrates changes required to configure two controller replicas. + +```yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: argocd-application-controller +spec: + replicas: 2 + template: + spec: + containers: + - name: argocd-application-controller + env: + - name: ARGOCD_CONTROLLER_REPLICAS + value: "2" +``` + +Each controller shard will manage a set group of clusters. A shard determines if it should reconcile changes for a cluster if the ID of the cluster mod `ARGOCD_CONTROLLER_REPLICAS` is equal to the index number of the controller shard. For example, if there are two controller shards (`argocd-application-controller-0` and `argocd-application-controller-1`) then the cluster with ID 3 will be managed by shard 1 and the cluster with ID 4 will be managed by shard 0. + +### "Pinning" Clusters + +If you have clusters that with different amounts or kinds of applications, it may be necessary to manually rebalance the number of clusters across shards to ensure you have even amounts of resource usage. If you add a `shard` key to the secret for a cluster, then the cluster will be assigned to that shard instead of the shard it would normally use according to the formula from the previous section. + +!!! Note + See the [managing clusters with the kubernetes API section](../../basics/clusters/manage#using-the-kubernetes-api) for more information on working with cluster secrets. + +Once you know the name of the cluster you want to pin, you need to add the `shard` key to the `Secret` resource using `kubectl edit secrets `. The value **must be base64 encoded and have no whitespace**. For example, you can find the value that would pin a cluster to shard 9 with `printf "9" | base64`, or `OQ==`. + +#### Using Kustomize + +It's also possible to use kustomize to generate pinned cluster secrets using [kustomize secret generators](https://kubernetes.io/docs/tasks/configmap-secret/managing-secret-using-kustomize/), which means if you already manage your Argo CD installation via kustomize it's easy to update it to track pinned clusters in git. Just add the following to your `kustomization.yaml` file: + +```yaml +secretGenerator: + - name: + literals: + - shard= + +generatorOptions: + disableNameSuffixHash: true +``` + +When applied, this will update the cluster secret in place to add the shard key, without changing any of the other secret data. + +It's important to add `disableNameSuffix` to the `generatorOptions` block, otherwise the generator will append a random hash to the secret name and the cluster secret cannot be patched correctly. + +## Settings Reference For Individual Components + +### argocd-application-controller + +The `argocd-application-controller` uses `argocd-repo-server` to get generated manifests, fetches cluster state from the Kubernetes API, and applies generated manifests during syncs using `kubectl`. + +**settings:** + +* For large instances of Argo CD where it's difficult to scale a single controller instance to meet resource demands, see [controller sharding](#controller-sharding) + +* each controller replica uses two separate queues to process application reconciliation (milliseconds) and app syncing (seconds). Number of queue processors for each queue is controlled by +`--status-processors` (20 by default) and `--operation-processors` (10 by default) flags. Increase number of processors if your Argo CD instance manages too many applications. +For 1000 application we use 50 for `--status-processors` and 25 for `--operation-processors` + +* The manifest generation typically takes the most time during reconciliation. The duration of manifest generation is limited to make sure controller refresh queue does not overflow. +The app reconciliation fails with `Context deadline exceeded` error if manifest generating taking too much time. As workaround increase value of `--repo-server-timeout-seconds` and +consider scaling up `argocd-repo-server` deployment. + +* The controller uses `kubectl` fork/exec to push changes into the cluster and to convert resource from preferred version into user specified version +(e.g. Deployment `apps/v1` into `extensions/v1beta1`). Same as config management tool `kubectl` fork/exec might cause pod OOM kill. Use `--kubectl-parallelism-limit` flag to limit +number of allowed concurrent kubectl fork/execs. + +* The controller uses Kubernetes watch APIs to maintain lightweight Kubernetes cluster cache. This allows to avoid querying Kubernetes during app reconciliation and significantly improve +performance. For performance reasons controller monitors and caches only preferred the version of a resource. During reconciliation, the controller might have to convert cached resource from +preferred version into a version of the resource stored in Git. If `kubectl convert` fails because conversion is not supported than controller fallback to Kubernetes API query which slows down +reconciliation. In this case advice user-preferred resource version in Git. + +* The controller polls Git every 3m by default. You can increase this duration using `--app-resync seconds` to reduce polling. + +* `ARGOCD_ENABLE_GRPC_TIME_HISTOGRAM` (v1.8+)- environment variable that enables collecting RPC performance metrics. Enable it if you need to troubleshoot performance issue. Note: metric is expensive to both query and store! + +**metrics** + +* `argocd_app_reconcile` - reports application reconciliation duration. Can be used to build reconciliation duration heat map to get high-level reconciliation performance picture. +* `argocd_app_k8s_request_total` - number of k8s requests per application. The number of fallback Kubernetes API queries - useful to identify which application has a resource with +non-preferred version and causes performance issues. +### argocd-repo-server + +The `argocd-repo-server` is responsible for cloning Git repositories, keeping them up to date and generating manifests using the appropriate tool. + +**settings:** + +* `argocd-repo-server` fork/exec config management tool to generate manifests. The fork can fail due to lack of memory and limit on the number of OS threads. +The `--parallelismlimit` flag controls how many manifests generations are running concurrently and allows avoiding OOM kills. + +* the `argocd-repo-server` ensures that repository is in the clean state during the manifest generation using config management tools such as Kustomize, Helm +or custom plugin. As a result Git repositories with multiple applications might be affect repository server performance. +Read [Monorepo Scaling Considerations](#monorepo-scaling-considerations) for more information. + +* `argocd-repo-server` clones repository into `/tmp` ( of path specified in `TMPDIR` env variable ). Pod might run out of disk space if have too many repository +or repositories has a lot of files. To avoid this problem mount persistent volume. + +* `argocd-repo-server` `git ls-remote` to resolve ambiguous revision such as `HEAD`, branch or tag name. This operation is happening pretty frequently +and might fail. To avoid failed syncs use `ARGOCD_GIT_ATTEMPTS_COUNT` environment variable to retry failed requests. + +* `argocd-repo-server` Every 3m (by default) Argo CD checks for changes to the app manifests. Argo CD assumes by default that manifests only change when the repo changes, so it caches generated manifests (for 24h by default). With Kustomize remote bases, or Helm patch releases, the manifests can change even though the repo has not changed. By reducing the cache time, you can get the changes without waiting for 24h. Use `--repo-cache-expiration duration`, and we'd suggest in low volume environments you try '1h'. Bear in mind this will negate the benefit of caching if set too low. + +* `argocd-repo-server` fork exec config management tools such as `helm` or `kustomize` and enforces 90 seconds timeout. The timeout can be increased using `ARGOCD_EXEC_TIMEOUT` env variable. + +**metrics:** + +* `argocd_git_request_total` - Number of git requests. The metric provides two tags: `repo` - Git repo URL; `request_type` - `ls-remote` or `fetch`. + +* `ARGOCD_ENABLE_GRPC_TIME_HISTOGRAM` (v1.8+) - environment variable that enables collecting RPC performance metrics. Enable it if you need to troubleshoot performance issue. Note: metric is expensive to both query and store! + +### argocd-server + +The `argocd-server` is stateless and probably least likely to cause issues. You might consider increasing number of replicas to 3 or more to ensure there is no downtime during upgrades. + +**settings:** + +* The `ARGOCD_GRPC_MAX_SIZE_MB` environment variable allows specifying the max size of the server response message in megabytes. +The default value is 200. You might need to increase for an Argo CD instance that manages 3000+ applications. + +### argocd-dex-server, argocd-redis + +The `argocd-dex-server` uses an in-memory database, and two or more instances would have inconsistent data. `argocd-redis` is pre-configured with the understanding of only three total redis servers/sentinels. diff --git a/docs/operations/security.md b/docs/operations/security.md new file mode 100644 index 0000000000000..8ee7939a8226e --- /dev/null +++ b/docs/operations/security.md @@ -0,0 +1,19 @@ +# Securing your Argo CD installation + +The following is a compilation of best practises to lock-down your installation +in order to make it more secure, both in terms of operational stability and +access control. + +While these steps are completely optional, we highly recommend to implement them. + +## Setup Single Sign On (SSO) or local users + +## Setup Role Based Access Control (RBAC) + +## Disable the default admin user + +## Setup resource limits for Argo CD workloads + +## Restrict network access + +## Backup configuration diff --git a/docs/operations/sso/overview.md b/docs/operations/sso/overview.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/upgrading.md b/docs/operations/upgrading.md new file mode 100644 index 0000000000000..d5681bbaf411f --- /dev/null +++ b/docs/operations/upgrading.md @@ -0,0 +1 @@ +# Upgrading Argo CD \ No newline at end of file diff --git a/docs/operations/upgrading/1_1-1_2.md b/docs/operations/upgrading/1_1-1_2.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/upgrading/1_2-1_3.md b/docs/operations/upgrading/1_2-1_3.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/upgrading/1_3-1_4.md b/docs/operations/upgrading/1_3-1_4.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/upgrading/1_4-1_5.md b/docs/operations/upgrading/1_4-1_5.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/upgrading/1_5-1_6.md b/docs/operations/upgrading/1_5-1_6.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/upgrading/1_6-1_7.md b/docs/operations/upgrading/1_6-1_7.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/upgrading/1_7-1_8.md b/docs/operations/upgrading/1_7-1_8.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/upgrading/index.md b/docs/operations/upgrading/index.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operations/users.md b/docs/operations/users.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/operator-manual/application.yaml b/docs/operator-manual/application.yaml deleted file mode 100644 index e1c5acfe53775..0000000000000 --- a/docs/operator-manual/application.yaml +++ /dev/null @@ -1,121 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: guestbook - # You'll usually want to add your resources to the argocd namespace. - namespace: argocd - # Add a this finalizer ONLY if you want these to cascade delete. - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - # The project the application belongs to. - project: default - - # Source of the application manifests - source: - repoURL: https://github.com/argoproj/argocd-example-apps.git - targetRevision: HEAD - path: guestbook - - # helm specific config - helm: - # Extra parameters to set (same as setting through values.yaml, but these take precedence) - parameters: - - name: "nginx-ingress.controller.service.annotations.external-dns\\.alpha\\.kubernetes\\.io/hostname" - value: mydomain.example.com - - name: "ingress.annotations.kubernetes\\.io/tls-acme" - value: "true" - forceString: true # ensures that value is treated as a string - - # Release name override (defaults to application name) - releaseName: guestbook - - # Helm values files for overriding values in the helm chart - # The path is relative to the spec.source.path directory defined above - valueFiles: - - values-prod.yaml - - # Values file as block file - values: | - ingress: - enabled: true - path: / - hosts: - - mydomain.example.com - annotations: - kubernetes.io/ingress.class: nginx - kubernetes.io/tls-acme: "true" - labels: {} - tls: - - secretName: mydomain-tls - hosts: - - mydomain.example.com - - # Optional Helm version to template with. If omitted it will fallback to look at the 'apiVersion' in Chart.yaml - # and decide which Helm binary to use automatically. This field can be either 'v2' or 'v3'. - version: v2 - - # kustomize specific config - kustomize: - # Optional kustomize version. Note: version must be configured in argocd-cm ConfigMap - version: v3.5.4 - # Optional image name prefix - namePrefix: prod- - # Optional images passed to "kustomize edit set image". - images: - - gcr.io/heptio-images/ks-guestbook-demo:0.2 - - # directory - directory: - recurse: true - jsonnet: - # A list of Jsonnet External Variables - extVars: - - name: foo - value: bar - # You can use "code to determine if the value is either string (false, the default) or Jsonnet code (if code is true). - - code: true - name: baz - value: "true" - # A list of Jsonnet Top-level Arguments - tlas: - - code: false - name: foo - value: bar - - # plugin specific config - plugin: - name: mypluginname - # environment variables passed to the plugin - env: - - name: FOO - value: bar - - # Destination cluster and namespace to deploy the application - destination: - server: https://kubernetes.default.svc - namespace: guestbook - - # Sync policy - syncPolicy: - automated: # automated sync by default retries failed attempts 5 times with following delays between attempts ( 5s, 10s, 20s, 40s, 80s ); retry controlled using `retry` field. - prune: true # Specifies if resources should be pruned during auto-syncing ( false by default ). - selfHeal: true # Specifies if partial app sync should be executed when resources are changed only in target Kubernetes cluster and no git change detected ( false by default ). - allowEmpty: false # Allows deleting all application resources during automatic syncing ( false by default ). - syncOptions: # Sync options which modifies sync behavior - - Validate=false # disables resource validation (equivalent to 'kubectl apply --validate=false') ( true by default ). - - CreateNamespace=true # Namespace Auto-Creation ensures that namespace specified as the application destination exists in the destination cluster. - # The retry feature is available since v1.7 - retry: - limit: 5 # number of failed sync attempt retries; unlimited number of attempts if less than 0 - backoff: - duration: 5s # the amount to back off. Default unit is seconds, but could also be a duration (e.g. "2m", "1h") - factor: 2 # a factor to multiply the base duration after each failed retry - maxDuration: 3m # the maximum amount of time allowed for the backoff strategy - - # Ignore differences at the specified json pointers - ignoreDifferences: - - group: apps - kind: Deployment - jsonPointers: - - /spec/replicas diff --git a/docs/operator-manual/architecture.md b/docs/operator-manual/architecture.md deleted file mode 100644 index 0edac18090daf..0000000000000 --- a/docs/operator-manual/architecture.md +++ /dev/null @@ -1,34 +0,0 @@ - -# Architectural Overview - -![Argo CD Architecture](../assets/argocd_architecture.png) - -## Components - -### API Server -The API server is a gRPC/REST server which exposes the API consumed by the Web UI, CLI, and CI/CD -systems. It has the following responsibilities: - -* application management and status reporting -* invoking of application operations (e.g. sync, rollback, user-defined actions) -* repository and cluster credential management (stored as K8s secrets) -* authentication and auth delegation to external identity providers -* RBAC enforcement -* listener/forwarder for Git webhook events - -### Repository Server -The repository server is an internal service which maintains a local cache of the Git repository -holding the application manifests. It is responsible for generating and returning the Kubernetes -manifests when provided the following inputs: - -* repository URL -* revision (commit, tag, branch) -* application path -* template specific settings: parameters, ksonnet environments, helm values.yaml - -### Application Controller -The application controller is a Kubernetes controller which continuously monitors running -applications and compares the current, live state against the desired target state (as specified in -the repo). It detects `OutOfSync` application state and optionally takes corrective action. It -is responsible for invoking any user-defined hooks for lifecycle events (PreSync, Sync, PostSync) - diff --git a/docs/operator-manual/argocd-cm.yaml b/docs/operator-manual/argocd-cm.yaml deleted file mode 100644 index c5507a46b66de..0000000000000 --- a/docs/operator-manual/argocd-cm.yaml +++ /dev/null @@ -1,260 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - # Argo CD's externally facing base URL (optional). Required when configuring SSO - url: https://argo-cd-demo.argoproj.io - - # Enables application status badge feature - statusbadge.enabled: "true" - - # Enables anonymous user access. The anonymous users get default role permissions specified argocd-rbac-cm.yaml. - users.anonymous.enabled: "true" - # Specifies token expiration duration - users.session.duration: "24h" - - # Enables google analytics tracking is specified - ga.trackingid: "UA-12345-1" - # Unless set to 'false' then user ids are hashed before sending to google analytics - ga.anonymizeusers: "false" - - # the URL for getting chat help, this will typically be your Slack channel for support - help.chatUrl: "https://mycorp.slack.com/argo-cd" - # the text for getting chat help, defaults to "Chat now!" - help.chatText: "Chat now!" - - # A dex connector configuration (optional). See SSO configuration documentation: - # https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/sso - # https://github.com/dexidp/dex/tree/master/Documentation/connectors - dex.config: | - connectors: - # GitHub example - - type: github - id: github - name: GitHub - config: - clientID: aabbccddeeff00112233 - clientSecret: $dex.github.clientSecret - orgs: - - name: your-github-org - teams: - - red-team - # It is possible to provide custom static client for dex if you want to reuse it - # with other services - # staticClients: - # - id: argo-workflow - # name: Argo Workflow - # redirectURIs: - # - https://argo/oauth2/callback - # secret: $secretReference - - # OIDC configuration as an alternative to dex (optional). - oidc.config: | - name: Okta - issuer: https://dev-123456.oktapreview.com - clientID: aaaabbbbccccddddeee - clientSecret: $oidc.okta.clientSecret - # Optional set of OIDC scopes to request. If omitted, defaults to: ["openid", "profile", "email", "groups"] - requestedScopes: ["openid", "profile", "email"] - # Optional set of OIDC claims to request on the ID token. - requestedIDTokenClaims: {"groups": {"essential": true}} - - # Git repositories configure Argo CD with (optional). - # This list is updated when configuring/removing repos from the UI/CLI - # Note: 'type: helm' field is supported in v1.3+. Use 'helm.repositories' for older versions. - repositories: | - - url: https://github.com/argoproj/my-private-repository - passwordSecret: - name: my-secret - key: password - usernameSecret: - name: my-secret - key: username - sshPrivateKeySecret: - name: my-secret - key: sshPrivateKey - - type: helm - url: https://storage.googleapis.com/istio-prerelease/daily-build/master-latest-daily/charts - name: istio.io - - type: helm - url: https://my-private-chart-repo.internal - name: private-repo - usernameSecret: - name: my-secret - key: username - passwordSecret: - name: my-secret - key: password - - # Non-standard and private Helm repositories (deprecated in 1.3). - helm.repositories: | - - url: https://storage.googleapis.com/istio-prerelease/daily-build/master-latest-daily/charts - name: istio.io - - url: https://my-private-chart-repo.internal - name: private-repo - usernameSecret: - name: my-secret - key: username - passwordSecret: - name: my-secret - key: password - - # Configuration to customize resource behavior (optional). Keys are in the form: group/Kind. - resource.customizations: | - admissionregistration.k8s.io/MutatingWebhookConfiguration: - # List of json pointers in the object to ignore differences - ignoreDifferences: | - jsonPointers: - - /webhooks/0/clientConfig/caBundle - certmanager.k8s.io/Certificate: - # Lua script for customizing the health status assessment - health.lua: | - hs = {} - if obj.status ~= nil then - if obj.status.conditions ~= nil then - for i, condition in ipairs(obj.status.conditions) do - if condition.type == "Ready" and condition.status == "False" then - hs.status = "Degraded" - hs.message = condition.message - return hs - end - if condition.type == "Ready" and condition.status == "True" then - hs.status = "Healthy" - hs.message = condition.message - return hs - end - end - end - end - hs.status = "Progressing" - hs.message = "Waiting for certificate" - return hs - cert-manager.io/Certificate: - # Lua script for customizing the health status assessment - health.lua: | - hs = {} - if obj.status ~= nil then - if obj.status.conditions ~= nil then - for i, condition in ipairs(obj.status.conditions) do - if condition.type == "Ready" and condition.status == "False" then - hs.status = "Degraded" - hs.message = condition.message - return hs - end - if condition.type == "Ready" and condition.status == "True" then - hs.status = "Healthy" - hs.message = condition.message - return hs - end - end - end - end - hs.status = "Progressing" - hs.message = "Waiting for certificate" - return hs - apps/Deployment: - # List of Lua Scripts to introduce custom actions - actions: | - # Lua Script to indicate which custom actions are available on the resource - discovery.lua: | - actions = {} - actions["restart"] = {} - return actions - definitions: - - name: restart - # Lua Script to modify the obj - action.lua: | - local os = require("os") - if obj.spec.template.metadata == nil then - obj.spec.template.metadata = {} - end - if obj.spec.template.metadata.annotations == nil then - obj.spec.template.metadata.annotations = {} - end - obj.spec.template.metadata.annotations["kubectl.kubernetes.io/restartedAt"] = os.date("!%Y-%m-%dT%XZ") - return obj - - # Configuration to completely ignore entire classes of resource group/kinds (optional). - # Excluding high-volume resources improves performance and memory usage, and reduces load and - # bandwidth to the Kubernetes API server. - # These are globs, so a "*" will match all values. - # If you omit groups/kinds/clusters then they will match all groups/kind/clusters. - # NOTE: events.k8s.io and metrics.k8s.io are excluded by default - resource.exclusions: | - - apiGroups: - - repositories.stash.appscode.com - kinds: - - Snapshot - clusters: - - "*.local" - - # By default all resource group/kinds are included. The resource.inclusions setting allows customizing - # list of included group/kinds. - resource.inclusions: | - - apiGroups: - - repositories.stash.appscode.com - kinds: - - Snapshot - clusters: - - "*.local" - - resource.compareoptions: | - # if ignoreAggregatedRoles set to true then differences caused by aggregated roles in RBAC resources are ignored. - ignoreAggregatedRoles: true - - # disables status field diffing in specified resource types - # 'crd' - CustomResourceDefinitions (default) - # 'all' - all resources - # 'none' - disabled - ignoreResourceStatusField: crd - - # Configuration to add a config management plugin. - configManagementPlugins: | - - name: kasane - init: - command: [kasane, update] - generate: - command: [kasane, show] - - # Build options/parameters to use with `kustomize build` (optional) - kustomize.buildOptions: --load_restrictor none - - # Additional Kustomize versions and corresponding binary paths - kustomize.version.v3.5.1: /custom-tools/kustomize_3_5_1 - kustomize.version.v3.5.4: /custom-tools/kustomize_3_5_4 - - # The metadata.label key name where Argo CD injects the app name as a tracking label (optional). - # Tracking labels are used to determine which resources need to be deleted when pruning. - # If omitted, Argo CD injects the app name into the label: 'app.kubernetes.io/instance' - application.instanceLabelKey: mycompany.com/appname - - # disables admin user. Admin is enabled by default - admin.enabled: "false" - # add an additional local user with apiKey and login capabilities - # apiKey - allows generating API keys - # login - allows to login using UI - accounts.alice: apiKey, login - # disables user. User is enabled by default - accounts.alice.enabled: "false" - - # The location of optional user-defined CSS that is loaded at runtime. - # Local CSS Files: - # - If the supplied path is to a file mounted on the argocd-server container, that file should be mounted - # within a subdirectory of the existing "/shared/app" directory (e.g. "/shared/app/custom"). Otherwise, - # the file will likely fail to be imported by the browser with an "incorrect MIME type" error. - # - The path should be specified relative to the "/shared/app" directory; not as an absolute path. - # Remote CSS Files: - # - Files may also be loaded from remote locations via fully qualified URLs. - ui.cssurl: "./custom/my-styles.css" - - # An optional user-defined banner message that's displayed at the top of every UI page. - # Every time this is updated, it will clear a user's localStorage telling the UI to hide the banner forever. - ui.bannercontent: "Hello there!" - # Optional link for banner. If set, the entire banner text will become a link. - # You can have bannercontent without a bannerurl, but not the other way around. - ui.bannerurl: "https://argoproj.github.io" diff --git a/docs/operator-manual/argocd-rbac-cm.yaml b/docs/operator-manual/argocd-rbac-cm.yaml deleted file mode 100644 index 75ceb093779e5..0000000000000 --- a/docs/operator-manual/argocd-rbac-cm.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-rbac-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-rbac-cm - app.kubernetes.io/part-of: argocd -data: - # policy.csv is an file containing user-defined RBAC policies and role definitions (optional). - # Policy rules are in the form: - # p, subject, resource, action, object, effect - # Role definitions and bindings are in the form: - # g, subject, inherited-subject - # See https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/rbac.md for additional information. - policy.csv: | - # Grant all members of the group 'my-org:team-alpha; the ability to sync apps in 'my-project' - p, my-org:team-alpha, applications, sync, my-project/*, allow - # Grant all members of 'my-org:team-beta' admins - g, my-org:team-beta, role:admin - - # policy.default is the name of the default role which Argo CD will falls back to, when - # authorizing API requests (optional). If omitted or empty, users may be still be able to login, - # but will see no apps, projects, etc... - policy.default: role:readonly - - # scopes controls which OIDC scopes to examine during rbac enforcement (in addition to `sub` scope). - # If omitted, defaults to: '[groups]'. The scope value can be a string, or a list of strings. - scopes: '[cognito:groups, email]' - diff --git a/docs/operator-manual/argocd-secret.yaml b/docs/operator-manual/argocd-secret.yaml deleted file mode 100644 index d19f08ec2e7a6..0000000000000 --- a/docs/operator-manual/argocd-secret.yaml +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - name: argocd-secret - namespace: argocd - labels: - app.kubernetes.io/name: argocd-secret - app.kubernetes.io/part-of: argocd -type: Opaque -data: - # TLS certificate and private key for API server (required). - # Autogenerated with a self-signed certificate when keys are missing or invalid. - tls.crt: - tls.key: - - # bcrypt hash of the admin password and its last modified time (required). - # Autogenerated to be the name of the argocd-server pod when missing. - admin.password: - admin.passwordMtime: - - # random server signature key for session validation (required). - # Autogenerated when missing. - server.secretkey: - - # Shared secrets for authenticating GitHub, GitLab, BitBucket webhook events (optional). - # See https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/webhook.md for additional details. - # github webhook secret - webhook.github.secret: shhhh! it's a github secret - # gitlab webhook secret - webhook.gitlab.secret: shhhh! it's a gitlab secret - # bitbucket webhook secret - webhook.bitbucket.uuid: your-bitbucket-uuid - # bitbucket server webhook secret - webhook.bitbucketserver.secret: shhhh! it's a bitbucket server secret - # gogs server webhook secret - webhook.gogs.secret: shhhh! it's a gogs server secret - - # an additional user password and its last modified time (see user definition in argocd-cm.yaml) - accounts.alice.password: - accounts.alice.passwordMtime: - # list of generated account tokens/api keys - accounts.alice.tokens: | - [{"id":"123","iat":1583789194,"exp":1583789194}] \ No newline at end of file diff --git a/docs/operator-manual/argocd-ssh-known-hosts-cm.yaml b/docs/operator-manual/argocd-ssh-known-hosts-cm.yaml deleted file mode 100644 index 7f129a142836e..0000000000000 --- a/docs/operator-manual/argocd-ssh-known-hosts-cm.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - labels: - app.kubernetes.io/name: argocd-ssh-known-hosts-cm - app.kubernetes.io/part-of: argocd - name: argocd-ssh-known-hosts-cm -data: - ssh_known_hosts: | - bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw== - github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ== - gitlab.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFSMqzJeV9rUzU4kWitGjeR4PWSa29SPqJ1fVkhtj3Hw9xjLVXVYrU9QlYWrOLXBpQ6KWjbjTDTdDkoohFzgbEY= - gitlab.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAfuCHKVTjquxvt6CM6tdG4SLp1Btn/nOeHHE5UOzRdf - gitlab.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsj2bNKTBSpIYDEGk9KxsGh3mySTRgMtXL583qmBpzeQ+jqCMRgBqB98u3z++J1sKlXHWfM9dyhSevkMwSbhoR8XIq/U0tCNyokEi/ueaBMCvbcTHhO7FcwzY92WK4Yt0aGROY5qX2UKSeOvuP4D6TPqKF1onrSzH9bx9XUf2lEdWT/ia1NEKjunUqu1xOB/StKDHMoX4/OKyIzuS0q/T1zOATthvasJFoPrAjkohTyaDUz2LN5JoH839hViyEG82yB+MjcFV5MU3N1l1QL3cVUCh93xSaua1N85qivl+siMkPGbO5xR/En4iEY6K2XPASUEMaieWVNTRCtJ4S8H+9 - ssh.dev.azure.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Hr1oTWqNqOlzGJOfGJ4NakVyIzf1rXYd4d7wo6jBlkLvCA4odBlL0mDUyZ0/QUfTTqeu+tm22gOsv+VrVTMk6vwRU75gY/y9ut5Mb3bR5BV58dKXyq9A9UeB5Cakehn5Zgm6x1mKoVyf+FFn26iYqXJRgzIZZcZ5V6hrE0Qg39kZm4az48o0AUbf6Sp4SLdvnuMa2sVNwHBboS7EJkm57XQPVU3/QpyNLHbWDdzwtrlS+ez30S3AdYhLKEOxAG8weOnyrtLJAUen9mTkol8oII1edf7mWWbWVf0nBmly21+nZcmCTISQBtdcyPaEno7fFQMDD26/s0lfKob4Kw8H - vs-ssh.visualstudio.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Hr1oTWqNqOlzGJOfGJ4NakVyIzf1rXYd4d7wo6jBlkLvCA4odBlL0mDUyZ0/QUfTTqeu+tm22gOsv+VrVTMk6vwRU75gY/y9ut5Mb3bR5BV58dKXyq9A9UeB5Cakehn5Zgm6x1mKoVyf+FFn26iYqXJRgzIZZcZ5V6hrE0Qg39kZm4az48o0AUbf6Sp4SLdvnuMa2sVNwHBboS7EJkm57XQPVU3/QpyNLHbWDdzwtrlS+ez30S3AdYhLKEOxAG8weOnyrtLJAUen9mTkol8oII1edf7mWWbWVf0nBmly21+nZcmCTISQBtdcyPaEno7fFQMDD26/s0lfKob4Kw8H diff --git a/docs/operator-manual/argocd-tls-certs-cm.yaml b/docs/operator-manual/argocd-tls-certs-cm.yaml deleted file mode 100644 index fedc39d1aca7b..0000000000000 --- a/docs/operator-manual/argocd-tls-certs-cm.yaml +++ /dev/null @@ -1,45 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-tls-certs-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - server.example.com: | - -----BEGIN CERTIFICATE----- - MIIF1zCCA7+gAwIBAgIUQdTcSHY2Sxd3Tq/v1eIEZPCNbOowDQYJKoZIhvcNAQEL - BQAwezELMAkGA1UEBhMCREUxFTATBgNVBAgMDExvd2VyIFNheG9ueTEQMA4GA1UE - BwwHSGFub3ZlcjEVMBMGA1UECgwMVGVzdGluZyBDb3JwMRIwEAYDVQQLDAlUZXN0 - c3VpdGUxGDAWBgNVBAMMD2Jhci5leGFtcGxlLmNvbTAeFw0xOTA3MDgxMzU2MTda - Fw0yMDA3MDcxMzU2MTdaMHsxCzAJBgNVBAYTAkRFMRUwEwYDVQQIDAxMb3dlciBT - YXhvbnkxEDAOBgNVBAcMB0hhbm92ZXIxFTATBgNVBAoMDFRlc3RpbmcgQ29ycDES - MBAGA1UECwwJVGVzdHN1aXRlMRgwFgYDVQQDDA9iYXIuZXhhbXBsZS5jb20wggIi - MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCv4mHMdVUcafmaSHVpUM0zZWp5 - NFXfboxA4inuOkE8kZlbGSe7wiG9WqLirdr39Ts+WSAFA6oANvbzlu3JrEQ2CHPc - CNQm6diPREFwcDPFCe/eMawbwkQAPVSHPts0UoRxnpZox5pn69ghncBR+jtvx+/u - P6HdwW0qqTvfJnfAF1hBJ4oIk2AXiip5kkIznsAh9W6WRy6nTVCeetmIepDOGe0G - ZJIRn/OfSz7NzKylfDCat2z3EAutyeT/5oXZoWOmGg/8T7pn/pR588GoYYKRQnp+ - YilqCPFX+az09EqqK/iHXnkdZ/Z2fCuU+9M/Zhrnlwlygl3RuVBI6xhm/ZsXtL2E - Gxa61lNy6pyx5+hSxHEFEJshXLtioRd702VdLKxEOuYSXKeJDs1x9o6cJ75S6hko - Ml1L4zCU+xEsMcvb1iQ2n7PZdacqhkFRUVVVmJ56th8aYyX7KNX6M9CD+kMpNm6J - kKC1li/Iy+RI138bAvaFplajMF551kt44dSvIoJIbTr1LigudzWPqk31QaZXV/4u - kD1n4p/XMc9HYU/was/CmQBFqmIZedTLTtK7clkuFN6wbwzdo1wmUNgnySQuMacO - gxhHxxzRWxd24uLyk9Px+9U3BfVPaRLiOPaPoC58lyVOykjSgfpgbus7JS69fCq7 - bEH4Jatp/10zkco+UQIDAQABo1MwUTAdBgNVHQ4EFgQUjXH6PHi92y4C4hQpey86 - r6+x1ewwHwYDVR0jBBgwFoAUjXH6PHi92y4C4hQpey86r6+x1ewwDwYDVR0TAQH/ - BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAFE4SdKsX9UsLy+Z0xuHSxhTd0jfn - Iih5mtzb8CDNO5oTw4z0aMeAvpsUvjJ/XjgxnkiRACXh7K9hsG2r+ageRWGevyvx - CaRXFbherV1kTnZw4Y9/pgZTYVWs9jlqFOppz5sStkfjsDQ5lmPJGDii/StENAz2 - XmtiPOgfG9Upb0GAJBCuKnrU9bIcT4L20gd2F4Y14ccyjlf8UiUi192IX6yM9OjT - +TuXwZgqnTOq6piVgr+FTSa24qSvaXb5z/mJDLlk23npecTouLg83TNSn3R6fYQr - d/Y9eXuUJ8U7/qTh2Ulz071AO9KzPOmleYPTx4Xty4xAtWi1QE5NHW9/Ajlv5OtO - OnMNWIs7ssDJBsB7VFC8hcwf79jz7kC0xmQqDfw51Xhhk04kla+v+HZcFW2AO9so - 6ZdVHHQnIbJa7yQJKZ+hK49IOoBR6JgdB5kymoplLLiuqZSYTcwSBZ72FYTm3iAr - jzvt1hxpxVDmXvRnkhRrIRhK4QgJL0jRmirBjDY+PYYd7bdRIjN7WNZLFsgplnS8 - 9w6CwG32pRlm0c8kkiQ7FXA6BYCqOsDI8f1VGQv331OpR2Ck+FTv+L7DAmg6l37W - +LB9LGh4OAp68ImTjqf6ioGKG0RBSznwME+r4nXtT1S/qLR6ASWUS4ViWRhbRlNK - XWyb96wrUlv+E8I= - -----END CERTIFICATE----- - diff --git a/docs/operator-manual/cluster-bootstrapping.md b/docs/operator-manual/cluster-bootstrapping.md deleted file mode 100644 index 3d9fe5e939c01..0000000000000 --- a/docs/operator-manual/cluster-bootstrapping.md +++ /dev/null @@ -1,95 +0,0 @@ -# Cluster Bootstrapping - -This guide for operators who have already installed Argo CD, and have a new cluster and are looking to install many apps in that cluster. - -There's no one particular pattern to solve this problem, e.g. you could write a script to create your apps, or you could even manually create them. However, users of Argo CD tend to use the **app of apps pattern**. - -## App Of Apps Pattern - -[Declaratively](declarative-setup.md) specify one Argo CD app that consists only of other apps. - -![Application of Applications](../assets/application-of-applications.png) - -### Helm Example - -This example shows how to use Helm to achieve this. You can, of course, use another tool if you like. - -A typical layout of your Git repository for this might be: - -``` -├── Chart.yaml -├── templates -│   ├── guestbook.yaml -│   ├── helm-dependency.yaml -│   ├── helm-guestbook.yaml -│   └── kustomize-guestbook.yaml -└── values.yaml -``` - -`Chart.yaml` is boiler-plate. - -`templates` contains one file for each child app, roughly: - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: guestbook - namespace: argocd - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - destination: - namespace: argocd - server: {{ .Values.spec.destination.server }} - project: default - source: - path: guestbook - repoURL: https://github.com/argoproj/argocd-example-apps - targetRevision: HEAD -``` - -The sync policy to automated + prune, so that child apps are automatically created, synced, and deleted when the manifest is changed, but you may wish to disable this. I've also added the finalizer, which will ensure that your apps are deleted correctly. - -Fix the revision to a specific Git commit SHA to make sure that, even if the child apps repo changes, the app will only change when the parent app change that revision. Alternatively, you can set it to HEAD or a branch name. - -As you probably want to override the cluster server, this is a templated values. - -`values.yaml` contains the default values: - -```yaml -spec: - destination: - server: https://kubernetes.default.svc -``` - -Next, you need to create and sync your parent app, e.g. via the CLI: - -```bash -argocd app create apps \ - --dest-namespace argocd \ - --dest-server https://kubernetes.default.svc \ - --repo https://github.com/argoproj/argocd-example-apps.git \ - --path apps -argocd app sync apps -``` - -The parent app will appear as in-sync but the child apps will be out of sync: - -![New App Of Apps](../assets/new-app-of-apps.png) - -You can either sync via the UI, firstly filter by the correct label: - -![Filter Apps](../assets/filter-apps.png) - -Then select the "out of sync" apps and sync: - -![Sync Apps](../assets/sync-apps.png) - -Or, via the CLI: - -```bash -argocd app sync -l app.kubernetes.io/instance=apps -``` - -View [the example on Github](https://github.com/argoproj/argocd-example-apps/tree/master/apps). diff --git a/docs/operator-manual/custom-styles.md b/docs/operator-manual/custom-styles.md deleted file mode 100644 index c06fdae624e02..0000000000000 --- a/docs/operator-manual/custom-styles.md +++ /dev/null @@ -1,98 +0,0 @@ -# Custom Styles - -Argo CD has imports the majority of its UI stylesheets from the [argo-ui](https://github.com/argoproj/argo-ui) project. -Sometimes, it may be desired to customize certain components of the UI for branding purposes or to -help distinguish between multiple instances of Argo CD running in different environments. - -Such custom styling can be applied either by supplying a URL to a remotely hosted CSS file, or by -loading a CSS file directly onto the argocd-server container. Both mechanisms are driven by modifying -the argocd-cm configMap. - -## Adding Styles Via Remote URL - -The first method simply requires the addition of the remote URL to the argocd-cm configMap: - -### argocd-cm -```yaml ---- -apiVersion: v1 -kind: ConfigMap -metadata: - ... - name: argocd-cm -data: - ui.cssurl: "https://www.myhost.com/my-styles.css" -``` - -## Adding Styles Via Volume Mounts - -The second method requires mounting the CSS file directly onto the argocd-server container and then -providing the argocd-cm with the properly configured path to that file. In the following example, -the CSS file is actually defined inside of a separate configMap (the same effect could be achieved -by generating or downloading a CSS file in an initContainer): - -### argocd-cm -```yaml ---- -apiVersion: v1 -kind: ConfigMap -metadata: - ... - name: argocd-cm -data: - ui.cssurl: "./custom/my-styles.css" -``` - -Note that the `cssurl` should be specified relative to the "/shared/app" directory; -not as an absolute path. - -### argocd-styles-cm -```yaml ---- -apiVersion: v1 -kind: ConfigMap -metadata: - ... - name: argocd-styles-cm -data: - my-styles.css: | - .nav-bar { - background: linear-gradient(to bottom, #999, #777, #333, #222, #111); - } -``` - -### argocd-server -```yaml ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: argocd-server - ... -spec: - template: - ... - spec: - containers: - - command: - ... - volumeMounts: - ... - - mountPath: /shared/app/custom - name: styles - ... - volumes: - ... - - configMap: - name: argocd-styles-cm - name: styles -``` - -Note that the CSS file should be mounted within a subdirectory of the existing "/shared/app" directory -(e.g. "/shared/app/custom"). Otherwise, the file will likely fail to be imported by the browser with an -"incorrect MIME type" error. - -## Developing Style Overlays -The styles specified in the injected CSS file should be specific to components and classes defined in [argo-ui](https://github.com/argoproj/argo-ui). -It is recommended to test out the styles you wish to apply first by making use of your browser's built-in developer tools. For a more full-featured -experience, you may wish to build a separate project using the [Argo CD UI dev server](https://webpack.js.org/configuration/dev-server/). \ No newline at end of file diff --git a/docs/operator-manual/custom_tools.md b/docs/operator-manual/custom_tools.md deleted file mode 100644 index 9eaace6ec03b8..0000000000000 --- a/docs/operator-manual/custom_tools.md +++ /dev/null @@ -1,73 +0,0 @@ -# Custom Tooling - -Argo CD bundles preferred versions of its supported templating tools (helm, kustomize, ks, jsonnet) -as part of its container images. Sometimes, it may be desired to use a specific version of a tool -other than what Argo CD bundles. Some reasons to do this might be: - -* To upgrade/downgrade to a specific version of a tool due to bugs or bug fixes. -* To install additional dependencies which to be used by kustomize's configmap/secret generators - (e.g. curl, vault, gpg, AWS CLI) -* To install a [config management plugin](../user-guide/application_sources.md#config-management-plugins) - -As the Argo CD repo-server is the single service responsible for generating Kubernetes manifests, it -can be customized to use alternative toolchain required by your environment. - -## Adding Tools Via Volume Mounts - -The first technique is to use an `init` container and a `volumeMount` to copy a different version of -a tool into the repo-server container. In the following example, an init container is overwriting -the helm binary with a different version than what is bundled in Argo CD: - -```yaml - spec: - # 1. Define an emptyDir volume which will hold the custom binaries - volumes: - - name: custom-tools - emptyDir: {} - # 2. Use an init container to download/copy custom binaries into the emptyDir - initContainers: - - name: download-tools - image: alpine:3.8 - command: [sh, -c] - args: - - wget -qO- https://storage.googleapis.com/kubernetes-helm/helm-v2.12.3-linux-amd64.tar.gz | tar -xvzf - && - mv linux-amd64/helm /custom-tools/ - volumeMounts: - - mountPath: /custom-tools - name: custom-tools - # 3. Volume mount the custom binary to the bin directory (overriding the existing version) - containers: - - name: argocd-repo-server - volumeMounts: - - mountPath: /usr/local/bin/helm - name: custom-tools - subPath: helm -``` - -## BYOI (Build Your Own Image) - -Sometimes replacing a binary isn't sufficient and you need to install other dependencies. The -following example builds an entirely customized repo-server from a Dockerfile, installing extra -dependencies that may be needed for generating manifests. - -```Dockerfile -FROM argoproj/argocd:latest - -# Switch to root for the ability to perform install -USER root - -# Install tools needed for your repo-server to retrieve & decrypt secrets, render manifests -# (e.g. curl, awscli, gpg, sops) -RUN apt-get update && \ - apt-get install -y \ - curl \ - awscli \ - gpg && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ - curl -o /usr/local/bin/sops -L https://github.com/mozilla/sops/releases/download/3.2.0/sops-3.2.0.linux && \ - chmod +x /usr/local/bin/sops - -# Switch back to non-root user -USER argocd -``` diff --git a/docs/operator-manual/declarative-setup.md b/docs/operator-manual/declarative-setup.md deleted file mode 100644 index 79b44c1bc068a..0000000000000 --- a/docs/operator-manual/declarative-setup.md +++ /dev/null @@ -1,701 +0,0 @@ -# Declarative Setup - -Argo CD applications, projects and settings can be defined declaratively using Kubernetes manifests. These can be updated using `kubectl apply`, without needing to touch the `argocd` command-line tool. - -## Quick Reference - -| File Name | Resource Name | Kind | Description | -|-----------|---------------|------|-------------| -| [`argocd-cm.yaml`](argocd-cm.yaml) | argocd-cm | ConfigMap | General Argo CD configuration | -| [`argocd-secret.yaml`](argocd-secret.yaml) | argocd-secret | Secret | Password, Certificates, Signing Key | -| [`argocd-rbac-cm.yaml`](argocd-rbac-cm.yaml) | argocd-rbac-cm | ConfigMap | RBAC Configuration | -| [`argocd-tls-certs-cm.yaml`](argocd-tls-certs-cm.yaml) | argocd-tls-certs-cm | ConfigMap | Custom TLS certificates for connecting Git repositories via HTTPS (v1.2 and later) | -| [`argocd-ssh-known-hosts-cm.yaml`](argocd-ssh-known-hosts-cm.yaml) | argocd-ssh-known-hosts-cm | ConfigMap | SSH known hosts data for connecting Git repositories via SSH (v1.2 and later) | -| [`application.yaml`](application.yaml) | - | Application | Example application spec | -| [`project.yaml`](project.yaml) | - | AppProject | Example project spec | - -All resources, including `Application` and `AppProject` specs, have to be installed in the ArgoCD namespace (by default `argocd`). Also, ConfigMap and Secret resources need to be named as shown in the table above. For `Application` and `AppProject` resources, the name of the resource equals the name of the application or project within ArgoCD. This also means that application and project names are unique within the same ArgoCD installation - you cannot i.e. have the same application name for two different applications. - -!!!warning "A note about ConfigMap resources" - Be sure to annotate your ConfigMap resources using the label `app.kubernetes.io/part-of: argocd`, otherwise ArgoCD will not be able to use them. - -## Applications - -The Application CRD is the Kubernetes resource object representing a deployed application instance -in an environment. It is defined by two key pieces of information: - -* `source` reference to the desired state in Git (repository, revision, path, environment) -* `destination` reference to the target cluster and namespace. For the cluster one of server or name can be used, but not both (which will result in an error). Behind the hood when the server is missing, it is being calculated based on the name and then the server is used for any operations. - -A minimal Application spec is as follows: - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: guestbook - namespace: argocd -spec: - project: default - source: - repoURL: https://github.com/argoproj/argocd-example-apps.git - targetRevision: HEAD - path: guestbook - destination: - server: https://kubernetes.default.svc - namespace: guestbook -``` - -See [application.yaml](application.yaml) for additional fields. As long as you have completed the first step of [Getting Started](../getting_started.md#1-install-argo-cd), you can already apply this with `kubectl apply -n argocd -f application.yaml` and Argo CD will start deploying the guestbook application. - -!!! note - The namespace must match the namespace of your Argo cd, typically this is `argocd`. - -!!! note - When creating an application from a Helm repository, the `chart` attribute must be specified instead of the `path` attribute within `spec.source`. - -```yaml -spec: - source: - repoURL: https://argoproj.github.io/argo-helm - chart: argo -``` - -!!! warning - By default, deleting an application will not perform a cascade delete, thereby deleting its resources. You must add the finalizer if you want this behaviour - which you may well not want. - -```yaml -metadata: - finalizers: - - resources-finalizer.argocd.argoproj.io -``` - -### App of Apps - -You can create an app that creates other apps, which in turn can create other apps. -This allows you to declaratively manage a group of app that can be deployed and configured in concert. - -See [cluster bootstrapping](cluster-bootstrapping.md). - -## Projects - -The AppProject CRD is the Kubernetes resource object representing a logical grouping of applications. -It is defined by the following key pieces of information: - -* `sourceRepos` reference to the repositories that applications within the project can pull manifests from. -* `destinations` reference to clusters and namespaces that applications within the project can deploy into (don't use the name field, only server is being matched). -* `roles` list of entities with definitions of their access to resources within the project. - -An example spec is as follows: - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: AppProject -metadata: - name: my-project - namespace: argocd - # Finalizer that ensures that project is not deleted until it is not referenced by any application - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - description: Example Project - # Allow manifests to deploy from any Git repos - sourceRepos: - - '*' - # Only permit applications to deploy to the guestbook namespace in the same cluster - destinations: - - namespace: guestbook - server: https://kubernetes.default.svc - # Deny all cluster-scoped resources from being created, except for Namespace - clusterResourceWhitelist: - - group: '' - kind: Namespace - # Allow all namespaced-scoped resources to be created, except for ResourceQuota, LimitRange, NetworkPolicy - namespaceResourceBlacklist: - - group: '' - kind: ResourceQuota - - group: '' - kind: LimitRange - - group: '' - kind: NetworkPolicy - # Deny all namespaced-scoped resources from being created, except for Deployment and StatefulSet - namespaceResourceWhitelist: - - group: 'apps' - kind: Deployment - - group: 'apps' - kind: StatefulSet - roles: - # A role which provides read-only access to all applications in the project - - name: read-only - description: Read-only privileges to my-project - policies: - - p, proj:my-project:read-only, applications, get, my-project/*, allow - groups: - - my-oidc-group - # A role which provides sync privileges to only the guestbook-dev application, e.g. to provide - # sync privileges to a CI system - - name: ci-role - description: Sync privileges for guestbook-dev - policies: - - p, proj:my-project:ci-role, applications, sync, my-project/guestbook-dev, allow - # NOTE: JWT tokens can only be generated by the API server and the token is not persisted - # anywhere by Argo CD. It can be prematurely revoked by removing the entry from this list. - jwtTokens: - - iat: 1535390316 -``` - -## Repositories - -!!!note - Some Git hosters - notably GitLab and possibly on-premise GitLab instances as well - require you to - specify the `.git` suffix in the repository URL, otherwise they will send a HTTP 301 redirect to the - repository URL suffixed with `.git`. ArgoCD will **not** follow these redirects, so you have to - adapt your repository URL to be suffixed with `.git`. - -Repository credentials are stored in secret. Use following steps to configure a repo: - -1. Create secret which contains repository credentials. Consider using [bitnami-labs/sealed-secrets](https://github.com/bitnami-labs/sealed-secrets) to store encrypted secret -definition as a Kubernetes manifest. -2. Register repository in the `argocd-cm` config map. Each repository must have `url` field and, depending on whether you connect using HTTPS, SSH, or GitHub App, `usernameSecret` and `passwordSecret` (for HTTPS), `sshPrivateKeySecret` (for SSH), `githubAppPrivateKeySecret` (for GitHub App). - -Example for HTTPS: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - repositories: | - - url: https://github.com/argoproj/my-private-repository - passwordSecret: - name: my-secret - key: password - usernameSecret: - name: my-secret - key: username -``` - -Example for SSH: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - repositories: | - - url: git@github.com:argoproj/my-private-repository - sshPrivateKeySecret: - name: my-secret - key: sshPrivateKey -``` - -> v1.9 or later - -Example for GitHub App: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - repositories: | - - url: https://github.com/argoproj/my-private-repository - githubAppID: 1 - githubAppInstallationID: 2 - githubAppPrivateKeySecret: - name: my-secret - key: githubAppPrivateKey - - - url: https://ghe.example.com/argoproj/my-private-repository - githubAppID: 1 - githubAppInstallationID: 2 - githubAppEnterpriseBaseUrl: https://ghe.example.com/api/v3 - githubAppPrivateKeySecret: - name: my-secret - key: githubAppPrivateKey -``` - -!!! tip - The Kubernetes documentation has [instructions for creating a secret containing a private key](https://kubernetes.io/docs/concepts/configuration/secret/#use-case-pod-with-ssh-keys). - -### Repository Credentials - -> Earlier than v1.4 - -If you want to use the same credentials for multiple repositories, you can use `repository.credentials`: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - repositories: | - - url: https://github.com/argoproj/private-repo - - url: https://github.com/argoproj/other-private-repo - repository.credentials: | - - url: https://github.com/argoproj - passwordSecret: - name: my-secret - key: password - usernameSecret: - name: my-secret - key: username - - url: git@github.com:argoproj-labs - sshPrivateKeySecret: - name: my-secret - key: sshPrivateKey - - url: https://github.com/argoproj - githubAppID: 1 - githubAppInstallationID: 2 - githubAppPrivateKeySecret: - name: my-secret - key: githubAppPrivateKey - - url: https://ghe.example.com/argoproj - githubAppID: 1 - githubAppInstallationID: 2 - githubAppEnterpriseBaseUrl: https://ghe.example.com/api/v3 - githubAppPrivateKeySecret: - name: my-secret - key: githubAppPrivateKey -``` - -Argo CD will only use the credentials if you omit `usernameSecret`, `passwordSecret`, and `sshPrivateKeySecret` fields (`insecureIgnoreHostKey` is ignored) or if your repository is not listed in `repositories`. - -A credential may be match if it's URL is the prefix of the repository's URL. The means that credentials may match, e.g in the above example both [https://github.com/argoproj](https://github.com/argoproj) and [https://github.com](https://github.com) would match. Argo CD selects the first one that matches. - -!!! tip - Order your credentials with the most specific at the top and the least specific at the bottom. - -A complete example. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - repositories: | - # this has it's own credentials - - url: https://github.com/argoproj/private-repo - passwordSecret: - name: private-repo-secret - key: password - usernameSecret: - name: private-repo-secret - key: username - sshPrivateKeySecret: - name: private-repo-secret - key: sshPrivateKey - - url: https://github.com/argoproj/other-private-repo - - url: https://github.com/otherproj/another-private-repo - repository.credentials: | - # this will be used for the second repo - - url: https://github.com/argoproj - passwordSecret: - name: other-private-repo-secret - key: password - usernameSecret: - name: other-private-repo-secret - key: username - sshPrivateKeySecret: - name: other-private-repo-secret - key: sshPrivateKey - # this will be used for the third repo - - url: https://github.com - passwordSecret: - name: another-private-repo-secret - key: password - usernameSecret: - name: another-private-repo-secret - key: username - sshPrivateKeySecret: - name: another-private-repo-secret - key: sshPrivateKey -``` - -> v1.4 or later - -If you want to use the same credentials for multiple repositories, you can use `repository.credentials` to configure credential templates. Credential templates can carry the same credentials information as repositories. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - repositories: | - - url: https://github.com/argoproj/private-repo - - url: https://github.com/argoproj/other-private-repo - repository.credentials: | - - url: https://github.com/argoproj - passwordSecret: - name: my-secret - key: password - usernameSecret: - name: my-secret - key: username -``` - -In the above example, every repository accessed via HTTPS whose URL is prefixed with `https://github.com/argoproj` would use a username stored in the key `username` and a password stored in the key `password` of the secret `my-secret` for connecting to Git. - -In order for ArgoCD to use a credential template for any given repository, the following conditions must be met: - -* The repository must either not be configured at all, or if configured, must not contain any credential information (i.e. contain none of `sshPrivateKeySecret`, `usernameSecret`, `passwordSecret` ) -* The URL configured for a credential template (e.g. `https://github.com/argoproj`) must match as prefix for the repository URL (e.g. `https://github.com/argoproj/argocd-example-apps`). - -!!! note - Matching credential template URL prefixes is done on a _best match_ effort, so the longest (best) match will take precedence. The order of definition is not important, as opposed to pre v1.4 configuration. - -The following keys are valid to refer to credential secrets: - -#### SSH repositories - -* `sshPrivateKeySecret` refers to a secret where an SSH private key is stored for accessing the repositories - -#### HTTPS repositories - -* `usernameSecret` and `passwordSecret` refer to secrets where username and/or password are stored for accessing the repositories -* `tlsClientCertData` and `tlsClientCertKey` refer to secrets where a TLS client certificate (`tlsClientCertData`) and the corresponding private key `tlsClientCertKey` are stored for accessing the repositories - -#### GitHub App repositories - -* `githubAppPrivateKeySecret` refers to the secret where the GitHub App private key is stored for accessing the repositories -* `githubAppID` refers to the GitHub Application ID for the application you created. -* `githubAppInstallationID` refers to the Installation ID of the GitHub app you created and installed. -* `githubAppEnterpriseBaseUrl` refers to the base api URL for GitHub Enterprise (e.g. `https://ghe.example.com/api/v3`) -* `tlsClientCertData` and `tlsClientCertKey` refer to secrets where a TLS client certificate (`tlsClientCertData`) and the corresponding private key `tlsClientCertKey` are stored for accessing GitHub Enterprise if custom certificates are used. - -### Repositories using self-signed TLS certificates (or are signed by custom CA) - -> v1.2 or later - -You can manage the TLS certificates used to verify the authenticity of your repository servers in a ConfigMap object named `argocd-tls-certs-cm`. The data section should contain a map, with the repository server's hostname part (not the complete URL) as key, and the certificate(s) in PEM format as data. So, if you connect to a repository with the URL `https://server.example.com/repos/my-repo`, you should use `server.example.com` as key. The certificate data should be either the server's certificate (in case of self-signed certificate) or the certificate of the CA that was used to sign the server's certificate. You can configure multiple certificates for each server, e.g. if you are having a certificate roll-over planned. - -If there are no dedicated certificates configured for a repository server, the system's default trust store is used for validating the server's repository. This should be good enough for most (if not all) public Git repository services such as GitLab, GitHub and Bitbucket as well as most privately hosted sites which use certificates from well-known CAs, including Let's Encrypt certificates. - -An example ConfigMap object: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-tls-certs-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - server.example.com: | - -----BEGIN CERTIFICATE----- - MIIF1zCCA7+gAwIBAgIUQdTcSHY2Sxd3Tq/v1eIEZPCNbOowDQYJKoZIhvcNAQEL - BQAwezELMAkGA1UEBhMCREUxFTATBgNVBAgMDExvd2VyIFNheG9ueTEQMA4GA1UE - BwwHSGFub3ZlcjEVMBMGA1UECgwMVGVzdGluZyBDb3JwMRIwEAYDVQQLDAlUZXN0 - c3VpdGUxGDAWBgNVBAMMD2Jhci5leGFtcGxlLmNvbTAeFw0xOTA3MDgxMzU2MTda - Fw0yMDA3MDcxMzU2MTdaMHsxCzAJBgNVBAYTAkRFMRUwEwYDVQQIDAxMb3dlciBT - YXhvbnkxEDAOBgNVBAcMB0hhbm92ZXIxFTATBgNVBAoMDFRlc3RpbmcgQ29ycDES - MBAGA1UECwwJVGVzdHN1aXRlMRgwFgYDVQQDDA9iYXIuZXhhbXBsZS5jb20wggIi - MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCv4mHMdVUcafmaSHVpUM0zZWp5 - NFXfboxA4inuOkE8kZlbGSe7wiG9WqLirdr39Ts+WSAFA6oANvbzlu3JrEQ2CHPc - CNQm6diPREFwcDPFCe/eMawbwkQAPVSHPts0UoRxnpZox5pn69ghncBR+jtvx+/u - P6HdwW0qqTvfJnfAF1hBJ4oIk2AXiip5kkIznsAh9W6WRy6nTVCeetmIepDOGe0G - ZJIRn/OfSz7NzKylfDCat2z3EAutyeT/5oXZoWOmGg/8T7pn/pR588GoYYKRQnp+ - YilqCPFX+az09EqqK/iHXnkdZ/Z2fCuU+9M/Zhrnlwlygl3RuVBI6xhm/ZsXtL2E - Gxa61lNy6pyx5+hSxHEFEJshXLtioRd702VdLKxEOuYSXKeJDs1x9o6cJ75S6hko - Ml1L4zCU+xEsMcvb1iQ2n7PZdacqhkFRUVVVmJ56th8aYyX7KNX6M9CD+kMpNm6J - kKC1li/Iy+RI138bAvaFplajMF551kt44dSvIoJIbTr1LigudzWPqk31QaZXV/4u - kD1n4p/XMc9HYU/was/CmQBFqmIZedTLTtK7clkuFN6wbwzdo1wmUNgnySQuMacO - gxhHxxzRWxd24uLyk9Px+9U3BfVPaRLiOPaPoC58lyVOykjSgfpgbus7JS69fCq7 - bEH4Jatp/10zkco+UQIDAQABo1MwUTAdBgNVHQ4EFgQUjXH6PHi92y4C4hQpey86 - r6+x1ewwHwYDVR0jBBgwFoAUjXH6PHi92y4C4hQpey86r6+x1ewwDwYDVR0TAQH/ - BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAFE4SdKsX9UsLy+Z0xuHSxhTd0jfn - Iih5mtzb8CDNO5oTw4z0aMeAvpsUvjJ/XjgxnkiRACXh7K9hsG2r+ageRWGevyvx - CaRXFbherV1kTnZw4Y9/pgZTYVWs9jlqFOppz5sStkfjsDQ5lmPJGDii/StENAz2 - XmtiPOgfG9Upb0GAJBCuKnrU9bIcT4L20gd2F4Y14ccyjlf8UiUi192IX6yM9OjT - +TuXwZgqnTOq6piVgr+FTSa24qSvaXb5z/mJDLlk23npecTouLg83TNSn3R6fYQr - d/Y9eXuUJ8U7/qTh2Ulz071AO9KzPOmleYPTx4Xty4xAtWi1QE5NHW9/Ajlv5OtO - OnMNWIs7ssDJBsB7VFC8hcwf79jz7kC0xmQqDfw51Xhhk04kla+v+HZcFW2AO9so - 6ZdVHHQnIbJa7yQJKZ+hK49IOoBR6JgdB5kymoplLLiuqZSYTcwSBZ72FYTm3iAr - jzvt1hxpxVDmXvRnkhRrIRhK4QgJL0jRmirBjDY+PYYd7bdRIjN7WNZLFsgplnS8 - 9w6CwG32pRlm0c8kkiQ7FXA6BYCqOsDI8f1VGQv331OpR2Ck+FTv+L7DAmg6l37W - +LB9LGh4OAp68ImTjqf6ioGKG0RBSznwME+r4nXtT1S/qLR6ASWUS4ViWRhbRlNK - XWyb96wrUlv+E8I= - -----END CERTIFICATE----- - -``` - -!!! note - The `argocd-tls-certs-cm` ConfigMap will be mounted as a volume at the mount path `/app/config/tls` in the pods of `argocd-server` and `argocd-repo-server`. It will create files for each data key in the mount path directory, so above example would leave the file `/app/config/tls/server.example.com`, which contains the certificate data. It might take a while for changes in the ConfigMap to be reflected in your pods, depending on your Kubernetes configuration. - -### SSH known host public keys - -If you are connecting repositories via SSH, ArgoCD will need to know the SSH known hosts public key of the repository servers. You can manage the SSH known hosts data in the ConfigMap named `argocd-ssh-known-hosts-cm`. This ConfigMap contains a single key/value pair, with `ssh_known_hosts` as the key and the actual public keys of the SSH servers as data. As opposed to TLS configuration, the public key(s) of each single repository server ArgoCD will connect via SSH must be configured, otherwise the connections to the repository will fail. There is no fallback. The data can be copied from any existing `ssh_known_hosts` file, or from the output of the `ssh-keyscan` utility. The basic format is ` `, one entry per line. - -An example ConfigMap object: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-ssh-known-hosts-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - ssh_known_hosts: | - bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw== - github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ== - gitlab.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFSMqzJeV9rUzU4kWitGjeR4PWSa29SPqJ1fVkhtj3Hw9xjLVXVYrU9QlYWrOLXBpQ6KWjbjTDTdDkoohFzgbEY= - gitlab.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAfuCHKVTjquxvt6CM6tdG4SLp1Btn/nOeHHE5UOzRdf - gitlab.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsj2bNKTBSpIYDEGk9KxsGh3mySTRgMtXL583qmBpzeQ+jqCMRgBqB98u3z++J1sKlXHWfM9dyhSevkMwSbhoR8XIq/U0tCNyokEi/ueaBMCvbcTHhO7FcwzY92WK4Yt0aGROY5qX2UKSeOvuP4D6TPqKF1onrSzH9bx9XUf2lEdWT/ia1NEKjunUqu1xOB/StKDHMoX4/OKyIzuS0q/T1zOATthvasJFoPrAjkohTyaDUz2LN5JoH839hViyEG82yB+MjcFV5MU3N1l1QL3cVUCh93xSaua1N85qivl+siMkPGbO5xR/En4iEY6K2XPASUEMaieWVNTRCtJ4S8H+9 - ssh.dev.azure.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Hr1oTWqNqOlzGJOfGJ4NakVyIzf1rXYd4d7wo6jBlkLvCA4odBlL0mDUyZ0/QUfTTqeu+tm22gOsv+VrVTMk6vwRU75gY/y9ut5Mb3bR5BV58dKXyq9A9UeB5Cakehn5Zgm6x1mKoVyf+FFn26iYqXJRgzIZZcZ5V6hrE0Qg39kZm4az48o0AUbf6Sp4SLdvnuMa2sVNwHBboS7EJkm57XQPVU3/QpyNLHbWDdzwtrlS+ez30S3AdYhLKEOxAG8weOnyrtLJAUen9mTkol8oII1edf7mWWbWVf0nBmly21+nZcmCTISQBtdcyPaEno7fFQMDD26/s0lfKob4Kw8H - vs-ssh.visualstudio.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Hr1oTWqNqOlzGJOfGJ4NakVyIzf1rXYd4d7wo6jBlkLvCA4odBlL0mDUyZ0/QUfTTqeu+tm22gOsv+VrVTMk6vwRU75gY/y9ut5Mb3bR5BV58dKXyq9A9UeB5Cakehn5Zgm6x1mKoVyf+FFn26iYqXJRgzIZZcZ5V6hrE0Qg39kZm4az48o0AUbf6Sp4SLdvnuMa2sVNwHBboS7EJkm57XQPVU3/QpyNLHbWDdzwtrlS+ez30S3AdYhLKEOxAG8weOnyrtLJAUen9mTkol8oII1edf7mWWbWVf0nBmly21+nZcmCTISQBtdcyPaEno7fFQMDD26/s0lfKob4Kw8H -``` - -!!! note - The `argocd-ssh-known-hosts-cm` ConfigMap will be mounted as a volume at the mount path `/app/config/ssh` in the pods of `argocd-server` and `argocd-repo-server`. It will create a file `ssh_known_hosts` in that directory, which contains the SSH known hosts data used by ArgoCD for connecting to Git repositories via SSH. It might take a while for changes in the ConfigMap to be reflected in your pods, depending on your Kubernetes configuration. - -## Clusters - -Cluster credentials are stored in secrets same as repository credentials but does not require entry in `argocd-cm` config map. Each secret must have label -`argocd.argoproj.io/secret-type: cluster`. - -The secret data must include following fields: - -* `name` - cluster name -* `server` - cluster api server url -* `namespaces` - optional comma-separated list of namespaces which are accessible in that cluster. Cluster level resources would be ignored if namespace list is not empty. -* `config` - JSON representation of following data structure: - -```yaml -# Basic authentication settings -username: string -password: string -# Bearer authentication settings -bearerToken: string -# IAM authentication configuration -awsAuthConfig: - clusterName: string - roleARN: string -# Configure external command to supply client credentials -# See https://godoc.org/k8s.io/client-go/tools/clientcmd/api#ExecConfig -execProviderConfig: - command: string - args: [ - string - ] - env: { - key: value - } - apiVersion: string - installHint: string -# Transport layer security configuration settings -tlsClientConfig: - # PEM-encoded bytes (typically read from a client certificate file). - caData: string - # PEM-encoded bytes (typically read from a client certificate file). - certData: string - # Server should be accessed without verifying the TLS certificate - insecure: boolean - # PEM-encoded bytes (typically read from a client certificate key file). - keyData: string - # ServerName is passed to the server for SNI and is used in the client to check server - # certificates against. If ServerName is empty, the hostname used to contact the - # server is used. - serverName: string -``` - -Note that if you specify a command to run under `execProviderConfig`, that command must be available in the ArgoCD image. See [BYOI (Build Your Own Image)](custom_tools.md#byoi-build-your-own-image). - -Cluster secret example: - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: mycluster-secret - labels: - argocd.argoproj.io/secret-type: cluster -type: Opaque -stringData: - name: mycluster.com - server: https://mycluster.com - config: | - { - "bearerToken": "", - "tlsClientConfig": { - "insecure": false, - "caData": "" - } - } -``` - -## Helm Chart Repositories - -Non standard Helm Chart repositories have to be registered under the `repositories` key in the -`argocd-cm` ConfigMap. Each repository must have `url`, `type` and `name` fields. For private Helm repos you -may need to configure access credentials and HTTPS settings using `usernameSecret`, `passwordSecret`, -`caSecret`, `certSecret` and `keySecret` fields. - -Example: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - # v1.2 or earlier use `helm.repositories` - helm.repositories: | - - url: https://storage.googleapis.com/istio-prerelease/daily-build/master-latest-daily/charts - name: istio.io - # v1.3 or later use `repositories` with `type: helm` - repositories: | - - type: helm - url: https://storage.googleapis.com/istio-prerelease/daily-build/master-latest-daily/charts - name: istio.io - - type: helm - url: https://argoproj.github.io/argo-helm - name: argo - usernameSecret: - name: my-secret - key: username - passwordSecret: - name: my-secret - key: password - caSecret: - name: my-secret - key: ca - certSecret: - name: my-secret - key: cert - keySecret: - name: my-secret - key: key -``` - -## Resource Exclusion/Inclusion - -Resources can be excluded from discovery and sync so that ArgoCD is unaware of them. For example, `events.k8s.io` and `metrics.k8s.io` are always excluded. Use cases: - -* You have temporal issues and you want to exclude problematic resources. -* There are many of a kind of resources that impacts ArgoCD's performance. -* Restrict ArgoCD's access to certain kinds of resources, e.g. secrets. See [security.md#cluster-rbac](security.md#cluster-rbac). - -To configure this, edit the `argcd-cm` config map: - -```shell -kubectl edit configmap argocd-cm -n argocd -``` - -Add `resource.exclusions`, e.g.: - -```yaml -apiVersion: v1 -data: - resource.exclusions: | - - apiGroups: - - "*" - kinds: - - "*" - clusters: - - https://192.168.0.20 -kind: ConfigMap -``` - -The `resource.exclusions` node is a list of objects. Each object can have: - -* `apiGroups` A list of globs to match the API group. -* `kinds` A list of kinds to match. Can be "*" to match all. -* `cluster` A list of globs to match the cluster. - -If all three match, then the resource is ignored. - -In addition to exclusions, you might configure the list of included resources using the `resource.inclusions` setting. -By default, all resource group/kinds are included. The `resource.inclusions` setting allows customizing the list of included group/kinds: - -```yaml -apiVersion: v1 -data: - resource.inclusions: | - - apiGroups: - - "*" - kinds: - - Deployment - clusters: - - https://192.168.0.20 -kind: ConfigMap -``` - -The `resource.inclusions` and `resource.exclusions` might be used together. The final list of resources includes group/kinds specified in `resource.inclusions` minus group/kinds -specified in `resource.exclusions` setting. - -Notes: - -* Quote globs in your YAML to avoid parsing errors. -* Invalid globs result in the whole rule being ignored. -* If you add a rule that matches existing resources, these will appear in the interface as `OutOfSync`. - -## SSO & RBAC - -* SSO configuration details: [SSO](./user-management/index.md) -* RBAC configuration details: [RBAC](./rbac.md) - -## Manage Argo CD Using Argo CD - -Argo CD is able to manage itself since all settings are represented by Kubernetes manifests. The suggested way is to create [Kustomize](https://github.com/kubernetes-sigs/kustomize) -based application which uses base Argo CD manifests from [https://github.com/argoproj/argo-cd](https://github.com/argoproj/argo-cd/tree/stable/manifests) and apply required changes on top. - -Example of `kustomization.yaml`: - -```yaml -bases: -- github.com/argoproj/argo-cd//manifests/cluster-install?ref=v1.0.1 - -# additional resources like ingress rules, cluster and repository secrets. -resources: -- clusters-secrets.yaml -- repos-secrets.yaml - -# changes to config maps -patchesStrategicMerge: -- overlays/argo-cd-cm.yaml -``` - -The live example of self managed Argo CD config is available at [https://cd.apps.argoproj.io](https://cd.apps.argoproj.io) and with configuration -stored at [argoproj/argoproj-deployments](https://github.com/argoproj/argoproj-deployments/tree/master/argocd). - -!!! note - You will need to sign-in using your github account to get access to [https://cd.apps.argoproj.io](https://cd.apps.argoproj.io) diff --git a/docs/operator-manual/disaster_recovery.md b/docs/operator-manual/disaster_recovery.md deleted file mode 100644 index b6a17885b2345..0000000000000 --- a/docs/operator-manual/disaster_recovery.md +++ /dev/null @@ -1,28 +0,0 @@ -# Disaster Recovery - -You can use `argocd-util` to import and export all Argo CD data. - -Make sure you have `~/.kube/config` pointing to your Argo CD cluster. - -Figure out what version of Argo CD you're running: - -```bash -argocd version | grep server -# ... -export VERSION=v1.0.1 -``` - -Export to a backup: - -```bash -docker run -v ~/.kube:/home/argocd/.kube --rm argoproj/argocd:$VERSION argocd-util export > backup.yaml -``` - -Import from a backup: - -```bash -docker run -i -v ~/.kube:/home/argocd/.kube --rm argoproj/argocd:$VERSION argocd-util import - < backup.yaml -``` - -!!! note - If you are running Argo CD on a namespace different than default remember to pass the namespace parameter (-n ). 'argocd-util export' will not fail if you run it in the wrong namespace. diff --git a/docs/operator-manual/health.md b/docs/operator-manual/health.md deleted file mode 100644 index a772915ca8152..0000000000000 --- a/docs/operator-manual/health.md +++ /dev/null @@ -1,90 +0,0 @@ -# Resource Health - -## Overview -Argo CD provides built-in health assessment for several standard Kubernetes types, which is then -surfaced to the overall Application health status as a whole. The following checks are made for -specific types of kubernetes resources: - -### Deployment, ReplicaSet, StatefulSet DaemonSet -* Observed generation is equal to desired generation. -* Number of **updated** replicas equals the number of desired replicas. - -### Service -* If service type is of type `LoadBalancer`, the `status.loadBalancer.ingress` list is non-empty, -with at least one value for `hostname` or `IP`. - -### Ingress -* The `status.loadBalancer.ingress` list is non-empty, with at least one value for `hostname` or `IP`. - -### PersistentVolumeClaim -* The `status.phase` is `Bound` - -## Custom Health Checks - -Argo CD supports custom health checks written in [Lua](https://www.lua.org/). This is useful if you: - -* Are affected by known issues where your `Ingress` or `StatefulSet` resources are stuck in `Progressing` state because of bug in your resource controller. -* Have a custom resource for which Argo CD does not have a built-in health check. - -There are two ways to configure a custom health check. The next two sections describe those ways. - -### Way 1. Define a Custom Health Check in `argocd-cm` ConfigMap - -Custom health checks can be defined in `resource.customizations` field of `argocd-cm`. Following example demonstrates a health check for `cert-manager.io/Certificate`. - -```yaml -data: - resource.customizations: | - cert-manager.io/Certificate: - health.lua: | - hs = {} - if obj.status ~= nil then - if obj.status.conditions ~= nil then - for i, condition in ipairs(obj.status.conditions) do - if condition.type == "Ready" and condition.status == "False" then - hs.status = "Degraded" - hs.message = condition.message - return hs - end - if condition.type == "Ready" and condition.status == "True" then - hs.status = "Healthy" - hs.message = condition.message - return hs - end - end - end - end - - hs.status = "Progressing" - hs.message = "Waiting for certificate" - return hs -``` -The `obj` is a global variable which contains the resource. The script must return an object with status and optional message field. - -NOTE: as a security measure you don't have access to most of the standard Lua libraries. - -### Way 2. Contribute a Custom Health Check - -A health check can be bundled into Argo CD. Custom health check scripts are located in the `resource_customizations` directory of [https://github.com/argoproj/argo-cd](https://github.com/argoproj/argo-cd). This must have the following directory structure: - -``` -argo-cd -|-- resource_customizations -| |-- your.crd.group.io # CRD group -| | |-- MyKind # Resource kind -| | | |-- health.lua # Health check -| | | |-- health_test.yaml # Test inputs and expected results -| | | +-- testdata # Directory with test resource YAML definitions -``` - -Each health check must have tests defined in `health_test.yaml` file. The `health_test.yaml` is a YAML file with the following structure: - -```yaml -tests: -- healthStatus: - status: ExpectedStatus - message: Expected message - inputPath: testdata/test-resource-definition.yaml -``` - -The [PR#1139](https://github.com/argoproj/argo-cd/pull/1139) is an example of Cert Manager CRDs custom health check. diff --git a/docs/operator-manual/index.md b/docs/operator-manual/index.md deleted file mode 100644 index 7264f6c3e550a..0000000000000 --- a/docs/operator-manual/index.md +++ /dev/null @@ -1,6 +0,0 @@ -# Overview - -This guide is for administrator and operator wanting to install and configure Argo CD for other developers. - -!!! note - Please make sure you've completed the [getting started guide](../getting_started.md). \ No newline at end of file diff --git a/docs/operator-manual/ingress.md b/docs/operator-manual/ingress.md deleted file mode 100644 index 965f43d95c599..0000000000000 --- a/docs/operator-manual/ingress.md +++ /dev/null @@ -1,523 +0,0 @@ -# Ingress Configuration - -Argo CD runs both a gRPC server (used by the CLI), as well as a HTTP/HTTPS server (used by the UI). -Both protocols are exposed by the argocd-server service object on the following ports: - -* 443 - gRPC/HTTPS -* 80 - HTTP (redirects to HTTPS) - -There are several ways how Ingress can be configured. - -## [Ambassador](https://www.getambassador.io/) - -The Ambassador Edge Stack can be used as a Kubernetes ingress controller with [automatic TLS termination](https://www.getambassador.io/docs/latest/topics/running/tls/#host) and routing capabilities for both the CLI and the UI. - -The API server should be run with TLS disabled. Edit the `argocd-server` deployment to add the `--insecure` flag to the argocd-server command. Given the `argocd` CLI includes the port number in the request `host` header, 2 Mappings are required. - -### Option 1: Mapping CRD for Host-based Routing -```yaml -apiVersion: getambassador.io/v2 -kind: Mapping -metadata: - name: argocd-server-ui - namespace: argocd -spec: - host: argocd.example.com - prefix: / - service: argocd-server:443 ---- -apiVersion: getambassador.io/v2 -kind: Mapping -metadata: - name: argocd-server-cli - namespace: argocd -spec: - host: argocd.example.com:443 - prefix: / - service: argocd-server:443 -``` - -Login with the `argocd` CLI using the extra `--grpc-web-root-path` flag for gRPC-web. - -```shell -argocd login : --grpc-web-root-path / -``` - -### Option 2: Mapping CRD for Path-based Routing - -The API server must be configured to be available under a non-root path (e.g. `/argo-cd`). Edit the `argocd-server` deployment to add the `--rootpath=/argo-cd` flag to the argocd-server command. - -```yaml -apiVersion: getambassador.io/v2 -kind: Mapping -metadata: - name: argocd-server - namespace: argocd -spec: - prefix: /argo-cd - rewrite: /argo-cd - service: argocd-server:443 -``` - -Login with the `argocd` CLI using the extra `--grpc-web-root-path` flag for non-root paths. - -```shell -argocd login : --grpc-web-root-path /argo-cd -``` - -## [Contour](https://projectcontour.io/) -The Contour ingress controller can terminate TLS ingress traffic at the edge. - -The Argo CD API server should be run with TLS disabled. Edit the `argocd-server` Deployment to add the `--insecure` flag to the argocd-server container command. - -It is also possible to provide an internal-only ingress path and an external-only ingress path by deploying two instances of Contour: one behind a private-subnet LoadBalancer service and one behind a public-subnet LoadBalancer service. The private Contour deployment will pick up Ingresses annotated with `kubernetes.io/ingress.class: contour-external` and the public Contour deployment will pick up Ingresses annotated with `kubernetes.io/ingress.class: contour-external`. - -This provides the opportunity to deploy the Argo CD UI privately but still allow for SSO callbacks to succeed. - -### Private Argo CD UI with Multiple Ingress Objects and BYO Certificate -Since Contour Ingress supports only a single protocol per Ingress object, define three Ingress objects. One for private HTTP/HTTPS, one for private gRPC, and one for public HTTPS SSO callbacks. - -Internal HTTP/HTTPS Ingress: -```yaml -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: argocd-server-http - annotations: - kubernetes.io/ingress.class: contour-internal - ingress.kubernetes.io/force-ssl-redirect: "true" -spec: - rules: - - host: internal.path.to.argocd.io - http: - paths: - - backend: - serviceName: argocd-server - servicePort: http - tls: - - hosts: - - internal.path.to.argocd.io - secretName: your-certificate-name -``` - -Internal gRPC Ingress: -```yaml -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: argocd-server-grpc - annotations: - kubernetes.io/ingress.class: contour-internal -spec: - rules: - - host: grpc-internal.path.to.argocd.io - http: - paths: - - backend: - serviceName: argocd-server - servicePort: https - tls: - - hosts: - - grpc-internal.path.to.argocd.io - secretName: your-certificate-name -``` - -External HTTPS SSO Callback Ingress: -```yaml -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: argocd-server-external-callback-http - annotations: - kubernetes.io/ingress.class: contour-external - ingress.kubernetes.io/force-ssl-redirect: "true" -spec: - rules: - - host: external.path.to.argocd.io - http: - paths: - - path: /api/dex/callback - backend: - serviceName: argocd-server - servicePort: http - tls: - - hosts: - - external.path.to.argocd.io - secretName: your-certificate-name -``` - -The argocd-server Service needs to be annotated with `projectcontour.io/upstream-protocol.h2c: "https,443"` to wire up the gRPC protocol proxying. - -The API server should then be run with TLS disabled. Edit the `argocd-server` deployment to add the -`--insecure` flag to the argocd-server command: - -```yaml -spec: - template: - spec: - containers: - - name: argocd-server - command: - - /argocd-server - - --staticassets - - /shared/app - - --repo-server - - argocd-repo-server:8081 - - --insecure -``` - -## [kubernetes/ingress-nginx](https://github.com/kubernetes/ingress-nginx) - -### Option 1: SSL-Passthrough - -Argo CD serves multiple protocols (gRPC/HTTPS) on the same port (443), this provides a -challenge when attempting to define a single nginx ingress object and rule for the argocd-service, -since the `nginx.ingress.kubernetes.io/backend-protocol` [annotation](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#backend-protocol) -accepts only a single value for the backend protocol (e.g. HTTP, HTTPS, GRPC, GRPCS). - -In order to expose the Argo CD API server with a single ingress rule and hostname, the -`nginx.ingress.kubernetes.io/ssl-passthrough` [annotation](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#ssl-passthrough) -must be used to passthrough TLS connections and terminate TLS at the Argo CD API server. - -```yaml -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: argocd-server-ingress - namespace: argocd - annotations: - kubernetes.io/ingress.class: nginx - nginx.ingress.kubernetes.io/force-ssl-redirect: "true" - nginx.ingress.kubernetes.io/ssl-passthrough: "true" -spec: - rules: - - host: argocd.example.com - http: - paths: - - backend: - serviceName: argocd-server - servicePort: https -``` - -The above rule terminates TLS at the Argo CD API server, which detects the protocol being used, -and responds appropriately. Note that the `nginx.ingress.kubernetes.io/ssl-passthrough` annotation -requires that the `--enable-ssl-passthrough` flag be added to the command line arguments to -`nginx-ingress-controller`. - -#### SSL-Passthrough with cert-manager and Let's Encrypt - -```yaml -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: argocd-server-ingress - namespace: argocd - annotations: - cert-manager.io/cluster-issuer: letsencrypt-prod - kubernetes.io/ingress.class: nginx - kubernetes.io/tls-acme: "true" - nginx.ingress.kubernetes.io/ssl-passthrough: "true" - # If you encounter a redirect loop or are getting a 307 response code - # then you need to force the nginx ingress to connect to the backend using HTTPS. - # - # nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" -spec: - rules: - - host: argocd.example.com - http: - paths: - - backend: - serviceName: argocd-server - servicePort: https - path: / - tls: - - hosts: - - argocd.example.com - secretName: argocd-secret # do not change, this is provided by Argo CD -``` - -### Option 2: Multiple Ingress Objects And Hosts - -Since ingress-nginx Ingress supports only a single protocol per Ingress object, an alternative -way would be to define two Ingress objects. One for HTTP/HTTPS, and the other for gRPC: - -HTTP/HTTPS Ingress: -```yaml -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: argocd-server-http-ingress - namespace: argocd - annotations: - kubernetes.io/ingress.class: "nginx" - nginx.ingress.kubernetes.io/force-ssl-redirect: "true" - nginx.ingress.kubernetes.io/backend-protocol: "HTTP" -spec: - rules: - - http: - paths: - - backend: - serviceName: argocd-server - servicePort: http - host: argocd.example.com - tls: - - hosts: - - argocd.example.com - secretName: argocd-secret # do not change, this is provided by Argo CD -``` - -gRPC Ingress: -```yaml -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: argocd-server-grpc-ingress - namespace: argocd - annotations: - kubernetes.io/ingress.class: "nginx" - nginx.ingress.kubernetes.io/backend-protocol: "GRPC" -spec: - rules: - - http: - paths: - - backend: - serviceName: argocd-server - servicePort: https - host: grpc.argocd.example.com - tls: - - hosts: - - grpc.argocd.example.com - secretName: argocd-secret # do not change, this is provided by Argo CD -``` - -The API server should then be run with TLS disabled. Edit the `argocd-server` deployment to add the -`--insecure` flag to the argocd-server command: - -```yaml -spec: - template: - spec: - containers: - - name: argocd-server - command: - - /argocd-server - - --staticassets - - /shared/app - - --repo-server - - argocd-repo-server:8081 - - --insecure -``` - -The obvious disadvantage to this approach is that this technique requires two separate hostnames for -the API server -- one for gRPC and the other for HTTP/HTTPS. However it allows TLS termination to -happen at the ingress controller. - - -## [Traefik (v2.2)](https://docs.traefik.io/) - -Traefik can be used as an edge router and provide [TLS](https://docs.traefik.io/user-guides/grpc/) termination within the same deployment. - -It currently has an advantage over NGINX in that it can terminate both TCP and HTTP connections _on the same port_ meaning you do not require multiple hosts or paths. - -The API server should be run with TLS disabled. Edit the `argocd-server` deployment to add the `--insecure` flag to the argocd-server command. - -### IngressRoute CRD -```yaml -apiVersion: traefik.containo.us/v1alpha1 -kind: IngressRoute -metadata: - name: argocd-server - namespace: argocd -spec: - entryPoints: - - websecure - routes: - - kind: Rule - match: Host(`argocd.example.com`) - priority: 10 - services: - - name: argocd-server - port: 80 - - kind: Rule - match: Host(`argocd.example.com`) && Headers(`Content-Type`, `application/grpc`) - priority: 11 - services: - - name: argocd-server - port: 80 - scheme: h2c - tls: - certResolver: default - options: {} -``` - -## AWS Application Load Balancers (ALBs) And Classic ELB (HTTP Mode) -AWS ALBs can be used as an L7 Load Balancer for both UI and gRPC traffic, whereas Classic ELBs and NLBs can be used as L4 Load Balancers for both. - -When using an ALB, you'll want to create a second service for argocd-server. This is necessary because we need to tell the ALB to send the GRPC traffic to a different target group then the UI traffic, since the backend protocol is HTTP2 instead of HTTP1. - -```yaml -apiVersion: v1 -kind: Service -metadata: - annotations: - alb.ingress.kubernetes.io/backend-protocol-version: HTTP2 #This tells AWS to send traffic from the ALB using HTTP2. Can use GRPC as well if you want to leverage GRPC specific features - labels: - app: argogrpc - name: argogrpc - namespace: argocd -spec: - ports: - - name: "443" - port: 443 - protocol: TCP - targetPort: 8080 - selector: - app.kubernetes.io/name: argocd-server - sessionAffinity: None - type: ClusterIP -``` - -Once we create this service, we can configure the Ingress to conditionally route all `application/grpc` traffic to the new HTTP2 backend, using the `alb.ingress.kubernetes.io/conditions` annotation, as seen below. Note: The value after the . in the condition annotation _must_ be the same name as the service that you want traffic to route to - and will be applied on any path with a matching serviceName. - -```yaml - apiVersion: networking.k8s.io/v1 # Use extensions/v1beta1 for Kubernetes 1.14 and older - kind: Ingress - metadata: - annotations: - alb.ingress.kubernetes.io/backend-protocol: HTTPS - # Use this annotation (which must match a service name) to route traffic to HTTP2 backends. - alb.ingress.kubernetes.io/conditions.argogrpc: | - [{"field":"http-header","httpHeaderConfig":{"httpHeaderName": "Content-Type", "values":["application/grpc"]}}] - alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]' - name: argocd - namespace: argocd - spec: - rules: - - host: argocd.argoproj.io - http: - paths: - - backend: - serviceName: argogrpc - servicePort: 443 - pathType: ImplementationSpecific - - backend: - serviceName: argocd-server - servicePort: 443 - pathType: ImplementationSpecific - tls: - - hosts: - - argocd.argoproj.io -``` - -## Authenticating through multiple layers of authenticating reverse proxies - -ArgoCD endpoints may be protected by one or more reverse proxies layers, in that case, you can provide additional headers through the `argocd` CLI `--header` parameter to authenticate through those layers. - -```shell -$ argocd login : --header 'x-token1:foo' --header 'x-token2:bar' # can be repeated multiple times -$ argocd login : --header 'x-token1:foo,x-token2:bar' # headers can also be comma separated -``` -## ArgoCD Server and UI Root Path (v1.5.3) - -ArgoCD server and UI can be configured to be available under a non-root path (e.g. `/argo-cd`). -To do this, add the `--rootpath` flag into the `argocd-server` deployment command: - -```yaml -spec: - template: - spec: - name: argocd-server - containers: - - command: - - /argocd-server - - --staticassets - - /shared/app - - --repo-server - - argocd-repo-server:8081 - - --rootpath - - /argo-cd -``` -NOTE: The flag `--rootpath` changes both API Server and UI base URL. -Example nginx.conf: - -``` -worker_processes 1; - -events { worker_connections 1024; } - -http { - - sendfile on; - - server { - listen 443; - - location /argo-cd/ { - proxy_pass https://localhost:8080/argo-cd/; - proxy_redirect off; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Host $server_name; - # buffering should be disabled for api/v1/stream/applications to support chunked response - proxy_buffering off; - } - } -} -``` -Flag ```--grpc-web-root-path ``` is used to provide a non-root path (e.g. /argo-cd) - -```shell -$ argocd login : --grpc-web-root-path /argo-cd -``` - -## UI Base Path - -If the Argo CD UI is available under a non-root path (e.g. `/argo-cd` instead of `/`) then the UI path should be configured in the API server. -To configure the UI path add the `--basehref` flag into the `argocd-server` deployment command: - -```yaml -spec: - template: - spec: - name: argocd-server - containers: - - command: - - /argocd-server - - --staticassets - - /shared/app - - --repo-server - - argocd-repo-server:8081 - - --basehref - - /argo-cd -``` - -NOTE: The flag `--basehref` only changes the UI base URL. The API server will keep using the `/` path so you need to add a URL rewrite rule to the proxy config. -Example nginx.conf with URL rewrite: - -``` -worker_processes 1; - -events { worker_connections 1024; } - -http { - - sendfile on; - - server { - listen 443; - - location /argo-cd { - rewrite /argo-cd/(.*) /$1 break; - proxy_pass https://localhost:8080; - proxy_redirect off; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Host $server_name; - # buffering should be disabled for api/v1/stream/applications to support chunked response - proxy_buffering off; - } - } -} -``` diff --git a/docs/operator-manual/metrics.md b/docs/operator-manual/metrics.md deleted file mode 100644 index 9cc3075a2e9b6..0000000000000 --- a/docs/operator-manual/metrics.md +++ /dev/null @@ -1,78 +0,0 @@ -# Metrics - -Argo CD exposes two sets of Prometheus metrics - -## Application Metrics -Metrics about applications. Scraped at the `argocd-metrics:8082/metrics` endpoint. - -* Gauge for application health status -* Gauge for application sync status -* Counter for application sync history - -If you use ArgoCD with many application and project creation and deletion, -the metrics page will keep in cache your application and project's history. -If you are having issues because of a large number of metrics cardinality due -to deleted resources, you can schedule a metrics reset to clean the -history with an application controller flag. Example: -`--metrics-cache-expiration="24h0m0s"`. - -## API Server Metrics -Metrics about API Server API request and response activity (request totals, response codes, etc...). -Scraped at the `argocd-server-metrics:8083/metrics` endpoint. - -## Prometheus Operator - -If using Prometheus Operator, the following ServiceMonitor example manifests can be used. -Change `metadata.labels.release` to the name of label selected by your Prometheus. - -```yaml -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: argocd-metrics - labels: - release: prometheus-operator -spec: - selector: - matchLabels: - app.kubernetes.io/name: argocd-metrics - endpoints: - - port: metrics -``` - -```yaml -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: argocd-server-metrics - labels: - release: prometheus-operator -spec: - selector: - matchLabels: - app.kubernetes.io/name: argocd-server-metrics - endpoints: - - port: metrics -``` - -```yaml -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: argocd-repo-server-metrics - labels: - release: prometheus-operator -spec: - selector: - matchLabels: - app.kubernetes.io/name: argocd-repo-server-metrics - endpoints: - - port: metrics -``` - -## Dashboards - -You can find an example Grafana dashboard [here](https://github.com/argoproj/argo-cd/blob/master/examples/dashboard.json) or check demo instance -[dashboard](https://grafana.apps.argoproj.io). - -![dashboard](../assets/dashboard.jpg) diff --git a/docs/operator-manual/notifications.md b/docs/operator-manual/notifications.md deleted file mode 100644 index c8c34b24fcbbd..0000000000000 --- a/docs/operator-manual/notifications.md +++ /dev/null @@ -1,14 +0,0 @@ -# Notifications - -The notifications support is not bundled into the Argo CD itself. Instead of reinventing the wheel and implementing opinionated notifications system Argo CD leverages integrations -with the third-party notification system. Following integrations are recommended: - -* To monitor Argo CD performance or health state of managed applications use [Prometheus Metrics](./metrics.md) in combination with [Grafana](https://grafana.com/), -[Alertmanager](https://prometheus.io/docs/alerting/alertmanager/). -* To notify the end-users of Argo CD about events like application upgrades, user errors in application definition, etc use one of the following projects: - * [ArgoCD Notifications](https://github.com/argoproj-labs/argocd-notifications) - Argo CD specific notification system that continuously monitors Argo CD applications - and aims to integrate with various notification services such as Slack, SMTP, Telegram, Discord, etc. - * [Argo Kube Notifier](https://github.com/argoproj-labs/argo-kube-notifier) - generic Kubernetes resource controller that allows monitoring any Kubernetes resource and sends a - notification when the configured rule is met. - * [Kube Watch](https://github.com/bitnami-labs/kubewatch) - a Kubernetes watcher that could publishes notification to Slack/hipchat/mattermost/flock channels. It watches the - cluster for resource changes and notifies them through webhooks. diff --git a/docs/operator-manual/project.yaml b/docs/operator-manual/project.yaml deleted file mode 100644 index f28e706e61f7d..0000000000000 --- a/docs/operator-manual/project.yaml +++ /dev/null @@ -1,66 +0,0 @@ -apiVersion: argoproj.io/v1alpha1 -kind: AppProject -metadata: - name: my-project - namespace: argocd - # Finalizer that ensures that project is not deleted until it is not referenced by any application - finalizers: - - resources-finalizer.argocd.argoproj.io -spec: - # Project description - description: Example Project - - # Allow manifests to deploy from any Git repos - sourceRepos: - - '*' - - # Only permit applications to deploy to the guestbook namespace in the same cluster - destinations: - - namespace: guestbook - server: https://kubernetes.default.svc - - # Deny all cluster-scoped resources from being created, except for Namespace - clusterResourceWhitelist: - - group: '' - kind: Namespace - - # Allow all namespaced-scoped resources to be created, except for ResourceQuota, LimitRange, NetworkPolicy - namespaceResourceBlacklist: - - group: '' - kind: ResourceQuota - - group: '' - kind: LimitRange - - group: '' - kind: NetworkPolicy - - # Deny all namespaced-scoped resources from being created, except for Deployment and StatefulSet - namespaceResourceWhitelist: - - group: 'apps' - kind: Deployment - - group: 'apps' - kind: StatefulSet - - # Enables namespace orphaned resource monitoring. - orphanedResources: - warn: false - - roles: - # A role which provides read-only access to all applications in the project - - name: read-only - description: Read-only privileges to my-project - policies: - - p, proj:my-project:read-only, applications, get, my-project/*, allow - groups: - - my-oidc-group - - # A role which provides sync privileges to only the guestbook-dev application, e.g. to provide - # sync privileges to a CI system - - name: ci-role - description: Sync privileges for guestbook-dev - policies: - - p, proj:my-project:ci-role, applications, sync, my-project/guestbook-dev, allow - - # NOTE: JWT tokens can only be generated by the API server and the token is not persisted - # anywhere by Argo CD. It can be prematurely revoked by removing the entry from this list. - jwtTokens: - - iat: 1535390316 diff --git a/docs/operator-manual/rbac.md b/docs/operator-manual/rbac.md deleted file mode 100644 index ac25957ed138a..0000000000000 --- a/docs/operator-manual/rbac.md +++ /dev/null @@ -1,166 +0,0 @@ -# RBAC Configuration - -The RBAC feature enables restriction of access to Argo CD resources. Argo CD does not have its own -user management system and has only one built-in user `admin`. The `admin` user is a superuser and -it has unrestricted access to the system. RBAC requires [SSO configuration](user-management/index.md) or [one or more local users setup](user-management/index.md). -Once SSO or local users are configured, additional RBAC roles can be defined, and SSO groups or local users can man be mapped to roles. - -## Basic Built-in Roles - -Argo CD has two pre-defined roles but RBAC configuration allows defining roles and groups (see below). - -* `role:readonly` - read-only access to all resources -* `role:admin` - unrestricted access to all resources - -These default built-in role definitions can be seen in [builtin-policy.csv](https://github.com/argoproj/argo-cd/blob/master/assets/builtin-policy.csv) - -### RBAC Permission Structure - -Breaking down the permissions definition differs slightly between applications and every other resource type in Argo CD. - -* All resources *except* applications permissions (see next bullet): - - `p, , , , ` - -* Applications (which belong to an AppProject): - - `p, , , , /` - -### RBAC Resources and Actions - -Resources: `clusters`, `projects`, `applications`, `repositories`, `certificates`, `accounts`, `gpgkeys` - -Actions: `get`, `create`, `update`, `delete`, `sync`, `override`, `action` - -## Tying It All Together - -Additional roles and groups can be configured in `argocd-rbac-cm` ConfigMap. The example below -configures a custom role, named `org-admin`. The role is assigned to any user which belongs to -`your-github-org:your-team` group. All other users get the default policy of `role:readonly`, -which cannot modify Argo CD settings. - -*ArgoCD ConfigMap `argocd-rbac-cm` Example:* - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-rbac-cm - namespace: argocd -data: - policy.default: role:readonly - policy.csv: | - p, role:org-admin, applications, *, */*, allow - p, role:org-admin, clusters, get, *, allow - p, role:org-admin, repositories, get, *, allow - p, role:org-admin, repositories, create, *, allow - p, role:org-admin, repositories, update, *, allow - p, role:org-admin, repositories, delete, *, allow - - g, your-github-org:your-team, role:org-admin -``` ----- - -Another `policy.csv` example might look as follows: - -```csv -p, role:staging-db-admins, applications, create, staging-db-admins/*, allow -p, role:staging-db-admins, applications, delete, staging-db-admins/*, allow -p, role:staging-db-admins, applications, get, staging-db-admins/*, allow -p, role:staging-db-admins, applications, override, staging-db-admins/*, allow -p, role:staging-db-admins, applications, sync, staging-db-admins/*, allow -p, role:staging-db-admins, applications, update, staging-db-admins/*, allow -p, role:staging-db-admins, projects, get, staging-db-admins, allow -g, db-admins, role:staging-db-admins -``` - -This example defines a *role* called `staging-db-admins` with *seven permissions* that allow that role to perform the *actions* (`create`/`delete`/`get`/`override`/`sync`/`update` applications, and `get` appprojects) against `*` (all) objects in the `staging-db-admins` Argo CD AppProject. - -## Anonymous Access - -The anonymous access to Argo CD can be enabled using `users.anonymous.enabled` field in `argocd-cm` (see [argocd-cm.yaml](argocd-cm.yaml)). -The anonymous users get default role permissions specified by `policy.default` in `argocd-rbac-cm.yaml`. For read-only access you'll want `policy.default: role:readonly` as above - -## Validating and testing your RBAC policies - -If you want to ensure that your RBAC policies are working as expected, you can -use the `argocd-util rbac` command to validate them. This tool allows you to -test whether a certain role or subject can perform the requested action with a -policy that's not live yet in the system, i.e. from a local file or config map. -Additionally, it can be used against the live policy in the cluster your Argo -CD is running in. - -To check whether your new policy is valid and understood by Argo CD's RBAC -implementation, you can use the `argocd-util rbac validate` command. - -### Validating a policy - -To validate a policy stored in a local text file: - -```shell -argocd-util rbac validate --policy-file somepolicy.csv -``` - -To validate a policy stored in a local K8s ConfigMap definition in a YAML file: - -```shell -argocd-util rbac validate --policy-file argocd-rbac-cm.yaml -``` - -To validate a policy stored in K8s, used by Argo CD in namespace `argocd`, -ensure that your current context in `~/.kube/config` is pointing to your -Argo CD cluster and give appropriate namespace: - -```shell -argocd-util rbac validate --namespace argocd -``` - -### Testing a policy - -To test whether a role or subject (group or local user) has sufficient -permissions to execute certain actions on certain resources, you can -use the `argocd-util rbac can` command. Its general syntax is - -```shell -argocd-util rbac can SOMEROLE ACTION RESOURCE SUBRESOURCE [flags] -``` - -Given the example from the above ConfigMap, which defines the role -`role:org-admin`, and is stored on your local system as `argocd-rbac-cm-yaml`, -you can test whether that role can do something like follows: - -```shell -$ argocd-util rbac can role:org-admin get applications --policy-file argocd-rbac-cm.yaml -Yes -$ argocd-util rbac can role:org-admin get clusters --policy-file argocd-rbac-cm.yaml -Yes -$ argocd-util rbac can role:org-admin create clusters 'somecluster' --policy-file argocd-rbac-cm.yaml -No -$ argocd-util rbac can role:org-admin create applications 'someproj/someapp' --policy-file argocd-rbac-cm.yaml -Yes -``` - -Another example, given the policy above from `policy.csv`, which defines the -role `role:staging-db-admins` and associates the group `db-admins` with it. -Policy is stored locally as `policy.csv`: - -You can test against the role: - -```shell -# Plain policy, without a default role defined -$ argocd-util rbac can role:stagin-db-admins get applications --policy-file policy.csv -No -$ argocd-util rbac can role:staging-db-admins get applications 'staging-db-admins/*' --policy-file policy.csv -Yes -# Argo CD augments a builtin policy with two roles defined, the default role -# being 'role:readonly' - You can include a named default role to use: -$ argocd-util rbac can role:stagin-db-admins get applications --policy-file policy.csv --default-role role:readonly -Yes -``` - -Or against the group defined: - -```shell -$ argocd-util rbac can db-admins get applications 'staging-db-admins/*' --policy-file policy.csv -Yes -``` diff --git a/docs/operator-manual/secret-management.md b/docs/operator-manual/secret-management.md deleted file mode 100644 index 42e608c601f02..0000000000000 --- a/docs/operator-manual/secret-management.md +++ /dev/null @@ -1,16 +0,0 @@ -# Secret Management - -Argo CD is un-opinionated about how secrets are managed. There's many ways to do it and there's no one-size-fits-all solution. Here's some ways people are doing GitOps secrets: - -* [Bitnami Sealed Secrets](https://github.com/bitnami-labs/sealed-secrets) -* [GoDaddy Kubernetes External Secrets](https://github.com/godaddy/kubernetes-external-secrets) -* [External Secrets Operator](https://github.com/ContainerSolutions/externalsecret-operator) -* [Hashicorp Vault](https://www.vaultproject.io) -* [Banzai Cloud Bank-Vaults](https://github.com/banzaicloud/bank-vaults) -* [Helm Secrets](https://github.com/futuresimple/helm-secrets) -* [Kustomize secret generator plugins](https://github.com/kubernetes-sigs/kustomize/blob/fd7a353df6cece4629b8e8ad56b71e30636f38fc/examples/kvSourceGoPlugin.md#secret-values-from-anywhere) -* [aws-secret-operator](https://github.com/mumoshu/aws-secret-operator) -* [KSOPS](https://github.com/viaduct-ai/kustomize-sops#argo-cd-integration) - - -For discussion, see [#1364](https://github.com/argoproj/argo-cd/issues/1364) diff --git a/docs/operator-manual/security.md b/docs/operator-manual/security.md deleted file mode 100644 index cdea22223e713..0000000000000 --- a/docs/operator-manual/security.md +++ /dev/null @@ -1,155 +0,0 @@ -# Security - -Argo CD has undergone rigorous internal security reviews and penetration testing to satisfy [PCI -compliance](https://www.pcisecuritystandards.org) requirements. The following are some security -topics and implementation details of Argo CD. - -## Authentication - -Authentication to Argo CD API server is performed exclusively using [JSON Web Tokens](https://jwt.io) -(JWTs). Username/password bearer tokens are not used for authentication. The JWT is obtained/managed -in one of the following ways: - -1. For the local `admin` user, a username/password is exchanged for a JWT using the `/api/v1/session` - endpoint. This token is signed & issued by the Argo CD API server itself, and has no expiration. - When the admin password is updated, all existing admin JWT tokens are immediately revoked. - The password is stored as a bcrypt hash in the [`argocd-secret`](https://github.com/argoproj/argo-cd/blob/master/manifests/base/config/argocd-secret.yaml) Secret. - -2. For Single Sign-On users, the user completes an OAuth2 login flow to the configured OIDC identity - provider (either delegated through the bundled Dex provider, or directly to a self-managed OIDC - provider). This JWT is signed & issued by the IDP, and expiration and revocation is handled by - the provider. Dex tokens expire after 24 hours. - -3. Automation tokens are generated for a project using the `/api/v1/projects/{project}/roles/{role}/token` - endpoint, and are signed & issued by Argo CD. These tokens are limited in scope and privilege, - and can only be used to manage application resources in the project which it belongs to. Project - JWTs have a configurable expiration and can be immediately revoked by deleting the JWT reference - ID from the project role. - -## Authorization - -Authorization is performed by iterating the list of group membership in a user's JWT groups claims, -and comparing each group against the roles/rules in the [RBAC](../rbac) policy. Any matched rule -permits access to the API request. - -## TLS - -All network communication is performed over TLS including service-to-service communication between -the three components (argocd-server, argocd-repo-server, argocd-application-controller). The Argo CD -API server can enforce the use of TLS 1.2 using the flag: `--tlsminversion 1.2`. - -## Sensitive Information - -### Secrets - -Argo CD never returns sensitive data from its API, and redacts all sensitive data in API payloads -and logs. This includes: - -* cluster credentials -* Git credentials -* OAuth2 client secrets -* Kubernetes Secret values - -### External Cluster Credentials - -To manage external clusters, Argo CD stores the credentials of the external cluster as a Kubernetes -Secret in the argocd namespace. This secret contains the K8s API bearer token associated with the -`argocd-manager` ServiceAccount created during `argocd cluster add`, along with connection options -to that API server (TLS configuration/certs, AWS role-arn, etc...). -The information is used to reconstruct a REST config and kubeconfig to the cluster used by Argo CD -services. - -To rotate the bearer token used by Argo CD, the token can be deleted (e.g. using kubectl) which -causes kubernetes to generate a new secret with a new bearer token. The new token can be re-inputted -to Argo CD by re-running `argocd cluster add`. Run the following commands against the *_managed_* -cluster: - -```bash -# run using a kubeconfig for the externally managed cluster -kubectl delete secret argocd-manager-token-XXXXXX -n kube-system -argocd cluster add CONTEXTNAME -``` - -To revoke Argo CD's access to a managed cluster, delete the RBAC artifacts against the *_managed_* -cluster, and remove the cluster entry from Argo CD: - -```bash -# run using a kubeconfig for the externally managed cluster -kubectl delete sa argocd-manager -n kube-system -kubectl delete clusterrole argocd-manager-role -kubectl delete clusterrolebinding argocd-manager-role-binding -argocd cluster rm https://your-kubernetes-cluster-addr -``` - -> NOTE: for AWS EKS clusters, the [get-token](https://docs.aws.amazon.com/cli/latest/reference/eks/get-token.html) command - is used to authenticate to the external cluster, which uses IAM roles in lieu of locally stored - tokens, so token rotation is not needed, and revocation is handled through IAM. - - -## Cluster RBAC - -By default, Argo CD uses a [clusteradmin level role](https://github.com/argoproj/argo-cd/blob/master/manifests/base/application-controller/argocd-application-controller-role.yaml) -in order to: - -1. watch & operate on cluster state -2. deploy resources to the cluster - -Although Argo CD requires cluster-wide **_read_** privileges to resources in the managed cluster to -function properly, it does not necessarily need full **_write_** privileges to the cluster. The -ClusterRole used by argocd-server and argocd-application-controller can be modified such -that write privileges are limited to only the namespaces and resources that you wish Argo CD to -manage. - -To fine-tune privileges of externally managed clusters, edit the ClusterRole of the `argocd-manager-role` - -```bash -# run using a kubeconfig for the externally managed cluster -kubectl edit clusterrole argocd-manager-role -``` - -To fine-tune privileges which Argo CD has against its own cluster (i.e. `https://kubernetes.default.svc`), -edit the following cluster roles where Argo CD is running in: - -```bash -# run using a kubeconfig to the cluster Argo CD is running in -kubectl edit clusterrole argocd-server -kubectl edit clusterrole argocd-application-controller -``` - -!!! tip - If you want to deny ArgoCD access to a kind of resource then add it as an [excluded resource](declarative-setup.md#resource-exclusion). - -## Auditing - -As a GitOps deployment tool, the Git commit history provides a natural audit log of what changes -were made to application configuration, when they were made, and by whom. However, this audit log -only applies to what happened in Git and does not necessarily correlate one-to-one with events -that happen in a cluster. For example, User A could have made multiple commits to application -manifests, but User B could have just only synced those changes to the cluster sometime later. - -To complement the Git revision history, Argo CD emits Kubernetes Events of application activity, -indicating the responsible actor when applicable. For example: - -```bash -$ kubectl get events -LAST SEEN FIRST SEEN COUNT NAME KIND SUBOBJECT TYPE REASON SOURCE MESSAGE -1m 1m 1 guestbook.157f7c5edd33aeac Application Normal ResourceCreated argocd-server admin created application -1m 1m 1 guestbook.157f7c5f0f747acf Application Normal ResourceUpdated argocd-application-controller Updated sync status: -> OutOfSync -1m 1m 1 guestbook.157f7c5f0fbebbff Application Normal ResourceUpdated argocd-application-controller Updated health status: -> Missing -1m 1m 1 guestbook.157f7c6069e14f4d Application Normal OperationStarted argocd-server admin initiated sync to HEAD (8a1cb4a02d3538e54907c827352f66f20c3d7b0d) -1m 1m 1 guestbook.157f7c60a55a81a8 Application Normal OperationCompleted argocd-application-controller Sync operation to 8a1cb4a02d3538e54907c827352f66f20c3d7b0d succeeded -1m 1m 1 guestbook.157f7c60af1ccae2 Application Normal ResourceUpdated argocd-application-controller Updated sync status: OutOfSync -> Synced -1m 1m 1 guestbook.157f7c60af5bc4f0 Application Normal ResourceUpdated argocd-application-controller Updated health status: Missing -> Progressing -1m 1m 1 guestbook.157f7c651990e848 Application Normal ResourceUpdated argocd-application-controller Updated health status: Progressing -> Healthy -``` - -These events can be then be persisted for longer periods of time using other tools as -[Event Exporter](https://github.com/GoogleCloudPlatform/k8s-stackdriver/tree/master/event-exporter) or -[Event Router](https://github.com/heptiolabs/eventrouter). - -## WebHook Payloads - -Payloads from webhook events are considered untrusted. Argo CD only examines the payload to infer -the involved applications of the webhook event (e.g. which repo was modified), then refreshes -the related application for reconciliation. This refresh is the same refresh which occurs regularly -at three minute intervals, just fast-tracked by the webhook event. diff --git a/docs/operator-manual/server-commands/argocd-application-controller.md b/docs/operator-manual/server-commands/argocd-application-controller.md deleted file mode 100644 index a73e5d994beac..0000000000000 --- a/docs/operator-manual/server-commands/argocd-application-controller.md +++ /dev/null @@ -1,53 +0,0 @@ -## argocd-application-controller - -Run ArgoCD Application Controller - -### Synopsis - -ArgoCD application controller is a Kubernetes controller that continuously monitors running applications and compares the current, live state against the desired target state (as specified in the repo). This command runs Application Controller in the foreground. It can be configured by following options. - -``` -argocd-application-controller [flags] -``` - -### Options - -``` - --app-resync int Time period in seconds for application resync. (default 180) - --app-state-cache-expiration duration Cache expiration for app state (default 1h0m0s) - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - --default-cache-expiration duration Cache expiration default (default 24h0m0s) - --gloglevel int Set the glog logging level - -h, --help help for argocd-application-controller - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - --kubectl-parallelism-limit int Number of allowed concurrent kubectl fork/execs. Any value less the 1 means no limit. (default 20) - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --metrics-cache-expiration duration Prometheus metrics cache expiration (disabled by default. e.g. 24h0m0s) - --metrics-port int Start metrics server on given port (default 8082) - -n, --namespace string If present, the namespace scope for this CLI request - --operation-processors int Number of application operation processors (default 1) - --password string Password for basic authentication to the API server - --redis string Redis server hostname and port (e.g. argocd-redis:6379). - --redisdb int Redis database. - --repo-server string Repo server address. (default "argocd-repo-server:8081") - --repo-server-timeout-seconds int Repo server RPC call timeout seconds. (default 60) - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --self-heal-timeout-seconds int Specifies timeout between application self heal attempts (default 5) - --sentinel stringArray Redis sentinel hostname and port (e.g. argocd-redis-ha-announce-0:6379). - --sentinelmaster string Redis sentinel master group name. (default "master") - --server string The address and port of the Kubernetes API server - --status-processors int Number of application status processors (default 1) - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - diff --git a/docs/operator-manual/server-commands/argocd-dex.md b/docs/operator-manual/server-commands/argocd-dex.md deleted file mode 100644 index 334fa49a5971f..0000000000000 --- a/docs/operator-manual/server-commands/argocd-dex.md +++ /dev/null @@ -1,25 +0,0 @@ -## argocd-dex - -argocd-dex tools used by Argo CD - -### Synopsis - -argocd-dex has internal utility tools used by Argo CD - -``` -argocd-dex [flags] -``` - -### Options - -``` - -h, --help help for argocd-dex - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") -``` - -### SEE ALSO - -* [argocd-dex gendexcfg](argocd-dex_gendexcfg.md) - Generates a dex config from Argo CD settings -* [argocd-dex rundex](argocd-dex_rundex.md) - Runs dex generating a config using settings from the Argo CD configmap and secret - diff --git a/docs/operator-manual/server-commands/argocd-dex_gendexcfg.md b/docs/operator-manual/server-commands/argocd-dex_gendexcfg.md deleted file mode 100644 index 0fcfcb9b0b84d..0000000000000 --- a/docs/operator-manual/server-commands/argocd-dex_gendexcfg.md +++ /dev/null @@ -1,36 +0,0 @@ -## argocd-dex gendexcfg - -Generates a dex config from Argo CD settings - -``` -argocd-dex gendexcfg [flags] -``` - -### Options - -``` - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - -h, --help help for gendexcfg - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - -o, --out string Output to the specified file instead of stdout - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-dex](argocd-dex.md) - argocd-dex tools used by Argo CD - diff --git a/docs/operator-manual/server-commands/argocd-dex_rundex.md b/docs/operator-manual/server-commands/argocd-dex_rundex.md deleted file mode 100644 index 19942ff13cf40..0000000000000 --- a/docs/operator-manual/server-commands/argocd-dex_rundex.md +++ /dev/null @@ -1,35 +0,0 @@ -## argocd-dex rundex - -Runs dex generating a config using settings from the Argo CD configmap and secret - -``` -argocd-dex rundex [flags] -``` - -### Options - -``` - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - -h, --help help for rundex - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-dex](argocd-dex.md) - argocd-dex tools used by Argo CD - diff --git a/docs/operator-manual/server-commands/argocd-repo-server.md b/docs/operator-manual/server-commands/argocd-repo-server.md deleted file mode 100644 index e1c4132e89cbc..0000000000000 --- a/docs/operator-manual/server-commands/argocd-repo-server.md +++ /dev/null @@ -1,32 +0,0 @@ -## argocd-repo-server - -Run ArgoCD Repository Server - -### Synopsis - -ArgoCD Repository Server is an internal service which maintains a local cache of the Git repository holding the application manifests, and is responsible for generating and returning the Kubernetes manifests. This command runs Repository Server in the foreground. It can be configured by following options. - -``` -argocd-repo-server [flags] -``` - -### Options - -``` - --default-cache-expiration duration Cache expiration default (default 24h0m0s) - -h, --help help for argocd-repo-server - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --metrics-port int Start metrics server on given port (default 8084) - --parallelismlimit int Limit on number of concurrent manifests generate requests. Any value less the 1 means no limit. - --port int Listen on given port for incoming connections (default 8081) - --redis string Redis server hostname and port (e.g. argocd-redis:6379). - --redisdb int Redis database. - --repo-cache-expiration duration Cache expiration for repo state, incl. app lists, app details, manifest generation, revision meta-data (default 24h0m0s) - --sentinel stringArray Redis sentinel hostname and port (e.g. argocd-redis-ha-announce-0:6379). - --sentinelmaster string Redis sentinel master group name. (default "master") - --tlsciphers string The list of acceptable ciphers to be used when establishing TLS connections. Use 'list' to list available ciphers. (default "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:TLS_RSA_WITH_AES_256_GCM_SHA384") - --tlsmaxversion string The maximum SSL/TLS version that is acceptable (one of: 1.0|1.1|1.2|1.3) (default "1.3") - --tlsminversion string The minimum SSL/TLS version that is acceptable (one of: 1.0|1.1|1.2|1.3) (default "1.2") -``` - diff --git a/docs/operator-manual/server-commands/argocd-server.md b/docs/operator-manual/server-commands/argocd-server.md deleted file mode 100644 index 04c64c170376b..0000000000000 --- a/docs/operator-manual/server-commands/argocd-server.md +++ /dev/null @@ -1,66 +0,0 @@ -## argocd-server - -Run the ArgoCD API server - -### Synopsis - -The API server is a gRPC/REST server which exposes the API consumed by the Web UI, CLI, and CI/CD systems. This command runs API server in the foreground. It can be configured by following options. - -``` -argocd-server [flags] -``` - -### Options - -``` - --app-state-cache-expiration duration Cache expiration for app state (default 1h0m0s) - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --basehref string Value for base href in index.html. Used if Argo CD is running behind reverse proxy under subpath different from / (default "/") - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --connection-status-cache-expiration duration Cache expiration for cluster/repo connection status (default 1h0m0s) - --context string The name of the kubeconfig context to use - --default-cache-expiration duration Cache expiration default (default 24h0m0s) - --dex-server string Dex server address (default "http://argocd-dex-server:5556") - --disable-auth Disable client authentication - --enable-gzip Enable GZIP compression - --gloglevel int Set the glog logging level - -h, --help help for argocd-server - --insecure Run server without TLS - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - --logformat string Set the logging format. One of: text|json (default "text") - --login-attempts-expiration duration Cache expiration for failed login attempts (default 24h0m0s) - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --metrics-port int Start metrics on given port (default 8083) - -n, --namespace string If present, the namespace scope for this CLI request - --oidc-cache-expiration duration Cache expiration for OIDC state (default 3m0s) - --password string Password for basic authentication to the API server - --port int Listen on given port (default 8080) - --redis string Redis server hostname and port (e.g. argocd-redis:6379). - --redisdb int Redis database. - --repo-server string Repo server address (default "argocd-repo-server:8081") - --repo-server-timeout-seconds int Repo server RPC call timeout seconds. (default 60) - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --rootpath string Used if Argo CD is running behind reverse proxy under subpath different from / - --sentinel stringArray Redis sentinel hostname and port (e.g. argocd-redis-ha-announce-0:6379). - --sentinelmaster string Redis sentinel master group name. (default "master") - --server string The address and port of the Kubernetes API server - --staticassets string Static assets directory path - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --tlsciphers string The list of acceptable ciphers to be used when establishing TLS connections. Use 'list' to list available ciphers. (default "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:TLS_RSA_WITH_AES_256_GCM_SHA384") - --tlsmaxversion string The maximum SSL/TLS version that is acceptable (one of: 1.0|1.1|1.2|1.3) (default "1.3") - --tlsminversion string The minimum SSL/TLS version that is acceptable (one of: 1.0|1.1|1.2|1.3) (default "1.2") - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server - --x-frame-options value Set X-Frame-Options header in HTTP responses to value. To disable, set to "". (default "sameorigin") -``` - -### SEE ALSO - -* [argocd-server version](argocd-server_version.md) - Print version information - diff --git a/docs/operator-manual/server-commands/argocd-server_version.md b/docs/operator-manual/server-commands/argocd-server_version.md deleted file mode 100644 index 28e96fd9e76da..0000000000000 --- a/docs/operator-manual/server-commands/argocd-server_version.md +++ /dev/null @@ -1,41 +0,0 @@ -## argocd-server version - -Print version information - -``` -argocd-server version [flags] -``` - -### Options - -``` - -h, --help help for version - --short print just the version number -``` - -### Options inherited from parent commands - -``` - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-server](argocd-server.md) - Run the ArgoCD API server - diff --git a/docs/operator-manual/server-commands/argocd-util.md b/docs/operator-manual/server-commands/argocd-util.md deleted file mode 100644 index ab1cdd035074e..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util.md +++ /dev/null @@ -1,32 +0,0 @@ -## argocd-util - -argocd-util tools used by Argo CD - -### Synopsis - -argocd-util has internal utility tools used by Argo CD - -``` -argocd-util [flags] -``` - -### Options - -``` - -h, --help help for argocd-util - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") -``` - -### SEE ALSO - -* [argocd-util apps](argocd-util_apps.md) - Utility commands operate on ArgoCD applications -* [argocd-util config](argocd-util_config.md) - Generate declarative configuration files -* [argocd-util export](argocd-util_export.md) - Export all Argo CD data to stdout (default) or a file -* [argocd-util import](argocd-util_import.md) - Import Argo CD data from stdin (specify `-') or a file -* [argocd-util kubeconfig](argocd-util_kubeconfig.md) - Generates kubeconfig for the specified cluster -* [argocd-util projects](argocd-util_projects.md) - Utility commands operate on ArgoCD Projects -* [argocd-util rbac](argocd-util_rbac.md) - Validate and test RBAC configuration -* [argocd-util settings](argocd-util_settings.md) - Provides set of commands for settings validation and troubleshooting -* [argocd-util version](argocd-util_version.md) - Print version information - diff --git a/docs/operator-manual/server-commands/argocd-util_apps.md b/docs/operator-manual/server-commands/argocd-util_apps.md deleted file mode 100644 index 92a27b27860be..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_apps.md +++ /dev/null @@ -1,20 +0,0 @@ -## argocd-util apps - -Utility commands operate on ArgoCD applications - -``` -argocd-util apps [flags] -``` - -### Options - -``` - -h, --help help for apps -``` - -### SEE ALSO - -* [argocd-util](argocd-util.md) - argocd-util tools used by Argo CD -* [argocd-util apps diff-reconcile-results](argocd-util_apps_diff-reconcile-results.md) - Compare results of two reconciliations and print diff. -* [argocd-util apps get-reconcile-results](argocd-util_apps_get-reconcile-results.md) - Reconcile all applications and stores reconciliation summary in the specified file. - diff --git a/docs/operator-manual/server-commands/argocd-util_apps_diff-reconcile-results.md b/docs/operator-manual/server-commands/argocd-util_apps_diff-reconcile-results.md deleted file mode 100644 index 290a25190b7a4..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_apps_diff-reconcile-results.md +++ /dev/null @@ -1,18 +0,0 @@ -## argocd-util apps diff-reconcile-results - -Compare results of two reconciliations and print diff. - -``` -argocd-util apps diff-reconcile-results PATH1 PATH2 [flags] -``` - -### Options - -``` - -h, --help help for diff-reconcile-results -``` - -### SEE ALSO - -* [argocd-util apps](argocd-util_apps.md) - Utility commands operate on ArgoCD applications - diff --git a/docs/operator-manual/server-commands/argocd-util_apps_get-reconcile-results.md b/docs/operator-manual/server-commands/argocd-util_apps_get-reconcile-results.md deleted file mode 100644 index f8aaac48a5fd5..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_apps_get-reconcile-results.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd-util apps get-reconcile-results - -Reconcile all applications and stores reconciliation summary in the specified file. - -``` -argocd-util apps get-reconcile-results PATH [flags] -``` - -### Options - -``` - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - -h, --help help for get-reconcile-results - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - --l string Label selector - -n, --namespace string If present, the namespace scope for this CLI request - --o string Output format (yaml|json) (default "yaml") - --password string Password for basic authentication to the API server - --refresh If set to true then recalculates apps reconciliation - --repo-server string Repo server address. - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util apps](argocd-util_apps.md) - Utility commands operate on ArgoCD applications - diff --git a/docs/operator-manual/server-commands/argocd-util_config.md b/docs/operator-manual/server-commands/argocd-util_config.md deleted file mode 100644 index b7e711501dcaa..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_config.md +++ /dev/null @@ -1,22 +0,0 @@ -## argocd-util config - -Generate declarative configuration files - -``` -argocd-util config [flags] -``` - -### Options - -``` - -h, --help help for config -``` - -### SEE ALSO - -* [argocd-util](argocd-util.md) - argocd-util tools used by Argo CD -* [argocd-util config app](argocd-util_config_app.md) - Generate declarative config for an application -* [argocd-util config cluster](argocd-util_config_cluster.md) - Generate declarative config for a cluster -* [argocd-util config proj](argocd-util_config_proj.md) - Generate declarative config for a project -* [argocd-util config repo](argocd-util_config_repo.md) - Generate declarative config for a repo - diff --git a/docs/operator-manual/server-commands/argocd-util_config_app.md b/docs/operator-manual/server-commands/argocd-util_config_app.md deleted file mode 100644 index c3a410decd9cc..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_config_app.md +++ /dev/null @@ -1,86 +0,0 @@ -## argocd-util config app - -Generate declarative config for an application - -``` -argocd-util config app APPNAME [flags] -``` - -### Examples - -``` - - # Generate declarative config for a directory app - argocd-util config app guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --directory-recurse - - # Generate declarative config for a Jsonnet app - argocd-util config app jsonnet-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path jsonnet-guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --jsonnet-ext-str replicas=2 - - # Generate declarative config for a Helm app - argocd-util config app helm-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path helm-guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --helm-set replicaCount=2 - - # Generate declarative config for a Helm app from a Helm repo - argocd-util config app nginx-ingress --repo https://kubernetes-charts.storage.googleapis.com --helm-chart nginx-ingress --revision 1.24.3 --dest-namespace default --dest-server https://kubernetes.default.svc - - # Generate declarative config for a Kustomize app - argocd-util config app kustomize-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path kustomize-guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --kustomize-image gcr.io/heptio-images/ks-guestbook-demo:0.1 - - # Generate declarative config for a app using a custom tool: - argocd-util config app ksane --repo https://github.com/argoproj/argocd-example-apps.git --path plugins/kasane --dest-namespace default --dest-server https://kubernetes.default.svc --config-management-plugin kasane - -``` - -### Options - -``` - --allow-empty Set allow zero live resources when sync is automated - --auto-prune Set automatic pruning when sync is automated - --config-management-plugin string Config management plugin name - --dest-name string K8s cluster Name (e.g. minikube) - --dest-namespace string K8s target namespace (overrides the namespace specified in the ksonnet app.yaml) - --dest-server string K8s cluster URL (e.g. https://kubernetes.default.svc) - --directory-exclude string Set glob expression used to exclude files from application source path - --directory-include string Set glob expression used to include files from application source path - --directory-recurse Recurse directory - --env string Application environment to monitor - -f, --file string Filename or URL to Kubernetes manifests for the app - --helm-chart string Helm Chart name - --helm-set stringArray Helm set values on the command line (can be repeated to set several values: --helm-set key1=val1 --helm-set key2=val2) - --helm-set-file stringArray Helm set values from respective files specified via the command line (can be repeated to set several values: --helm-set-file key1=path1 --helm-set-file key2=path2) - --helm-set-string stringArray Helm set STRING values on the command line (can be repeated to set several values: --helm-set-string key1=val1 --helm-set-string key2=val2) - --helm-version string Helm version - -h, --help help for app - --jsonnet-ext-var-code stringArray Jsonnet ext var - --jsonnet-ext-var-str stringArray Jsonnet string ext var - --jsonnet-libs stringArray Additional jsonnet libs (prefixed by repoRoot) - --jsonnet-tla-code stringArray Jsonnet top level code arguments - --jsonnet-tla-str stringArray Jsonnet top level string arguments - --kustomize-common-annotation stringArray Set common labels in Kustomize - --kustomize-common-label stringArray Set common labels in Kustomize - --kustomize-image stringArray Kustomize images (e.g. --kustomize-image node:8.15.0 --kustomize-image mysql=mariadb,alpine@sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d) - --kustomize-version string Kustomize version - -l, --label stringArray Labels to apply to the app - --name string A name for the app, ignored if a file is set (DEPRECATED) - --nameprefix string Kustomize nameprefix - --namesuffix string Kustomize namesuffix - -o, --output string Output format. One of: json|yaml (default "yaml") - -p, --parameter stringArray set a parameter override (e.g. -p guestbook=image=example/guestbook:latest) - --path string Path in repository to the app directory, ignored if a file is set - --plugin-env stringArray Additional plugin envs - --project string Application project name - --release-name string Helm release-name - --repo string Repository URL, ignored if a file is set - --revision string The tracking source branch, tag, commit or Helm chart version the application will sync to - --revision-history-limit int How many items to keep in revision history (default 10) - --self-heal Set self healing when sync is automated - --sync-option Prune=false Add or remove a sync option, e.g add Prune=false. Remove using `!` prefix, e.g. `!Prune=false` - --sync-policy string Set the sync policy (one of: none, automated (aliases of automated: auto, automatic)) - --validate Validation of repo and cluster (default true) - --values stringArray Helm values file(s) to use - --values-literal-file string Filename or URL to import as a literal Helm values block -``` - -### SEE ALSO - -* [argocd-util config](argocd-util_config.md) - Generate declarative configuration files - diff --git a/docs/operator-manual/server-commands/argocd-util_config_cluster.md b/docs/operator-manual/server-commands/argocd-util_config_cluster.md deleted file mode 100644 index 8bd02356d6402..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_config_cluster.md +++ /dev/null @@ -1,32 +0,0 @@ -## argocd-util config cluster - -Generate declarative config for a cluster - -``` -argocd-util config cluster CONTEXT [flags] -``` - -### Options - -``` - --aws-cluster-name string AWS Cluster name if set then aws cli eks token command will be used to access cluster - --aws-role-arn string Optional AWS role arn. If set then AWS IAM Authenticator assumes a role to perform cluster operations instead of the default AWS credential provider chain. - --bearer-token string Authentication token that should be used to access K8S API server - --exec-command string Command to run to provide client credentials to the cluster. You may need to build a custom ArgoCD image to ensure the command is available at runtime. - --exec-command-api-version string Preferred input version of the ExecInfo for the --exec-command executable - --exec-command-args stringArray Arguments to supply to the --exec-command executable - --exec-command-env stringToString Environment vars to set when running the --exec-command executable (default []) - --exec-command-install-hint string Text shown to the user when the --exec-command executable doesn't seem to be present - -h, --help help for cluster - --in-cluster Indicates Argo CD resides inside this cluster and should connect using the internal k8s hostname (kubernetes.default.svc) - --kubeconfig string use a particular kubeconfig file - --name string Overwrite the cluster name - --namespace stringArray List of namespaces which are allowed to manage - -o, --output string Output format. One of: json|yaml (default "yaml") - --shard int Cluster shard number; inferred from hostname if not set (default -1) -``` - -### SEE ALSO - -* [argocd-util config](argocd-util_config.md) - Generate declarative configuration files - diff --git a/docs/operator-manual/server-commands/argocd-util_config_proj.md b/docs/operator-manual/server-commands/argocd-util_config_proj.md deleted file mode 100644 index 345a98f72820b..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_config_proj.md +++ /dev/null @@ -1,26 +0,0 @@ -## argocd-util config proj - -Generate declarative config for a project - -``` -argocd-util config proj PROJECT [flags] -``` - -### Options - -``` - --description string Project description - -d, --dest stringArray Permitted destination server and namespace (e.g. https://192.168.99.100:8443,default) - -f, --file string Filename or URL to Kubernetes manifests for the project - -h, --help help for proj - --orphaned-resources Enables orphaned resources monitoring - --orphaned-resources-warn Specifies if applications should have a warning condition when orphaned resources detected - -o, --output string Output format. One of: json|yaml (default "yaml") - --signature-keys strings GnuPG public key IDs for commit signature verification - -s, --src stringArray Permitted source repository URL -``` - -### SEE ALSO - -* [argocd-util config](argocd-util_config.md) - Generate declarative configuration files - diff --git a/docs/operator-manual/server-commands/argocd-util_config_repo.md b/docs/operator-manual/server-commands/argocd-util_config_repo.md deleted file mode 100644 index 80fec43bf7a7d..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_config_repo.md +++ /dev/null @@ -1,61 +0,0 @@ -## argocd-util config repo - -Generate declarative config for a repo - -``` -argocd-util config repo REPOURL [flags] -``` - -### Examples - -``` - - # Add a Git repository via SSH using a private key for authentication, ignoring the server's host key: - argocd-util config repo git@git.example.com:repos/repo --insecure-ignore-host-key --ssh-private-key-path ~/id_rsa - - # Add a Git repository via SSH on a non-default port - need to use ssh:// style URLs here - argocd-util config repo ssh://git@git.example.com:2222/repos/repo --ssh-private-key-path ~/id_rsa - - # Add a private Git repository via HTTPS using username/password and TLS client certificates: - argocd-util config repo https://git.example.com/repos/repo --username git --password secret --tls-client-cert-path ~/mycert.crt --tls-client-cert-key-path ~/mycert.key - - # Add a private Git repository via HTTPS using username/password without verifying the server's TLS certificate - argocd-util config repo https://git.example.com/repos/repo --username git --password secret --insecure-skip-server-verification - - # Add a public Helm repository named 'stable' via HTTPS - argocd-util config repo https://kubernetes-charts.storage.googleapis.com --type helm --name stable - - # Add a private Helm repository named 'stable' via HTTPS - argocd-util config repo https://kubernetes-charts.storage.googleapis.com --type helm --name stable --username test --password test - - # Add a private Helm OCI-based repository named 'stable' via HTTPS - argocd-util config repo helm-oci-registry.cn-zhangjiakou.cr.aliyuncs.com --type helm --name stable --enable-oci --username test --password test - -``` - -### Options - -``` - --enable-lfs enable git-lfs (Large File Support) on this repository - --enable-oci enable helm-oci (Helm OCI-Based Repository) - --github-app-enterprise-base-url string base url to use when using GitHub Enterprise (e.g. https://ghe.example.com/api/v3 - --github-app-id int id of the GitHub Application - --github-app-installation-id int installation id of the GitHub Application - --github-app-private-key-path string private key of the GitHub Application - -h, --help help for repo - --insecure-ignore-host-key disables SSH strict host key checking (deprecated, use --insecure-skip-server-verification instead) - --insecure-skip-server-verification disables server certificate and host key checks - --name string name of the repository, mandatory for repositories of type helm - -o, --output string Output format. One of: json|yaml (default "yaml") - --password string password to the repository - --ssh-private-key-path string path to the private ssh key (e.g. ~/.ssh/id_rsa) - --tls-client-cert-key-path string path to the TLS client cert's key path (must be PEM format) - --tls-client-cert-path string path to the TLS client cert (must be PEM format) - --type string type of the repository, "git" or "helm" (default "git") - --username string username to the repository -``` - -### SEE ALSO - -* [argocd-util config](argocd-util_config.md) - Generate declarative configuration files - diff --git a/docs/operator-manual/server-commands/argocd-util_export.md b/docs/operator-manual/server-commands/argocd-util_export.md deleted file mode 100644 index b52a1fc048a76..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_export.md +++ /dev/null @@ -1,36 +0,0 @@ -## argocd-util export - -Export all Argo CD data to stdout (default) or a file - -``` -argocd-util export [flags] -``` - -### Options - -``` - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - -h, --help help for export - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - -o, --out string Output to the specified file instead of stdout (default "-") - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util](argocd-util.md) - argocd-util tools used by Argo CD - diff --git a/docs/operator-manual/server-commands/argocd-util_gendexcfg.md b/docs/operator-manual/server-commands/argocd-util_gendexcfg.md deleted file mode 100644 index 4f3f0c5a78082..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_gendexcfg.md +++ /dev/null @@ -1,36 +0,0 @@ -## argocd-util gendexcfg - -Generates a dex config from Argo CD settings - -``` -argocd-util gendexcfg [flags] -``` - -### Options - -``` - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - -h, --help help for gendexcfg - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - -o, --out string Output to the specified file instead of stdout - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util](argocd-util.md) - argocd-util tools used by Argo CD - diff --git a/docs/operator-manual/server-commands/argocd-util_import.md b/docs/operator-manual/server-commands/argocd-util_import.md deleted file mode 100644 index f32f4cdcdb76e..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_import.md +++ /dev/null @@ -1,37 +0,0 @@ -## argocd-util import - -Import Argo CD data from stdin (specify `-') or a file - -``` -argocd-util import SOURCE [flags] -``` - -### Options - -``` - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - --dry-run Print what will be performed - -h, --help help for import - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --prune Prune secrets, applications and projects which do not appear in the backup - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util](argocd-util.md) - argocd-util tools used by Argo CD - diff --git a/docs/operator-manual/server-commands/argocd-util_kubeconfig.md b/docs/operator-manual/server-commands/argocd-util_kubeconfig.md deleted file mode 100644 index 70426e22876cb..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_kubeconfig.md +++ /dev/null @@ -1,35 +0,0 @@ -## argocd-util kubeconfig - -Generates kubeconfig for the specified cluster - -``` -argocd-util kubeconfig CLUSTER_URL OUTPUT_PATH [flags] -``` - -### Options - -``` - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - -h, --help help for kubeconfig - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util](argocd-util.md) - argocd-util tools used by Argo CD - diff --git a/docs/operator-manual/server-commands/argocd-util_projects.md b/docs/operator-manual/server-commands/argocd-util_projects.md deleted file mode 100644 index 5aa2d214f2894..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_projects.md +++ /dev/null @@ -1,20 +0,0 @@ -## argocd-util projects - -Utility commands operate on ArgoCD Projects - -``` -argocd-util projects [flags] -``` - -### Options - -``` - -h, --help help for projects -``` - -### SEE ALSO - -* [argocd-util](argocd-util.md) - argocd-util tools used by Argo CD -* [argocd-util projects generate-allow-list](argocd-util_projects_generate-allow-list.md) - Generates project allow list from the specified clusterRole file -* [argocd-util projects update-role-policy](argocd-util_projects_update-role-policy.md) - Implement bulk project role update. Useful to back-fill existing project policies or remove obsolete actions. - diff --git a/docs/operator-manual/server-commands/argocd-util_projects_generate-allow-list.md b/docs/operator-manual/server-commands/argocd-util_projects_generate-allow-list.md deleted file mode 100644 index f78512bd7a71f..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_projects_generate-allow-list.md +++ /dev/null @@ -1,36 +0,0 @@ -## argocd-util projects generate-allow-list - -Generates project allow list from the specified clusterRole file - -``` -argocd-util projects generate-allow-list CLUSTERROLE_PATH PROJ_NAME [flags] -``` - -### Options - -``` - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - -h, --help help for generate-allow-list - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - -o, --out string Output to the specified file instead of stdout (default "-") - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util projects](argocd-util_projects.md) - Utility commands operate on ArgoCD Projects - diff --git a/docs/operator-manual/server-commands/argocd-util_projects_update-role-policy.md b/docs/operator-manual/server-commands/argocd-util_projects_update-role-policy.md deleted file mode 100644 index 346034bc541de..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_projects_update-role-policy.md +++ /dev/null @@ -1,51 +0,0 @@ -## argocd-util projects update-role-policy - -Implement bulk project role update. Useful to back-fill existing project policies or remove obsolete actions. - -``` -argocd-util projects update-role-policy PROJECT_GLOB MODIFICATION ACTION [flags] -``` - -### Examples - -``` - # Add policy that allows executing any action (action/*) to roles which name matches to *deployer* in all projects - argocd-util projects update-role-policy '*' set 'action/*' --role '*deployer*' --resource applications --scope '*' --permission allow - - # Remove policy that which manages running (action/*) from all roles which name matches *deployer* in all projects - argocd-util projects update-role-policy '*' remove override --role '*deployer*' - -``` - -### Options - -``` - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - --dry-run Dry run (default true) - -h, --help help for update-role-policy - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --permission string Action permission - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --resource string Resource e.g. 'applications' - --role string Role name pattern e.g. '*deployer*' (default "*") - --scope string Resource scope e.g. '*' - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util projects](argocd-util_projects.md) - Utility commands operate on ArgoCD Projects - diff --git a/docs/operator-manual/server-commands/argocd-util_rbac.md b/docs/operator-manual/server-commands/argocd-util_rbac.md deleted file mode 100644 index 1dc03f6f7d1cf..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_rbac.md +++ /dev/null @@ -1,20 +0,0 @@ -## argocd-util rbac - -Validate and test RBAC configuration - -``` -argocd-util rbac [flags] -``` - -### Options - -``` - -h, --help help for rbac -``` - -### SEE ALSO - -* [argocd-util](argocd-util.md) - argocd-util tools used by Argo CD -* [argocd-util rbac can](argocd-util_rbac_can.md) - Check RBAC permissions for a role or subject -* [argocd-util rbac validate](argocd-util_rbac_validate.md) - Validate RBAC policy - diff --git a/docs/operator-manual/server-commands/argocd-util_rbac_can.md b/docs/operator-manual/server-commands/argocd-util_rbac_can.md deleted file mode 100644 index 6071cb5e7cb59..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_rbac_can.md +++ /dev/null @@ -1,70 +0,0 @@ -## argocd-util rbac can - -Check RBAC permissions for a role or subject - -### Synopsis - - -Check whether a given role or subject has appropriate RBAC permissions to do -something. - - -``` -argocd-util rbac can ROLE/SUBJECT ACTION RESOURCE [SUB-RESOURCE] [flags] -``` - -### Examples - -``` - -# Check whether role some:role has permissions to create an application in the -# 'default' project, using a local policy.csv file -argocd-util rbac can some:role create application 'default/app' --policy-file policy.csv - -# Policy file can also be K8s config map with data keys like argocd-rbac-cm, -# i.e. 'policy.csv' and (optionally) 'policy.default' -argocd-util rbac can some:role create application 'default/app' --policy-file argocd-rbac-cm.yaml - -# If --policy-file is not given, the ConfigMap 'argocd-rbac-cm' from K8s is -# used. You need to specify the argocd namespace, and make sure that your -# current Kubernetes context is pointing to the cluster Argo CD is running in -argocd-util rbac can some:role create application 'default/app' --namespace argocd - -# You can override a possibly configured default role -argocd-util rbac can someuser create application 'default/app' --default-role role:readonly - - -``` - -### Options - -``` - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - --default-role string name of the default role to use - -h, --help help for can - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --policy-file string path to the policy file to use - -q, --quiet quiet mode - do not print results to stdout - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --strict whether to perform strict check on action and resource names (default true) - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --use-builtin-policy whether to also use builtin-policy (default true) - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util rbac](argocd-util_rbac.md) - Validate and test RBAC configuration - diff --git a/docs/operator-manual/server-commands/argocd-util_rbac_validate.md b/docs/operator-manual/server-commands/argocd-util_rbac_validate.md deleted file mode 100644 index f121134e0f89f..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_rbac_validate.md +++ /dev/null @@ -1,26 +0,0 @@ -## argocd-util rbac validate - -Validate RBAC policy - -### Synopsis - - -Validates an RBAC policy for being syntactically correct. The policy must be -a local file, and in either CSV or K8s ConfigMap format. - - -``` -argocd-util rbac validate --policy-file=POLICYFILE [flags] -``` - -### Options - -``` - -h, --help help for validate - --policy-file string path to the policy file to use -``` - -### SEE ALSO - -* [argocd-util rbac](argocd-util_rbac.md) - Validate and test RBAC configuration - diff --git a/docs/operator-manual/server-commands/argocd-util_rundex.md b/docs/operator-manual/server-commands/argocd-util_rundex.md deleted file mode 100644 index 069cf329e23f8..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_rundex.md +++ /dev/null @@ -1,35 +0,0 @@ -## argocd-util rundex - -Runs dex generating a config using settings from the Argo CD configmap and secret - -``` -argocd-util rundex [flags] -``` - -### Options - -``` - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - -h, --help help for rundex - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util](argocd-util.md) - argocd-util tools used by Argo CD - diff --git a/docs/operator-manual/server-commands/argocd-util_settings.md b/docs/operator-manual/server-commands/argocd-util_settings.md deleted file mode 100644 index e476b4cd3f9ef..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_settings.md +++ /dev/null @@ -1,40 +0,0 @@ -## argocd-util settings - -Provides set of commands for settings validation and troubleshooting - -``` -argocd-util settings [flags] -``` - -### Options - -``` - --argocd-cm-path string Path to local argocd-cm.yaml file - --argocd-secret-path string Path to local argocd-secret.yaml file - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - -h, --help help for settings - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - --load-cluster-settings Indicates that config map and secret should be loaded from cluster unless local file path is provided - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util](argocd-util.md) - argocd-util tools used by Argo CD -* [argocd-util settings resource-overrides](argocd-util_settings_resource-overrides.md) - Troubleshoot resource overrides -* [argocd-util settings validate](argocd-util_settings_validate.md) - Validate settings - diff --git a/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides.md b/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides.md deleted file mode 100644 index 9baf7d5e88a26..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides.md +++ /dev/null @@ -1,47 +0,0 @@ -## argocd-util settings resource-overrides - -Troubleshoot resource overrides - -``` -argocd-util settings resource-overrides [flags] -``` - -### Options - -``` - -h, --help help for resource-overrides -``` - -### Options inherited from parent commands - -``` - --argocd-cm-path string Path to local argocd-cm.yaml file - --argocd-secret-path string Path to local argocd-secret.yaml file - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - --load-cluster-settings Indicates that config map and secret should be loaded from cluster unless local file path is provided - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util settings](argocd-util_settings.md) - Provides set of commands for settings validation and troubleshooting -* [argocd-util settings resource-overrides health](argocd-util_settings_resource-overrides_health.md) - Assess resource health -* [argocd-util settings resource-overrides ignore-differences](argocd-util_settings_resource-overrides_ignore-differences.md) - Renders fields excluded from diffing -* [argocd-util settings resource-overrides list-actions](argocd-util_settings_resource-overrides_list-actions.md) - List available resource actions -* [argocd-util settings resource-overrides run-action](argocd-util_settings_resource-overrides_run-action.md) - Executes resource action - diff --git a/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides_health.md b/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides_health.md deleted file mode 100644 index 815bf6d406cc3..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides_health.md +++ /dev/null @@ -1,54 +0,0 @@ -## argocd-util settings resource-overrides health - -Assess resource health - -### Synopsis - -Assess resource health using the lua script configured in the 'resource.customizations' field of 'argocd-cm' ConfigMap - -``` -argocd-util settings resource-overrides health RESOURCE_YAML_PATH [flags] -``` - -### Examples - -``` - -argocd-util settings resource-overrides health ./deploy.yaml --argocd-cm-path ./argocd-cm.yaml -``` - -### Options - -``` - -h, --help help for health -``` - -### Options inherited from parent commands - -``` - --argocd-cm-path string Path to local argocd-cm.yaml file - --argocd-secret-path string Path to local argocd-secret.yaml file - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - --load-cluster-settings Indicates that config map and secret should be loaded from cluster unless local file path is provided - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util settings resource-overrides](argocd-util_settings_resource-overrides.md) - Troubleshoot resource overrides - diff --git a/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides_ignore-differences.md b/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides_ignore-differences.md deleted file mode 100644 index c66be6208dca4..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides_ignore-differences.md +++ /dev/null @@ -1,54 +0,0 @@ -## argocd-util settings resource-overrides ignore-differences - -Renders fields excluded from diffing - -### Synopsis - -Renders ignored fields using the 'ignoreDifferences' setting specified in the 'resource.customizations' field of 'argocd-cm' ConfigMap - -``` -argocd-util settings resource-overrides ignore-differences RESOURCE_YAML_PATH [flags] -``` - -### Examples - -``` - -argocd-util settings resource-overrides ignore-differences ./deploy.yaml --argocd-cm-path ./argocd-cm.yaml -``` - -### Options - -``` - -h, --help help for ignore-differences -``` - -### Options inherited from parent commands - -``` - --argocd-cm-path string Path to local argocd-cm.yaml file - --argocd-secret-path string Path to local argocd-secret.yaml file - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - --load-cluster-settings Indicates that config map and secret should be loaded from cluster unless local file path is provided - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util settings resource-overrides](argocd-util_settings_resource-overrides.md) - Troubleshoot resource overrides - diff --git a/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides_list-actions.md b/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides_list-actions.md deleted file mode 100644 index 804a74b788368..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides_list-actions.md +++ /dev/null @@ -1,54 +0,0 @@ -## argocd-util settings resource-overrides list-actions - -List available resource actions - -### Synopsis - -List actions available for given resource action using the lua scripts configured in the 'resource.customizations' field of 'argocd-cm' ConfigMap and outputs updated fields - -``` -argocd-util settings resource-overrides list-actions RESOURCE_YAML_PATH [flags] -``` - -### Examples - -``` - -argocd-util settings resource-overrides action list /tmp/deploy.yaml --argocd-cm-path ./argocd-cm.yaml -``` - -### Options - -``` - -h, --help help for list-actions -``` - -### Options inherited from parent commands - -``` - --argocd-cm-path string Path to local argocd-cm.yaml file - --argocd-secret-path string Path to local argocd-secret.yaml file - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - --load-cluster-settings Indicates that config map and secret should be loaded from cluster unless local file path is provided - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util settings resource-overrides](argocd-util_settings_resource-overrides.md) - Troubleshoot resource overrides - diff --git a/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides_run-action.md b/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides_run-action.md deleted file mode 100644 index f4992e79dfd9e..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_settings_resource-overrides_run-action.md +++ /dev/null @@ -1,54 +0,0 @@ -## argocd-util settings resource-overrides run-action - -Executes resource action - -### Synopsis - -Executes resource action using the lua script configured in the 'resource.customizations' field of 'argocd-cm' ConfigMap and outputs updated fields - -``` -argocd-util settings resource-overrides run-action RESOURCE_YAML_PATH ACTION [flags] -``` - -### Examples - -``` - -argocd-util settings resource-overrides action run /tmp/deploy.yaml restart --argocd-cm-path ./argocd-cm.yaml -``` - -### Options - -``` - -h, --help help for run-action -``` - -### Options inherited from parent commands - -``` - --argocd-cm-path string Path to local argocd-cm.yaml file - --argocd-secret-path string Path to local argocd-secret.yaml file - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - --load-cluster-settings Indicates that config map and secret should be loaded from cluster unless local file path is provided - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util settings resource-overrides](argocd-util_settings_resource-overrides.md) - Troubleshoot resource overrides - diff --git a/docs/operator-manual/server-commands/argocd-util_settings_validate.md b/docs/operator-manual/server-commands/argocd-util_settings_validate.md deleted file mode 100644 index 855c3098b2887..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_settings_validate.md +++ /dev/null @@ -1,59 +0,0 @@ -## argocd-util settings validate - -Validate settings - -### Synopsis - -Validates settings specified in 'argocd-cm' ConfigMap and 'argocd-secret' Secret - -``` -argocd-util settings validate [flags] -``` - -### Examples - -``` - -#Validates all settings in the specified YAML file -argocd-util settings validate --argocd-cm-path ./argocd-cm.yaml - -#Validates accounts and plugins settings in Kubernetes cluster of current kubeconfig context -argocd-util settings validate --group accounts --group plugins --load-cluster-settings -``` - -### Options - -``` - --group stringArray Optional list of setting groups that have to be validated ( one of: accounts, general, kustomize, plugins, repositories, resource-overrides) - -h, --help help for validate -``` - -### Options inherited from parent commands - -``` - --argocd-cm-path string Path to local argocd-cm.yaml file - --argocd-secret-path string Path to local argocd-secret.yaml file - --as string Username to impersonate for the operation - --as-group stringArray Group to impersonate for the operation, this flag can be repeated to specify multiple groups. - --certificate-authority string Path to a cert file for the certificate authority - --client-certificate string Path to a client certificate file for TLS - --client-key string Path to a client key file for TLS - --cluster string The name of the kubeconfig cluster to use - --context string The name of the kubeconfig context to use - --insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure - --kubeconfig string Path to a kube config. Only required if out-of-cluster - --load-cluster-settings Indicates that config map and secret should be loaded from cluster unless local file path is provided - -n, --namespace string If present, the namespace scope for this CLI request - --password string Password for basic authentication to the API server - --request-timeout string The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0") - --server string The address and port of the Kubernetes API server - --tls-server-name string If provided, this name will be used to validate server certificate. If this is not provided, hostname used to contact the server is used. - --token string Bearer token for authentication to the API server - --user string The name of the kubeconfig user to use - --username string Username for basic authentication to the API server -``` - -### SEE ALSO - -* [argocd-util settings](argocd-util_settings.md) - Provides set of commands for settings validation and troubleshooting - diff --git a/docs/operator-manual/server-commands/argocd-util_version.md b/docs/operator-manual/server-commands/argocd-util_version.md deleted file mode 100644 index cf2325ad03c25..0000000000000 --- a/docs/operator-manual/server-commands/argocd-util_version.md +++ /dev/null @@ -1,19 +0,0 @@ -## argocd-util version - -Print version information - -``` -argocd-util version [flags] -``` - -### Options - -``` - -h, --help help for version - --short print just the version number -``` - -### SEE ALSO - -* [argocd-util](argocd-util.md) - argocd-util tools used by Argo CD - diff --git a/docs/operator-manual/troubleshooting.md b/docs/operator-manual/troubleshooting.md deleted file mode 100644 index e55c1ffab47eb..0000000000000 --- a/docs/operator-manual/troubleshooting.md +++ /dev/null @@ -1,95 +0,0 @@ -# Troubleshooting Tools - -The document describes how to use `argocd-tool` binary to simplify Argo CD settings customizations and troubleshot -connectivity issues. - -## Settings - -Argo CD provides multiple ways to customize system behavior and has a lot of settings. It might be dangerous to modify -settings on Argo CD used in production by multiple users. Before applying settings you can use `argocd-util` binary to -make sure that settings are valid and Argo CD is working as expected. The `argocd-util` binary is available in `argocd` -image and might be used using docker. -You can download the latest `argocd-util` binary from [the latest release page of this repository](https://github.com/argoproj/argo-cd/releases/latest), which will include the `argocd-util` CLI. -Example: - -```bash -docker run --rm -it -w /src -v $(pwd):/src argoproj/argocd: \ - argocd-util settings validate --argocd-cm-path ./argocd-cm.yaml -``` - -If you are using Linux you can extract `argocd-util` binary from docker image: - -```bash -docker run --rm -it -w /src -v $(pwd):/src argocd cp /usr/local/bin/argocd-util ./argocd-util -``` - -The `argocd-util settings validate` command performs basic settings validation and print short summary -of each settings group. - -**Diffing Customization** - -[Diffing customization](../user-guide/diffing.md) allows excluding some resource fields from diffing process. -The diffing customizations are configured in `resource.customizations` field of `argocd-cm` ConfigMap. - -The following `argocd-util` command prints information about fields excluded from diffing in the specified ConfigMap. - -```bash -docker run --rm -it -w /src -v $(pwd):/src argoproj/argocd: \ - argocd-util settings resource-overrides ignore-differences ./deploy.yaml --argocd-cm-path ./argocd-cm.yaml -``` - -* Health Assessment - -[Health assessment](../user-guide/diffing.md) allows excluding some resource fields from diffing process. -The diffing customizations are configured in `resource.customizations` field of `argocd-cm` ConfigMap. - -The following `argocd-util` command assess resource health using Lua script configured in the specified ConfigMap. - -```bash -docker run --rm -it -w /src -v $(pwd):/src argoproj/argocd: \ - argocd-util settings resource-overrides health ./deploy.yaml --argocd-cm-path ./argocd-cm.yaml -``` - -* Resource Actions - -Resource actions allows configuring named Lua script which performs resource modification. - -The following `argocd-util` command executes action using Lua script configured in the specified ConfigMap and prints -applied modifications. - -```bash -docker run --rm -it -w /src -v $(pwd):/src argoproj/argocd: \ - argocd-util settings resource-overrides run-action /tmp/deploy.yaml restart --argocd-cm-path /private/tmp/argocd-cm.yaml -``` - -The following `argocd-util` command lists actions available for a given resource using Lua script configured in the specified ConfigMap. - -```bash -docker run --rm -it -w /src -v $(pwd):/src argoproj/argocd: \ - argocd-util settings resource-overrides list-actions /tmp/deploy.yaml --argocd-cm-path /private/tmp/argocd-cm.yaml -``` - -## Cluster credentials - -The `argocd-util kubeconfig` is useful if you manually created Secret with cluster credentials and trying need to -troubleshoot connectivity issues. In this case, it is suggested to use the following steps: - -1 SSH into [argocd-application-controller] pod. - -``` -kubectl exec -n argocd -it \ - $(kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-application-controller -o jsonpath='{.items[0].metadata.name}') bash -``` - -2 Use `argocd-util kubeconfig` command to export kubeconfig file from the configured Secret: - -``` -argocd-util kubeconfig https:// /tmp/kubeconfig --namespace argocd -``` - -3 Use `kubectl` to get more details about connection issues, fix them and apply changes back to secret: - -``` -export KUBECONFIG=/tmp/kubeconfig -kubectl get pods -v 9 -``` \ No newline at end of file diff --git a/docs/operator-manual/upgrading/1.0-1.1.md b/docs/operator-manual/upgrading/1.0-1.1.md deleted file mode 100644 index fe2b0d04a63a9..0000000000000 --- a/docs/operator-manual/upgrading/1.0-1.1.md +++ /dev/null @@ -1,6 +0,0 @@ -# v1.0 to 1.1 - -The v1.1 release does not introduce backward incompatible changes. Please note that Kustomize v1.0 is deprecated and -support will be removed in the Argo CD v1.2 release. - -From here on you can follow the [regular upgrade process](./overview.md). \ No newline at end of file diff --git a/docs/operator-manual/upgrading/1.1-1.2.md b/docs/operator-manual/upgrading/1.1-1.2.md deleted file mode 100644 index 5f50675e97ace..0000000000000 --- a/docs/operator-manual/upgrading/1.1-1.2.md +++ /dev/null @@ -1,13 +0,0 @@ -# v1.1 to 1.2 - -## Kustomize -- Kustomize v1 support is removed. All kustomize charts are built using the same Kustomize version -- Kustomize v2.0.3 upgraded to v3.1.0 . We've noticed one backward incompatible change: https://github.com/kubernetes-sigs/kustomize/issues/42 . Starting v2.1.0 namespace prefix feature works with CRD ( which might cause renaming of generated resource definitions) - - -## ConfigMap labels - -Argo CD config maps must be annotated with `app.kubernetes.io/part-of: argocd` label. Make sure to apply updated -`install.yaml` manifest in addition to changing image version. - -From here on you can follow the [regular upgrade process](./overview.md). \ No newline at end of file diff --git a/docs/operator-manual/upgrading/1.2-1.3.md b/docs/operator-manual/upgrading/1.2-1.3.md deleted file mode 100644 index af8d99a8e34fc..0000000000000 --- a/docs/operator-manual/upgrading/1.2-1.3.md +++ /dev/null @@ -1,8 +0,0 @@ -# v1.2 to 1.3 - -# API Changes - -The 1.3 release introduces backward incompatible changes in some public Argo CD APIs. Please make sure to upgrade -Argo CD CLI to v1.3. - -From here on you can follow the [regular upgrade process](./overview.md). \ No newline at end of file diff --git a/docs/operator-manual/upgrading/1.3-1.4.md b/docs/operator-manual/upgrading/1.3-1.4.md deleted file mode 100644 index 17caec22483b1..0000000000000 --- a/docs/operator-manual/upgrading/1.3-1.4.md +++ /dev/null @@ -1,15 +0,0 @@ -# v1.3 to 1.4 - -## Sync Hooks - -The Argo CD deletes all **in-flight** hooks if you terminate running sync operation. The hook state assessment change implemented in this release the Argo CD enables detection of -an in-flight state for all Kubernetes resources including `Deployment`, `PVC`, `StatefulSet`, `ReplicaSet` etc. So if you terminate the sync operation that has, for example, -`StatefulSet` hook that is `Progressing` it will be deleted. The long-running jobs are not supposed to be used as a sync hook and you should consider using -[Sync Waves](https://argoproj.github.io/argo-cd/user-guide/sync-waves/) instead. - -From here on you can follow the [regular upgrade process](./overview.md). - -# API Changes - -The 1.3 release introduces backward incompatible changes in some public Argo CD APIs. Please make sure to upgrade -Argo CD CLI to v1.3. diff --git a/docs/operator-manual/upgrading/1.4-1.5.md b/docs/operator-manual/upgrading/1.4-1.5.md deleted file mode 100644 index ce625f9ccd4e8..0000000000000 --- a/docs/operator-manual/upgrading/1.4-1.5.md +++ /dev/null @@ -1,27 +0,0 @@ -# v1.4 to 1.5 - -## Updated prometheus metrics - -The `argocd_app_sync_status`, `argocd_app_health_status` and `argocd_app_created_time` prometheus metrics are deprecated -in favor of additional labels to `argocd_app_info` metric. The deprecated labels are still available can be re-enabled -using `ARGOCD_LEGACY_CONTROLLER_METRICS=true` environment variable. The legacy example Grafana dashboard is available at -[examples/dashboard-legacy.json](https://github.com/argoproj/argo-cd/blob/master/examples/dashboard-legacy.json). - -## Redis HA Proxy - -!!! warning - Manual intervention might be required to complete the upgrade. - -High-availability (HA) Argo CD manifests now bundles Redis in HA Proxy in front of it. Following issue have been -observed during the upgrade: - -* you might see intermittent login failures; -* after upgrade is completed ha proxy might be unable to access redis server -(see [argo-cd#3547](https://github.com/argoproj/argo-cd/issues/3547), [DandyDeveloper/charts#26](https://github.com/DandyDeveloper/charts/issues/26)). -As workaround "restart" `argocd-redis-ha-haproxy` Deployment and `argocd-redis-ha-server` StatefulSet. - -## Upgraded Kustomize Version - -Note that bundled Kustomize has been upgraded to v3.6.1. - -From here on you can follow the [regular upgrade process](./overview.md). \ No newline at end of file diff --git a/docs/operator-manual/upgrading/1.5-1.6.md b/docs/operator-manual/upgrading/1.5-1.6.md deleted file mode 100644 index e5e74f7e4d7b2..0000000000000 --- a/docs/operator-manual/upgrading/1.5-1.6.md +++ /dev/null @@ -1,8 +0,0 @@ -# v1.5 to 1.6 - -## Removed Deprecated Field of /managed-resources API - -The deprecated `diff` field had been removed from `/api/v1/applications//managed-resources` API. The field is not used -by Argo CD CLI or UI, so it might affect you only if you programmatically use the `managed-resources` API. - -From here on you can follow the [regular upgrade process](./overview.md). \ No newline at end of file diff --git a/docs/operator-manual/upgrading/1.6-1.7.md b/docs/operator-manual/upgrading/1.6-1.7.md deleted file mode 100644 index 4cc6bcaac5869..0000000000000 --- a/docs/operator-manual/upgrading/1.6-1.7.md +++ /dev/null @@ -1,45 +0,0 @@ -# v1.6 to 1.7 - -## AppProject tokens moved to status field - -In order to address [argoproj/argo-cd#2718](https://github.com/argoproj/argo-cd/issues/2718) the JWT tokens stored in -AppProject CRD have been moved from `spec` to `status` field. The migration is performed automatically during upgrade -and might cause few seconds delay. No additional side effects besides the delay are expected. It is acceptable to -rollback to previous version - no data loss is expected. - -## Resources like ConfigMap might become out-of-sync due to YAML library upgrade - -As part of v1.7 release, the Kubernetes client library have been upgrade to v1.18.8 as well as we've started using -https://github.com/kubernetes-sigs/yaml for YAML handling to be consistent with `kubectl` behavior. -This introduced a change of multiline string handling in resource manifests. As a result, YAML manifests with multiline -strings might become out-of-sync after upgrading and you might have to trigger the synchronization once to resolve it. - -Affected resource example: - -```yaml ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: my-config-map -data: - value: |+ # block chomping indicator is dropped by Argo CD v1.7 ( same as kubectl apply) - hello -``` - -## New RBAC rules for GnuPG related features - -The [GnuPG feature](../../../user-guide/gpg-verification) has introduced a new -RBAC resource in Argo CD, `gpgkeys`. - -Please adapt your RBAC rules with the appropriate permissions. The least set of -permissions every role should have is: - -``` -p, , gpgkeys, get, *, allow -``` - -More information can be found in the -[documentation](../../../user-guide/gpg-verification#rbac-rules-for-managing-gnupg-keys) - -From here on you can follow the [regular upgrade process](./overview.md). diff --git a/docs/operator-manual/upgrading/1.7-1.8.md b/docs/operator-manual/upgrading/1.7-1.8.md deleted file mode 100644 index 95cce7803bcdd..0000000000000 --- a/docs/operator-manual/upgrading/1.7-1.8.md +++ /dev/null @@ -1,47 +0,0 @@ -# v1.7 to 1.8 - -## The argocd-application-controller converted to StatefulSet - -The `argocd-application-controller` has been converted to StatefulSet. That means you need to manually delete `argocd-application-controller` Deployment after upgrading. -Similarly if you decided to rollback to v1.7 don't forget to delete `argocd-application-controller` StatefulSet. - - -## Health assessement of argoproj.io/Application CRD has been removed - -The health assessement of `argoproj.io/Application` CRD has been removed (see [#3781](https://github.com/argoproj/argo-cd/issues/3781) for more information). -You might need to restore it if you are using app-of-apps pattern and orchestrating syncronization using sync waves. Add the following resource customization in -`argocd-cm` ConfigMap: - -```yaml ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - resource.customizations: | - argoproj.io/Application: - health.lua: | - hs = {} - hs.status = "Healthy" - hs.message = "" - if obj.status ~= nil then - if obj.status.health ~= nil then - hs.status = obj.status.health.status - hs.message = obj.status.health.message - end - end - return hs -``` - -## gRPC metrics are disabled by default - -The gRPC metrics are not exposed by default by `argocd-server` and `argocd-repo-server` anymore. These metrics appear -to be too expensive so we've decided to disable them by default. Metrics can be enabled using -`ARGOCD_ENABLE_GRPC_TIME_HISTOGRAM=true` environment variable. - -From here on you can follow the [regular upgrade process](./overview.md). \ No newline at end of file diff --git a/docs/operator-manual/upgrading/1.8-1.9.md b/docs/operator-manual/upgrading/1.8-1.9.md deleted file mode 100644 index aa87048fcba71..0000000000000 --- a/docs/operator-manual/upgrading/1.8-1.9.md +++ /dev/null @@ -1,74 +0,0 @@ -# v1.8 to 1.9 - -## Environment variables expansion - -Argo CD supports using [environment variables](../../../user-guide/build-environment/) in -config management tools parameters. The expansion logic has been improved and now expands missing environment variables -into an empty string. - -## Docker image migrated to use Ubuntu as base - -The official Docker image has been migrated to use `ubuntu:20.10` instead of -`debian:10-slim` as base image. While this should not affect user experience, -you might be affected if you use custom-built images and/or include third party -tools in custom-built images. - -Please make sure that your custom tools are still working with the update to -v1.9 before deploying it onto production. - -## Container registry switched to quay.io and sundown of Docker Hub repository - -Due to Docker Hub's new rate-limiting and retention policies, the Argo project -has decided to switch to the -[quay.io](https://quay.io) -registry as a new home for all images published by its sub-projects. - -As of Argo CD version 1.9, the installation manifests are configured to pull the -container images from `quay.io` and we announce the **sundown** of the existing -Docker Hub repositories. For the 1.9 release this means, we will still push to -both registries, but we will stop pushing images to Docker Hub once Argo CD 1.10 -has been released. - -Please make sure that your clusters can pull from the `quay.io` registry. -If you aren't able to do so timely, you can change the container image slugs in -the installation manually to Docker Hub as a workaround to install Argo CD 1.9. -This workaround will not be possible anymore with 1.10, however. - -## Dex tool migrated from argocd-util to argocd-dex - -The dex commands `rundex` and `gendexcfg` have been migrated from `argocd-util` to `argocd-dex`. -It means that you need to update `argocd-dex-server` deployment's commands to install `argocd-dex` -binary instead of `argocd-util` in init container and run dex command from `argocd-dex` instead of `argocd-util`: - -```bash -initContainers: -- command: - - cp - - -n - - /usr/local/bin/argocd - - /shared/argocd-dex -``` - -```bash -containers: -- command: - - /shared/argocd-dex - - rundex -``` -Note that starting from v1.9 argocd binary behaviour has changed. -It will have all argocd binaries such `argocd-dex`, `argocd-server`, `argocd-repo-server`, -`argocd-application-controller`, `argocd-util`, `argocd` baked inside. -The binary will change behaviour based on its name. - -## Updated retry params type from String to Duration for app sync - -App Sync command exposes certain retry options, which allows the users to parameterize the sync retries. -Two of those params, `retry-backoff-duration` and `retry-backoff-max-duration` were declared as type `string` rather than `duration`. -This allowed users to provide the values to these flags without time unit (seconds, minutes, hours ...) or any random string as well, -but since we have migrated from `string` to `duration`, it is now mandatory for users to provide a unit (valid duration). - -```bash -EXAMPLE: -argocd app sync --retry-backoff-duration=10 -> invalid -argocd app sync --retry-backoff-duration=10s -> valid -``` diff --git a/docs/operator-manual/upgrading/overview.md b/docs/operator-manual/upgrading/overview.md deleted file mode 100644 index 2e4fd464b36c0..0000000000000 --- a/docs/operator-manual/upgrading/overview.md +++ /dev/null @@ -1,47 +0,0 @@ -# Overview - -!!!note - - This section contains information on upgrading Argo CD. Before upgrading please make sure to read details about - the breaking changes between Argo CD versions. - -Argo CD uses the semver versioning and ensures that following rules: - -* The patch release does not introduce any breaking changes. So if you are upgrading from v1.5.1 to v1.5.3 - there should be no special instructions to follow. -* The minor release might introduce minor changes with a workaround. If you are upgrading from v1.3.0 to v1.5.2 -please make sure to check upgrading details in both [v1.3 to v1.4](./1.3-1.4.md) and [v1.4 to v1.5](./1.4-1.5.md) - upgrading instructions. - * The major release introduces backward incompatible behavior changes. It is recommended to take a backup of - Argo CD settings using disaster recovery [guide](../disaster_recovery.md). - -After reading the relevant notes about possible breaking changes introduced in Argo CD version use the following -command to upgrade Argo CD. Make sure to replace `` with the required version number: - -**Non-HA**: - -```bash -kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd//manifests/install.yaml -``` - -**HA**: -```bash -kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd//manifests/ha/install.yaml -``` - -!!! warning - - Even though some releases require only image change it is still recommended to apply whole manifests set. - Manifest changes might include important parameter modifications and applying the whole set will protect you from - introducing misconfiguration. - -
- -* [v1.7 to v1.8](./1.7-1.8.md) -* [v1.6 to v1.7](./1.6-1.7.md) -* [v1.5 to v1.6](./1.5-1.6.md) -* [v1.4 to v1.5](./1.4-1.5.md) -* [v1.3 to v1.4](./1.3-1.4.md) -* [v1.2 to v1.3](./1.2-1.3.md) -* [v1.1 to v1.2](./1.1-1.2.md) -* [v1.0 to v1.1](./1.0-1.1.md) diff --git a/docs/operator-manual/user-management/auth0.md b/docs/operator-manual/user-management/auth0.md deleted file mode 100644 index b9d397b1214cb..0000000000000 --- a/docs/operator-manual/user-management/auth0.md +++ /dev/null @@ -1,73 +0,0 @@ -# Auth0 - -## User-definitions - -User-definitions in Auth0 is out of scope for this guide. Add them directly in Auth0 database, use an enterprise registry, or "social login". -*Note*: all users have access to all Auth0 defined apps unless you restrict access via configuration - keep this in mind if argo is exposed on the internet or else anyone can login. - -## Registering the app with Auth0 - -Follow the [register app](https://auth0.com/docs/dashboard/guides/applications/register-app-spa) instructions to create the argocd app in Auth0. In the app definition: - -* Take note of the _clientId_ and _clientSecret_ values. -* Register login url as https://your.argoingress.address/login -* Set allowed callback url to https://your.argoingress.address/auth/callback -* Under connections, select the user-registries you want to use with argo - -Any other settings are non-essential for the authentication to work. - - -## Adding authorization rules to Auth0 - -Follow Auth0 [authorization guide](https://auth0.com/docs/authorization) to setup authorization. -The important part to note here is that group-membership is a non-standard claim, and hence is required to be put under a FQDN claim name, for instance `http://your.domain/groups`. - -## Configuring argo - - -### Configure OIDC for ArgoCD - -`kubectl edit configmap argocd-cm` - -``` -... -data: - application.instanceLabelKey: argocd.argoproj.io/instance - url: https://your.argoingress.address - oidc.config: | - name: Auth0 - issuer: https://..auth0.com/ - clientID: - clientSecret: - requestedScopes: - - openid - - profile - - email - # not strictly necessary - but good practice: - - 'http://your.domain/groups' -... -``` - - -### Configure RBAC for ArgoCD - -`kubectl edit configmap argocd-rbac-cm` (or use helm values). -``` -... -data: - policy.csv: | - # let members with group someProjectGroup handle apps in someProject - # this can also be defined in the UI in the group-definition to avoid doing it there in the configmap - p, someProjectGroup, applications, *, someProject/*, allow - # let the group membership argocd-admins from OIDC become role:admin - needs to go into the configmap - g, argocd-global-admins, role:admin - policy.default: role:readonly - # essential to get argo to use groups for RBAC: - scopes: '[http://your.domain/groups, email]' -... -``` - -
- -!!! note "Storing Client Secrets" - Details on storing your clientSecret securely and correctly can be found on the [User Management Overview page](../../user-management/#sensitive-data-and-sso-client-secrets). \ No newline at end of file diff --git a/docs/operator-manual/user-management/google.md b/docs/operator-manual/user-management/google.md deleted file mode 100644 index c432771584881..0000000000000 --- a/docs/operator-manual/user-management/google.md +++ /dev/null @@ -1,77 +0,0 @@ -# Google - -* [G Suite SAML App Auth using Dex](#g-suite-saml-app-auth-using-dex) - -Once you've set up one of the above integrations, be sure to edit `argo-rbac-cm` to configure permissions (as in the example below). See [RBAC Configurations](../rbac.md) for more detailed scenarios. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-rbac-cm - namespace: argocd -data: - policy.default: role:readonly -``` - -## G Suite SAML App Auth using Dex - -### Configure a new SAML App - -1. In the [Google admin console](https://admin.google.com), open the left-side menu and select `Apps` > `SAML Apps` - - ![Google Admin Apps Menu](../../assets/google-admin-saml-apps-menu.png "Google Admin menu with the Apps / SAML Apps path selected") - -2. Under `Add App` select `Add custom SAML app` - - ![Google Admin Add Custom SAML App](../../assets/google-admin-saml-add-app-menu.png "Add apps menu with add custom SAML app highlighted") - -3. Enter a `Name` for the application (eg. `Argo CD`), then choose `Continue` - - ![Google Admin Apps Menu](../../assets/google-admin-saml-app-details.png "Add apps menu with add custom SAML app highlighted") - -4. Download the metadata or copy the `SSO URL`, `Certificate`, and optionally `Entity ID` from the identity provider details for use in the next section. Choose `continue`. - - Base64 encode the contents of the certificate file, for example: - - `$ cat ArgoCD.cer | base64` - - *Keep a copy of the encoded output to be used in the next section.* - - ![Google Admin IdP Metadata](../../assets/google-admin-idp-metadata.png "A screenshot of the Google IdP metadata") - -5. For both the `ACS URL` and `Entity ID`, use your Argo Dex Callback URL, for example: `https://argocd.example.com/api/dex/callback` - - ![Google Admin Service Provider Details](../../assets/google-admin-service-provider-details.png "A screenshot of the Google Service Provider Details") - -6. Add SAML Attribute Mapping, Map `Primary email` to `name` and `Primary Email` to `email`. and click `ADD MAPPING` button. - - ![Google Admin SAML Attribute Mapping Details](../../assets/google-admin-saml-attribute-mapping-details.png "A screenshot of the Google Admin SAML Attribut Mapping Details") - -7. Finish creating the application. - -### Configure Argo to use the new Google SAML App - -Edit `argo-cm` and add the following `dex.config` to the data section, replacing the `caData`, `argocd.example.com`, `sso-url`, and optionally `google-entity-id` with your values from the Google SAML App: - -```yaml -data: - url: https://argocd.example.com - dex.config: | - connectors: - - type: saml - id: saml - name: saml - config: - ssoURL: https://sso-url (eg. https://accounts.google.com/o/saml2/idp?idpid=Abcde0) - entityIssuer: https://argocd.example.com/api/dex/callback - caData: | - BASE64-ENCODED-CERTIFICATE-DATA - redirectURI: https://argocd.example.com/api/dex/callback - usernameAttr: name - emailAttr: email - # optional - ssoIssuer: https://google-entity-id (e.g. https://accounts.google.com/o/saml2?idpid=Abcde0) -``` - -### References - -- [Dex SAML connector docs](https://dexidp.io/docs/connectors/saml/) -- [Google's SAML error messages](https://support.google.com/a/answer/6301076?hl=en) diff --git a/docs/operator-manual/user-management/index.md b/docs/operator-manual/user-management/index.md deleted file mode 100644 index 8d976f96c18bf..0000000000000 --- a/docs/operator-manual/user-management/index.md +++ /dev/null @@ -1,338 +0,0 @@ -# Overview - -Once installed Argo CD has one built-in `admin` user that has full access to the system. It is recommended to use `admin` user only -for initial configuration and then switch to local users or configure SSO integration. - -## Local users/accounts (v1.5) - -The local users/accounts feature serves two main use-cases: - -* Auth tokens for Argo CD management automation. It is possible to configure an API account with limited permissions and generate an authentication token. -Such token can be used to automatically create applications, projects etc. -* Additional users for a very small team where use of SSO integration might be considered an overkill. The local users don't provide advanced features such as groups, -login history etc. So if you need such features it is strongly recommended to use SSO. - -!!! note - When you create local users, each of those users will need additional [RBAC rules](../rbac.md) set up, otherwise they will fall back to the default policy specified by `policy.default` field of the `argocd-rbac-cm` ConfigMap. - -The maximum length of a local account's username is 32. - -### Create new user - -New users should be defined in `argocd-cm` ConfigMap: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - # add an additional local user with apiKey and login capabilities - # apiKey - allows generating API keys - # login - allows to login using UI - accounts.alice: apiKey, login - # disables user. User is enabled by default - accounts.alice.enabled: "false" -``` - -Each user might have two capabilities: - -* apiKey - allows generating authentication tokens for API access -* login - allows to login using UI - -### Disable admin user - -As soon as additional users are created it is recommended to disable `admin` user: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - admin.enabled: "false" -``` - -### Manage users - -The Argo CD CLI provides set of commands to set user password and generate tokens. - -* Get full users list -```bash -argocd account list -``` - -* Get specific user details -```bash -argocd account get -``` - -* Set user password -```bash -argocd account update-password \ - --account \ - --current-password \ - --new-password -``` - -* Generate auth token -```bash -# if flag --account is omitted then Argo CD generates token for current user -argocd account generate-token --account -``` - -### Failed logins rate limiting - -Argo CD rejects login attempts after too many failed in order to prevent password brute-forcing. -The following environments variables are available to control throttling settings: - -* `ARGOCD_SESSION_MAX_FAIL_COUNT`: Maximum number of failed logins before Argo CD starts -rejecting login attempts. Default: 5. - -* `ARGOCD_SESSION_FAILURE_WINDOW_SECONDS`: Number of seconds for the failure window. -Default: 300 (5 minutes). If this is set to 0, the failure window is -disabled and the login attempts gets rejected after 10 consecutive logon failures, -regardless of the time frame they happened. - -* `ARGOCD_SESSION_MAX_CACHE_SIZE`: Maximum number of entries allowed in the -cache. Default: 1000 - -* `ARGOCD_MAX_CONCURRENT_LOGIN_REQUESTS_COUNT`: Limits max number of concurrent login requests. -If set to 0 then limit is disabled. Default: 50. - -## SSO - -There are two ways that SSO can be configured: - -* [Bundled Dex OIDC provider](#dex) - use this option if your current provider does not support OIDC (e.g. SAML, - LDAP) or if you wish to leverage any of Dex's connector features (e.g. the ability to map GitHub - organizations and teams to OIDC groups claims). - -* [Existing OIDC provider](#existing-oidc-provider) - use this if you already have an OIDC provider which you are using (e.g. - [Okta](okta.md), [OneLogin](onelogin.md), [Auth0](auth0.md), [Microsoft](microsoft.md), [Keycloak](keycloak.md), - [Google (G Suite)](google.md)), where you manage your users, groups, and memberships. - -## Dex - -Argo CD embeds and bundles [Dex](https://github.com/dexidp/dex) as part of its installation, for the -purpose of delegating authentication to an external identity provider. Multiple types of identity -providers are supported (OIDC, SAML, LDAP, GitHub, etc...). SSO configuration of Argo CD requires -editing the `argocd-cm` ConfigMap with -[Dex connector](https://dexidp.io/docs/connectors/) settings. - -This document describes how to configure Argo CD SSO using GitHub (OAuth2) as an example, but the -steps should be similar for other identity providers. - -### 1. Register the application in the identity provider - -In GitHub, register a new application. The callback address should be the `/api/dex/callback` -endpoint of your Argo CD URL (e.g. `https://argocd.example.com/api/dex/callback`). - -![Register OAuth App](../../assets/register-app.png "Register OAuth App") - -After registering the app, you will receive an OAuth2 client ID and secret. These values will be -inputted into the Argo CD configmap. - -![OAuth2 Client Config](../../assets/oauth2-config.png "OAuth2 Client Config") - -### 2. Configure Argo CD for SSO - -Edit the argocd-cm configmap: - -```bash -kubectl edit configmap argocd-cm -n argocd -``` - -* In the `url` key, input the base URL of Argo CD. In this example, it is `https://argocd.example.com` -* In the `dex.config` key, add the `github` connector to the `connectors` sub field. See Dex's - [GitHub connector](https://github.com/dexidp/website/blob/main/content/docs/connectors/github.md) - documentation for explanation of the fields. A minimal config should populate the clientID, - clientSecret generated in Step 1. -* You will very likely want to restrict logins to one or more GitHub organization. In the - `connectors.config.orgs` list, add one or more GitHub organizations. Any member of the org will - then be able to login to Argo CD to perform management tasks. - -```yaml -data: - url: https://argocd.example.com - - dex.config: | - connectors: - # GitHub example - - type: github - id: github - name: GitHub - config: - clientID: aabbccddeeff00112233 - clientSecret: $dex.github.clientSecret - orgs: - - name: your-github-org - - # GitHub enterprise example - - type: github - id: acme-github - name: Acme GitHub - config: - hostName: github.acme.com - clientID: abcdefghijklmnopqrst - clientSecret: $dex.acme.clientSecret - orgs: - - name: your-github-org -``` - -After saving, the changes should take affect automatically. - -NOTES: - -* There is no need to set `redirectURI` in the `connectors.config` as shown in the dex documentation. - Argo CD will automatically use the correct `redirectURI` for any OAuth2 connectors, to match the - correct external callback URL (e.g. `https://argocd.example.com/api/dex/callback`) - -## Existing OIDC Provider - -To configure Argo CD to delegate authenticate to your existing OIDC provider, add the OAuth2 -configuration to the `argocd-cm` ConfigMap under the `oidc.config` key: - -```yaml -data: - url: https://argocd.example.com - - oidc.config: | - name: Okta - issuer: https://dev-123456.oktapreview.com - clientID: aaaabbbbccccddddeee - clientSecret: $oidc.okta.clientSecret - - # Optional set of OIDC scopes to request. If omitted, defaults to: ["openid", "profile", "email", "groups"] - requestedScopes: ["openid", "profile", "email", "groups"] - - # Optional set of OIDC claims to request on the ID token. - requestedIDTokenClaims: {"groups": {"essential": true}} - - # Some OIDC providers require a separate clientID for different callback URLs. - # For example, if configuring Argo CD with self-hosted Dex, you will need a separate client ID - # for the 'localhost' (CLI) client to Dex. This field is optional. If omitted, the CLI will - # use the same clientID as the Argo CD server - cliClientID: vvvvwwwwxxxxyyyyzzzz -``` - -!!! note - The callback address should be the /auth/callback endpoint of your Argo CD URL - (e.g. https://argocd.example.com/auth/callback). - -### Requesting additional ID token claims - -Not all OIDC providers support a special `groups` scope. E.g. Okta, OneLogin and Microsoft do support a special -`groups` scope and will return group membership with the default `requestedScopes`. - -Other OIDC providers might be able to return a claim with group membership if explicitly requested to do so. -Individual claims can be requested with `requestedIDTokenClaims`, see -[OpenID Connect Claims Parameter](https://connect2id.com/products/server/docs/guides/requesting-openid-claims#claims-parameter) -for details. The Argo CD configuration for claims is as follows: - -```yaml - oidc.config: | - requestedIDTokenClaims: - email: - essential: true - groups: - essential: true - value: org:myorg - acr: - essential: true - values: - - urn:mace:incommon:iap:silver - - urn:mace:incommon:iap:bronze -``` - -For a simple case this can be: - -```yaml - oidc.config: | - requestedIDTokenClaims: {"groups": {"essential": true}} -``` -### Configuring a custom logout URL for your OIDC provider - -Optionally, if your OIDC provider exposes a logout API and you wish to configure a custom logout URL for the purposes of invalidating -any active session post logout, you can do so by specifying it as follows: - -```yaml - oidc.config: | - name: example-OIDC-provider - issuer: https://example-OIDC-provider.com - clientID: xxxxxxxxx - clientSecret: xxxxxxxxx - requestedScopes: ["openid", "profile", "email", "groups"] - requestedIDTokenClaims: {"groups": {"essential": true}} - logoutURL: https://example-OIDC-provider.com/logout?id_token_hint={{token}} -``` -By default, this would take the user to their OIDC provider's login page after logout. If you also wish to redirect the user back to Argo CD after logout, you can specify the logout URL as follows: - -```yaml -... - logoutURL: https://example-OIDC-provider.com/logout?id_token_hint={{token}}&post_logout_redirect_uri={{logoutRedirectURL}} -``` - -You are not required to specify a logoutRedirectURL as this is automatically generated by ArgoCD as your base ArgoCD url + Rootpath - -!!! note - The post logout redirect URI may need to be whitelisted against your OIDC provider's client settings for ArgoCD. - - - -## SSO Further Reading - -### Sensitive Data and SSO Client Secrets - -You can use the `argocd-secret` to store any sensitive data. ArgoCD knows to check the keys under `data` in the `argocd-secret` secret for a corresponding key whenever a value in a configmap starts with `$`. This can be used to store things such as your `clientSecret`. - -Data should be base64 encoded before it is added to `argocd-secret`. You can do so by running `printf RAW_SECRET_STRING | base64`. - -#### Example - -`argocd-secret`: -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: argocd-secret - namespace: argocd - labels: - app.kubernetes.io/name: argocd-secret - app.kubernetes.io/part-of: argocd -type: Opaque -data: - ... - # Store client secret like below. - # Ensure the secret is base64 encoded - oidc.auth0.clientSecret: - ... -``` - -`argocd-cm`: -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - ... - oidc.config: | - name: Auth0 - clientID: aabbccddeeff00112233 - # Reference key in argocd-secret - clientSecret: $oidc.auth0.clientSecret - ... -``` diff --git a/docs/operator-manual/user-management/keycloak.md b/docs/operator-manual/user-management/keycloak.md deleted file mode 100644 index 84c6bc1d0ea85..0000000000000 --- a/docs/operator-manual/user-management/keycloak.md +++ /dev/null @@ -1,119 +0,0 @@ -# Keycloak - -# Integrating Keycloak and ArgoCD - -These instructions will take you through the entire process of getting your ArgoCD application authenticating with Keycloak. -You will create a client within Keycloak and configure ArgoCD to use Keycloak for authentication, using groups set in Keycloak -to determine privileges in Argo. - -## Creating a new client in Keycloak - -First we need to setup a new client. Start by logging into your keycloak server, select the realm you want to use (`master` by default) -and then go to __Clients__ and click the __create__ button top right. - -![Keycloak add client](../../assets/keycloak-add-client.png "Keycloak add client") - -Configure the client by setting the __Access Type__ to _confidential_ and set the Valid Redirect URIs to the callback url for your ArgoCD -hostname. It should be https://{hostname}/auth/callback (you can also leave the default less secure https://{hostname}/* ). You can also set the -__Base URL__ to _/applications_. - -![Keycloak configure client](../../assets/keycloak-configure-client.png "Keycloak configure client") - -Make sure to click __Save__. You should now have a new tab called __Credentials__. You can copy the Secret that we'll use in our ArgoCD -configuration. - -![Keycloak client secret](../../assets/keycloak-client-secret.png "Keycloak client secret") - -## Configuring the groups claim - -In order for ArgoCD to provide the groups the user is in we need to configure a groups claim that can be included in the authentication token. -To do this we'll start by creating a new __Client Scope__ called _groups_. - -![Keycloak add scope](../../assets/keycloak-add-scope.png "Keycloak add scope") - -Once you've created the client scope you can now add a Token Mapper which will add the groups claim to the token when the client requests -the groups scope. Make sure to set the __Name__ as well as the __Token Claim Name__ to _groups_. - -![Keycloak groups mapper](../../assets/keycloak-groups-mapper.png "Keycloak groups mapper") - -We can now configure the client to provide the _groups_ scope. You can now assign the _groups_ scope either to the __Assigned Default Client Scopes__ -or to the __Assigned Optional Client Scopes__. If you put it in the Optional category you will need to make sure that ArgoCD requests the scope in -it's OIDC configuration. - -![Keycloak client scope](../../assets/keycloak-client-scope.png "Keycloak client scope") - -Since we will always want group information, I recommend using the Default category. Make sure you click __Add selected__ -and that the _groups_ claim is in the correct list on the __right__. - -![Keycloak client scope selected](../../assets/keycloak-client-scope-selected.png "Keycloak client scope selected") - -Create a group called _ArgoCDAdmins_ and have your current user join the group. - -![Keycloak user group](../../assets/keycloak-user-group.png "Keycloak user group") - -## Configuring ArgoCD OIDC - -Let's start by storing the client secret you generated earlier in the argocd secret _argocd-secret_. - -1. First you'll need to encode the client secret in base64: `$ echo -n '83083958-8ec6-47b0-a411-a8c55381fbd2' | base64` -2. Then you can edit the secret and add the base64 value to a new key called _oidc.keycloak.clientSecret_ using `$ kubectl edit secret argocd-secret`. - Your Secret should look something like this: - ```yaml - apiVersion: v1 - kind: Secret - metadata: - name: argocd-secret - data: - ... - oidc.keycloak.clientSecret: ODMwODM5NTgtOGVjNi00N2IwLWE0MTEtYThjNTUzODFmYmQy - ... - ``` - -Now we can configure the config map and add the oidc configuration to enable our keycloak authentication. -You can use `$ kubectl edit configmap argocd-cm`. - -Your ConfigMap should look like this: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm -data: - url: https://argocd.example.com - oidc.config: | - name: Keycloak - issuer: https://keycloak.example.com/auth/realms/master - clientID: argocd - clientSecret: $oidc.keycloak.clientSecret - requestedScopes: ["openid", "profile", "email", "groups"] -``` - -Make sure that: -- __issuer__ ends with the correct realm (in this example _master_) -- __clientID__ is set to the Client ID you configured in Keycloak -- __clientSecret__ points to the right key you created in the _argocd-secret_ Secret -- __requestedScopes__ contains the _groups_ claim if you didn't add it to the Default scopes - -## Configuring ArgoCD Policy - -Now that we have an authentication that provides groups we want to apply a policy to these groups. -We can modify the _argocd-rbac-cm_ ConfigMap using `$ kubectl edit configmap argocd-rbac-cm`. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-rbac-cm -data: - policy.csv: | - g, ArgoCDAdmins, role:admin -``` - -In this example we give the role _role:admin_ to all users in the group _ArgoCDAdmins_. - -## Login - -You can now login using our new Keycloak OIDC authentication: - -![Keycloak ArgoCD login](../../assets/keycloak-login.png "Keycloak ArgoCD login") diff --git a/docs/operator-manual/user-management/microsoft.md b/docs/operator-manual/user-management/microsoft.md deleted file mode 100644 index 4526c7a227f03..0000000000000 --- a/docs/operator-manual/user-management/microsoft.md +++ /dev/null @@ -1,178 +0,0 @@ -# Microsoft - -* [Azure AD SAML Enterprise App Auth using Dex](#azure-ad-saml-enterprise-app-auth-using-dex) -* [Azure AD App Registration Auth using OIDC](#azure-ad-app-registration-auth-using-oidc) -* [Azure AD App Registration Auth using Dex](#azure-ad-app-registration-auth-using-dex) - -## Azure AD SAML Enterprise App Auth using Dex - -### Configure a new Azure AD Enterprise App - -1. From the `Azure Active Directory` > `Enterprise applications` menu, choose `+ New application` -2. Select `Non-gallery application` -3. Enter a `Name` for the application (eg. `Argo CD`), then choose `Add` -4. Once the application is created, open it from the `Enterprise applications` menu. -5. From the `Users and groups` menu of the app, add any users or groups requiring access to the service. - - ![Azure Enterprise SAML Users](../../assets/azure-enterprise-users.png "Azure Enterprise SAML Users") - -6. From the `Single sign-on` menu, edit the `Basic SAML Configuration` section as follows (replacing `my-argo-cd-url` with your Argo URL): - - **Identifier (Entity ID):** https://``/api/dex/callback - - **Reply URL (Assertion Consumer Service URL):** https://``/api/dex/callback - - **Sign on URL:** https://``/auth/login - - **Relay State:** `` - - **Logout Url:** `` - - ![Azure Enterprise SAML URLs](../../assets/azure-enterprise-saml-urls.png "Azure Enterprise SAML URLs") - -7. From the `Single sign-on` menu, edit the `User Attributes & Claims` section to create the following claims: - - `+ Add new claim` | **Name:** email | **Source:** Attribute | **Source attribute:** user.mail - - `+ Add group claim` | **Which groups:** All groups | **Source attribute:** Group ID | **Customize:** True | **Name:** Group | **Namespace:** `` | **Emit groups as role claims:** False - - *Note: The `Unique User Identifier` required claim can be left as the default `user.userprincipalname`* - - ![Azure Enterprise SAML Claims](../../assets/azure-enterprise-claims.png "Azure Enterprise SAML Claims") - -8. From the `Single sign-on` menu, download the SAML Signing Certificate (Base64) - - Base64 encode the contents of the downloaded certificate file, for example: - - `$ cat ArgoCD.cer | base64` - - *Keep a copy of the encoded output to be used in the next section.* -9. From the `Single sign-on` menu, copy the `Login URL` parameter, to be used in the next section. - -### Configure Argo to use the new Azure AD Enterprise App - -1. Edit `argocd-cm` and add the following `dex.config` to the data section, replacing the `caData`, `my-argo-cd-url` and `my-login-url` your values from the Azure AD App: - -``` -data: - url: https://my-argo-cd-url - dex.config: | - logger: - level: debug - format: json - connectors: - - type: saml - id: saml - name: saml - config: - entityIssuer: https://my-argo-cd-url/api/dex/callback - ssoURL: https://my-login-url (eg. https://login.microsoftonline.com/xxxxx/a/saml2) - caData: | - MY-BASE64-ENCODED-CERTIFICATE-DATA - redirectURI: https://my-argo-cd-url/api/dex/callback - usernameAttr: email - emailAttr: email - groupsAttr: Group -``` - -2. Edit `argocd-rbac-cm` to configure permissions, similar to example below. - - - Use Azure AD `Group IDs` for assigning roles. - - See [RBAC Configurations](../rbac.md) for more detailed scenarios. - -``` -# example policy -policy.default: role:readonly - policy.csv: | - p, role:org-admin, applications, *, */*, allow - p, role:org-admin, clusters, get, *, allow - p, role:org-admin, repositories, get, *, allow - p, role:org-admin, repositories, create, *, allow - p, role:org-admin, repositories, update, *, allow - p, role:org-admin, repositories, delete, *, allow - g, "84ce98d1-e359-4f3b-85af-985b458de3c6", role:org-admin # (azure group assigned to role) -``` - -## Azure AD App Registration Auth using OIDC - -1. Register a new Azure AD Application - - [Quickstart: Register an application](https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-register-app) - - App Registrations Inputs - Redirect URI: https://argocd.example.com/auth/callback - Outputs - Application (client) ID: aaaaaaaa-1111-bbbb-2222-cccccccccccc - Directory (tenant) ID: 33333333-dddd-4444-eeee-555555555555 - Secret: some_secret - -2. Setup permissions for Azure AD Application - - On "API permissions" page find `User.Read` permission (under `Microsoft Graph`) and grant it to the created application: - - ![Azure AD API permissions](../../assets/azure-api-permissions.png "Azure AD API permissions") - - Also, on "Token Configuration" page add groups claim for the groups assigned to the application: - - ![Azure AD token configuration](../../assets/azure-token-configuration.png "Azure AD token configuration") - -3. Edit `argocd-cm` and configure the `data.oidc.config` section: - - ConfigMap -> argocd-cm - - data: - url: https://argocd.example.com/ - oidc.config: | - name: Azure - issuer: https://login.microsoftonline.com/{directory_tenant_id}/v2.0 - clientID: {azure_ad_application_client_id} - clientSecret: $oidc.azure.clientSecret - requestedIDTokenClaims: - groups: - essential: true - requestedScopes: - - openid - - profile - - email - -4. Edit `argocd-secret` and configure the `data.oidc.azure.clientSecret` section: - - Secret -> argocd-secret - - data: - oidc.azure.clientSecret: {client_secret | base64_encoded} - -5. Edit `argocd-rbac-cm` to configure permissions. Use group ID from Azure for assigning roles - - [RBAC Configurations](../rbac.md) - - ConfigMap -> argocd-rbac-cm - - policy.default: role:readonly - policy.csv: | - p, role:org-admin, applications, *, */*, allow - p, role:org-admin, clusters, get, *, allow - p, role:org-admin, repositories, get, *, allow - p, role:org-admin, repositories, create, *, allow - p, role:org-admin, repositories, update, *, allow - p, role:org-admin, repositories, delete, *, allow - g, "84ce98d1-e359-4f3b-85af-985b458de3c6", role:org-admin - -6. Mapping role from jwt token to argo - - If you want to map the roles from the jwt token to match the default roles (readonly and admin) then you must change the scope variable in the rbac-configmap. - - scopes: '[roles, email]' - -## Azure AD App Registration Auth using Dex - -Configure a new AD App Registration, as above. - -Then, add the `dex.config` to `argocd-cm`: - -```yaml -ConfigMap -> argocd-cm - -data: - dex.config: | - connectors: - - type: microsoft - id: microsoft - name: Your Company GmbH - config: - clientID: $MICROSOFT_APPLICATION_ID - clientSecret: $MICROSOFT_CLIENT_SECRET - redirectURI: http://localhost:8080/api/dex/callback - tenant: ffffffff-ffff-ffff-ffff-ffffffffffff - groups: - - DevOps -``` diff --git a/docs/operator-manual/user-management/okta.md b/docs/operator-manual/user-management/okta.md deleted file mode 100644 index ffec1e8eb8e3b..0000000000000 --- a/docs/operator-manual/user-management/okta.md +++ /dev/null @@ -1,143 +0,0 @@ -# Okta - -!!! note "Are you using this? Please contribute!" - If you're using this IdP please consider [contributing](../../developer-guide/site.md) to this document. - -A working Single Sign-On configuration using Okta via at least two methods was achieved using: - -* [SAML (with Dex)](#saml-with-dex) -* [OIDC (without Dex)](#oidc-without-dex) - -## SAML (with Dex) - -!!! note "Okta app group assignment" - The Okta app's **Group Attribute Statements** regex will be used later to map Okta groups to Argo CD RBAC roles. - -1. Create a new SAML application in Okta UI. - * ![Okta SAML App 1](../../assets/saml-1.png) - I've disabled `App Visibility` because Dex doesn't support Provider-initiated login flows. - * ![Okta SAML App 2](../../assets/saml-2.png) -1. Click `View setup instructions` after creating the application in Okta. - * ![Okta SAML App 3](../../assets/saml-3.png) -1. Copy the SSO URL to the `argocd-cm` in the data.oicd -1. Download the CA certificate to use in the `argocd-cm` configuration. - * If you are using this in the caData field, you will need to pass the entire certificate (including `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----` stanzas) through base64 encoding, for example, `base64 my_cert.pem`. - * If you are using the ca field and storing the CA certificate separately as a secret, you will need to mount the secret to the `dex` container in the `argocd-dex-server` Deployment. - * ![Okta SAML App 4](../../assets/saml-4.png) -1. Edit the `argocd-cm` and configure the `data.dex.config` section: - - -```yaml -dex.config: | - logger: - level: debug - format: json - connectors: - - type: saml - id: okta - name: Okta - config: - ssoURL: https://yourorganization.oktapreview.com/app/yourorganizationsandbox_appnamesaml_2/rghdr9s6hg98s9dse/sso/saml - # You need `caData` _OR_ `ca`, but not both. - caData: | - - # You need `caData` _OR_ `ca`, but not both. - # Path to mount the secret to the dex container - ca: /path/to/ca.pem - redirectURI: https://ui.argocd.yourorganization.net/api/dex/callback - usernameAttr: email - emailAttr: email - groupsAttr: group -``` - - ----- - -### Private deployment -It is possible to setup Okta SSO with a private Argo CD installation, where the Okta callback URL is the only publicly exposed endpoint. -The settings are largely the same with a few changes in the Okta app configuration and the `data.dex.config` section of the `argocd-cm` ConfigMap. - -Using this deployment model, the user connects to the private Argo CD UI and the Okta authentication flow seamlessly redirects back to the private UI URL. - -Often this public endpoint is exposed through an [Ingress object](../../ingress/#private-argo-cd-ui-with-multiple-ingress-objects-and-byo-certificate). - - -1. Update the URLs in the Okta app's General settings - * ![Okta SAML App Split](../../assets/saml-split.png) - The `Single sign on URL` field points to the public exposed endpoint, and all other URL fields point to the internal endpoint. -1. Update the `data.dex.config` section of the `argocd-cm` ConfigMap with the external endpoint reference. - - -```yaml -dex.config: | - logger: - level: debug - connectors: - - type: saml - id: okta - name: Okta - config: - ssoURL: https://yourorganization.oktapreview.com/app/yourorganizationsandbox_appnamesaml_2/rghdr9s6hg98s9dse/sso/saml - # You need `caData` _OR_ `ca`, but not both. - caData: | - - # You need `caData` _OR_ `ca`, but not both. - # Path to mount the secret to the dex container - ca: /path/to/ca.pem - redirectURI: https://external.path.to.argocd.io/api/dex/callback - usernameAttr: email - emailAttr: email - groupsAttr: group -``` - - -### Connect Okta Groups to Argo CD Roles -Argo CD is aware of user memberships of Okta groups that match the *Group Attribute Statements* regex. -The example above uses the `argocd-*` regex, so Argo CD would be aware of a group named `argocd-admins`. - -Modify the `argocd-rbac-cm` ConfigMap to connect the `argocd-admins` Okta group to the builtin Argo CD `admin` role. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-rbac-cm -data: - policy.csv: | - g, argocd-admins, role:admin - scopes: '[email,groups]' -``` - -## OIDC (without Dex) - -!!! warning "Do you want groups for RBAC later?" - If you want `groups` scope returned from Okta you need to unfortunately contact support to enable [API Access Management with Okta](https://developer.okta.com/docs/concepts/api-access-management/) or [_just use SAML above!_](#saml-with-dex) - - Next you may need the API Access Management feature, which the support team can enable for your OktaPreview domain for testing, to enable "custom scopes" and a separate endpoint to use instead of the "public" `/oauth2/v1/authorize` API Access Management endpoint. This might be a paid feature if you want OIDC unfortunately. The free alternative I found was SAML. - -1. On the `Okta Admin` page, navigate to the Okta API Management at `Security > API`. - ![Okta API Management](../../assets/api-management.png) -1. Choose your `default` authorization server. -1. Click `Scopes > Add Scope` - 1. Add a scope called `groups`. - ![Groups Scope](../../assets/groups-scope.png) -1. Click `Claims > Add Claim.` - 1. Add a claim called `groups` - 1. Choose the matching options you need, one example is: - * e.g. to match groups starting with `argocd-` you'd return an `ID Token` using your scope name from step 3 (e.g. `groups`) where the groups name `matches` the `regex` `argocd-.*` - ![Groups Claim](../../assets/groups-claim.png) -1. Edit the `argocd-cm` and configure the `data.oidc.config` section: - - -```yaml -oidc.config: | - name: Okta - issuer: https://yourorganization.oktapreview.com - clientID: 0oaltaqg3oAIf2NOa0h3 - clientSecret: ZXF_CfUc-rtwNfzFecGquzdeJ_MxM4sGc8pDT2Tg6t - requestedScopes: ["openid", "profile", "email", "groups"] - requestedIDTokenClaims: {"groups": {"essential": true}} -``` - - - diff --git a/docs/operator-manual/user-management/onelogin.md b/docs/operator-manual/user-management/onelogin.md deleted file mode 100644 index d487e0d5e7e70..0000000000000 --- a/docs/operator-manual/user-management/onelogin.md +++ /dev/null @@ -1,159 +0,0 @@ -# OneLogin - -!!! note "Are you using this? Please contribute!" - If you're using this IdP please consider [contributing](../../developer-guide/site.md) to this document. - - -
- - -# Integrating OneLogin and ArgoCD - -These instructions will take you through the entire process of getting your ArgoCD application authenticating with OneLogin. You will create a custom OIDC application within OneLogin and configure ArgoCD to use OneLogin for authentication, using UserRoles set in OneLogin to determine privileges in Argo. - -## Creating and Configuring OneLogin App - -For your ArgoCD application to communicate with OneLogin, you will first need to create and configure the OIDC application on the OneLogin side. - -### Create OIDC Application - -To create the application, do the following: - -1. Navigate to your OneLogin portal, then Administration > Applications. -2. Click "Add App". -3. Search for "OpenID Connect" in the search field. -4. Select the "OpenId Connect (OIDC)" app to create. -5. Update the "Display Name" field (could be something like "ArgoCD (Production)". -6. Click "Save". - -### Configuring OIDC Application Settings - -Now that the application is created, you can configure the settings of the app. - -#### Configuration Tab - -Update the "Configuration" settings as follows: - -1. Select the "Configuration" tab on the left. -2. Set the "Login Url" field to https://argocd.myproject.com/auth/login, replacing the hostname with your own. -3. Set the "Redirect Url" field to https://argocd.myproject.com/auth/callback, replacing the hostname with your own. -4. Click "Save". - -!!! note "OneLogin may not let you save any other fields until the above fields are set." - -#### Info Tab - -You can update the "Display Name", "Description", "Notes", or the display images that appear in the OneLogin portal here. - -#### Parameters Tab - -This tab controls what information is sent to Argo in the token. By default it will contain a Groups field and "Credentials are" is set to "Configured by admin". Leave "Credentials are" as the default. - -How the Value of the Groups field is configured will vary based on your needs, but to use OneLogin User roles for ArgoCD privileges, configure the Value of the Groups field with the following: - -1. Click "Groups". A modal appears. -2. Set the "Default if no value selected" field to "User Roles". -3. Set the transform field (below it) to "Semicolon Delimited Input". -4. Click "Save". - -When a user attempts to login to Argo with OneLogin, the User roles in OneLogin, say, Manager, ProductTeam, and TestEngineering, will be included in the Groups field in the token. These are the values needed for Argo to assign permissions. - -The groups field in the token will look similar to the following: - -``` -"groups": [ - "Manager", - "ProductTeam", - "TestEngineering", - ], -``` - -#### Rules Tab - -To get up and running, you do not need to make modifications to any settings here. - -#### SSO Tab - -This tab contains much of the information needed to be placed into your ArgoCD configuration file (API endpoints, client ID, client secret). - -Confirm "Application Type" is set to "Web". - -Confirm "Token Endpoint" is set to "Basic". - -#### Access Tab - -This tab controls who can see this application in the OneLogin portal. - -Select the roles you wish to have access to this application and click "Save". - -#### Users Tab - -This tab shows you the individual users that have access to this application (usually the ones that have roles specified in the Access Tab). - -To get up and running, you do not need to make modifications to any settings here. - -#### Privileges Tab - -This tab shows which OneLogin users can configure this app. - -To get up and running, you do not need to make modifications to any settings here. - -## Updating OIDC configuration in ArgoCD - -Now that the OIDC application is configured in OneLogin, you can update Argo configuration to communicate with OneLogin, as well as control permissions for those users that authenticate via OneLogin. - -### Tell Argo where OneLogin is - -Argo needs to have its config map (argocd-cm) updated in order to communicate with OneLogin. Consider the following yaml: - -``` -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm -data: - url: https:// - oidc.config: | - name: OneLogin - issuer: https://openid-connect.onelogin.com/oidc - clientID: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaaaaaaaa - clientSecret: abcdef123456 - - # Optional set of OIDC scopes to request. If omitted, defaults to: ["openid", "profile", "email", "groups"] - requestedScopes: ["openid", "profile", "email", "groups"] -``` - -The "url" key should have a value of the hostname of your Argo project. - -The "clientID" is taken from the SSO tab of the OneLogin application. - -The “issuer” is taken from the SSO tab of the OneLogin application. It is one of the issuer api endpoints. - -The "clientSecret" value is a client secret located in the SSO tab of the OneLogin application. - -!!! note "If you get an `invalid_client` error when trying the authenticate with OneLogin, there is a possibility that your client secret is not proper. Keep in mind that in previous versions `clientSecret` value had to be base64 encrypted, but it is not required anymore." - -### Configure Permissions for OneLogin Auth'd Users - -Permissions in ArgoCD can be configured by using the OneLogin role names that are passed in the Groups field in the token. Consider the following yaml in argocd-rbac-cm.yaml: - -``` -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-rbac-cm - namespace: argocd -data: - policy.default: role:readonly - policy.csv: | - p, role:org-admin, applications, *, */*, allow - p, role:org-admin, clusters, get, *, allow - p, role:org-admin, repositories, get, *, allow - p, role:org-admin, repositories, create, *, allow - p, role:org-admin, repositories, update, *, allow - p, role:org-admin, repositories, delete, *, allow - - g, TestEngineering, role:org-admin -``` - -In OneLogin, a user with user role "TestEngineering" will receive ArgoCD admin privileges when they log in to Argo via OneLogin. All other users will receive the readonly role. The key takeaway here is that "TestEngineering" is passed via the Group field in the token (which is specified in the Parameters tab in OneLogin). diff --git a/docs/operator-manual/user-management/openunison.md b/docs/operator-manual/user-management/openunison.md deleted file mode 100644 index 469d85f14935b..0000000000000 --- a/docs/operator-manual/user-management/openunison.md +++ /dev/null @@ -1,71 +0,0 @@ -# OpenUnison - -## Integrating OpenUnison and ArgoCD - -These instructions will take your through the steps of integrating OpenUnison and ArgoCD to support single sign-on and add a "badge" to your OpenUnison portal to create a single access point for both Kubernetes and ArgoCD. These instructions assume you'll be using both ArgoCD's web interface and command line interface. These instructions assume you are running [OpenUnison 1.0.20+](https://www.tremolosecurity.com/products/orchestra-for-kubernetes). - -![OpenUnison Portal with ArgoCD](../../assets/openunison-portal.png) - -## Create an OpenUnison Trust - -Update the below `Trust` object and add it to the `openunison` namespace. The only change you need to make is to replace `argocd.apps.domain.com` with the host name of your ArgoCD URL. The localhost URL is needed for the cli to work. There is no client secret used for ArgoCD since the cli will not work with it. - -``` -apiVersion: openunison.tremolo.io/v1 -kind: Trust -metadata: - name: argocd - namespace: openunison -spec: - accessTokenSkewMillis: 120000 - accessTokenTimeToLive: 1200000 - authChainName: LoginService - clientId: argocd - codeLastMileKeyName: lastmile-oidc - codeTokenSkewMilis: 60000 - publicEndpoint: true - redirectURI: - - https://argocd.apps.domain.com/auth/callback - - http://localhost:8085/auth/callback - signedUserInfo: true - verifyRedirect: true -``` - -## Create a "Badge" in OpenUnison - -Download [the yaml for a `PortalUrl` object](../../assets/openunison-argocd-url.yaml) and update the `url` to point to your ArgoCD instance. Add the updated `PortalUrl` to the `openunison` namespace of your cluster. - -## Configure SSO in ArgoCD - -Next, update the `argocd-cm` ConfigMap in the `argocd` namespace. Add the `url` and `oidc.config` sections as seen below. Update `issuer` with the host for OpenUnison. - -``` -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm -data: - url: https://argocd.apps.domain.com - oidc.config: |- - name: OpenUnison - issuer: https://k8sou.apps.192-168-2-144.nip.io/auth/idp/k8sIdp - clientID: argocd - requestedScopes: ["openid", "profile", "email", "groups"] -``` - -If everything went correctly, login to your OpenUnison instance and there should be a badge for ArgoCD. Clicking on that badge opens ArgoCD in a new window, already logged in! Additionally, launching the argocd cli tool will launch a browser to login to OpenUnison. - -## Configure ArgoCD Policy - -OpenUnison places groups in the `groups` claim. These claims will show up when you click on the user-info section of the ArgoCD portal. If you're using LDAP, Active Directory, or Active Directory Federation Services the groups will provided to ArgoCD as full Distinguished Names (DN). Since a DN containers commas (`,`) you'll need to quote the group name in your policy. For instance to assign `CN=k8s_login_cluster_admins,CN=Users,DC=ent2k12,DC=domain,DC=com` as an administrator would look like: - -``` -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-rbac-cm - namespace: argocd -data: - policy.csv: | - g, "CN=k8s_login_cluster_admins,CN=Users,DC=ent2k12,DC=domain,DC=com", role:admin -``` diff --git a/docs/operator-manual/webhook.md b/docs/operator-manual/webhook.md deleted file mode 100644 index d870c0d8ea8b7..0000000000000 --- a/docs/operator-manual/webhook.md +++ /dev/null @@ -1,79 +0,0 @@ -# Git Webhook Configuration - -## Overview - -Argo CD polls Git repositories every three minutes to detect changes to the manifests. To eliminate -this delay from polling, the API server can be configured to receive webhook events. Argo CD supports -Git webhook notifications from GitHub, GitLab, Bitbucket, Bitbucket Server and Gogs. The following explains how to configure -a Git webhook for GitHub, but the same process should be applicable to other providers. - -### 1. Create The WebHook In The Git Provider - -In your Git provider, navigate to the settings page where webhooks can be configured. The payload -URL configured in the Git provider should use the `/api/webhook` endpoint of your Argo CD instance -(e.g. `https://argocd.example.com/api/webhook`). If you wish to use a shared secret, input an -arbitrary value in the secret. This value will be used when configuring the webhook in the next step. - -![Add Webhook](../assets/webhook-config.png "Add Webhook") - -!!! note - When creating the webhook in Github, the "Content type" needs to be set to "application/json". The default value "application/x-www-form-urlencoded" is not supported by the library used to handle the hooks - -### 2. Configure Argo CD With The WebHook Secret (Optional) - -Configuring a webhook shared secret is optional, since Argo CD will still refresh applications -related to the Git repository, even with unauthenticated webhook events. This is safe to do since -the contents of webhook payloads are considered untrusted, and will only result in a refresh of the -application (a process which already occurs at three-minute intervals). If Argo CD is publicly -accessible, then configuring a webhook secret is recommended to prevent a DDoS attack. - -In the `argocd-secret` kubernetes secret, configure one of the following keys with the Git -provider's webhook secret configured in step 1. - -| Provider | K8s Secret Key | -|-----------------| ---------------------------------| -| GitHub | `webhook.github.secret` | -| GitLab | `webhook.gitlab.secret` | -| BitBucket | `webhook.bitbucket.uuid` | -| BitBucketServer | `webhook.bitbucketserver.secret` | -| Gogs | `webhook.gogs.secret` | - -Edit the Argo CD kubernetes secret: - -```bash -kubectl edit secret argocd-secret -n argocd -``` - -TIP: for ease of entering secrets, kubernetes supports inputting secrets in the `stringData` field, -which saves you the trouble of base64 encoding the values and copying it to the `data` field. -Simply copy the shared webhook secret created in step 1, to the corresponding -GitHub/GitLab/BitBucket key under the `stringData` field: - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: argocd-secret - namespace: argocd -type: Opaque -data: -... - -stringData: - # github webhook secret - webhook.github.secret: shhhh! it's a github secret - - # gitlab webhook secret - webhook.gitlab.secret: shhhh! it's a gitlab secret - - # bitbucket webhook secret - webhook.bitbucket.uuid: your-bitbucket-uuid - - # bitbucket server webhook secret - webhook.bitbucketserver.secret: shhhh! it's a bitbucket server secret - - # gogs server webhook secret - webhook.gogs.secret: shhhh! it's a gogs server secret -``` - -After saving, the changes should take effect automatically. diff --git a/docs/overrides/partials/language/en-custom.html b/docs/overrides/partials/language/en-custom.html new file mode 100644 index 0000000000000..536b9af3642c4 --- /dev/null +++ b/docs/overrides/partials/language/en-custom.html @@ -0,0 +1,3 @@ +{% macro t(key) %}{{ { + "toc.title": "Table of Contents" +}[key] }}{% endmacro %} diff --git a/docs/rbac/index.md b/docs/rbac/index.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/reference/cli/argocd-util.md b/docs/reference/cli/argocd-util.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/reference/cli/argocd.md b/docs/reference/cli/argocd.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/reference/config/argocd-cm.md b/docs/reference/config/argocd-cm.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/reference/config/argocd-gpg-keys-cm.md b/docs/reference/config/argocd-gpg-keys-cm.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/reference/config/argocd-secret.md b/docs/reference/config/argocd-secret.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/reference/config/argocd-ssh-known-hosts-cm.md b/docs/reference/config/argocd-ssh-known-hosts-cm.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/reference/config/argocd-tls-certs-cm.md b/docs/reference/config/argocd-tls-certs-cm.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/reference/config/cluster-secret.md b/docs/reference/config/cluster-secret.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/reference/crd.md b/docs/reference/crd.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/reference/crd/application.md b/docs/reference/crd/application.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/reference/crd/appproject.md b/docs/reference/crd/appproject.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/reference/server/argocd-application-controller.md b/docs/reference/server/argocd-application-controller.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/reference/server/argocd-repo-server.md b/docs/reference/server/argocd-repo-server.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/reference/server/argocd-server.md b/docs/reference/server/argocd-server.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/roadmap.md b/docs/roadmap.md deleted file mode 100644 index 74e36cae8d19a..0000000000000 --- a/docs/roadmap.md +++ /dev/null @@ -1,116 +0,0 @@ -# Roadmap - -- [Roadmap](#roadmap) - - [Core Functionality Bug Fixes](#core-functionality-bug-fixes) - - [Performance](#performance) - - [ApplicationSet](#applicationset) - - [Large Applications support](#large-applications-support) - - [Serviceability](#serviceability) - - [GitOps Engine Enhancements](#gitops-engine-enhancements) - - [GitOps Agent](#gitops-agent) - - [Config Management Tools Integrations](#config-management-tools-integrations) - - [Resource Actions Revamp](#resource-actions-revamp) - - [Argo CD Notifications](#argo-cd-notifications) - - [Automated Registry Monitoring](#automated-registry-monitoring) - - [Application Details Page Usability](#application-details-page-usability) - - [Cluster Management User Interface](#cluster-management-user-interface) - - [Projects Enhancements](#projects-enhancements) - -### Core Functionality Bug Fixes - -The core GitOps features still have several known bugs and limitations. The full list is available in [v1.9 milestone]( -https://github.com/argoproj/argo-cd/issues?q=is%3Aopen+is%3Aissue+label%3Abug+milestone%3A%22v1.9%22+label%3Acomponent%3Acore) - -The most notable issues: - -* [Argo CD synchronization lasts incredibly long](https://github.com/argoproj/argo-cd/issues/3663) - -### Performance - -* 2000+ Applications support. The user interface becomes notably slower if one Argo CD instance manages more than 1 thousand applications. -A set of optimizations is required to fix that issue. - -* 100+ Clusters support. The cluster addon management use-case requires connecting a large number of clusters to one Argo CD controller. -Currently Argo CD controller is unable to handle that many clusters. The solution is to support horizontal controller scaling and automated sharding. - -* Mono Repository support. Argo CD is not optimized for mono repositories with a large number of applications. With 50+ applications in the same repository, manifest generation performance drops significantly. The repository server optimization is required to improve it. - -### ApplicationSet - -Argo CD Applications allow splitting the cluster configuration into logic groups that are managed independently. However, the set of applications -is a configuration that should be managed declaratively as well. The app-of-apps pattern solves this problem but still has some challenges such as -maintenance overhead, security, and lack of some additional features. - -[ApplicationSet](https://github.com/argoproj-labs/applicationset) project provides a better solution for managing applications across multiple environments. - -### Large Applications support - -The application details page is not suitable to visualize applications that include a large number of resources (hundreds of resources). The page has to be reworked -to improve user experience. - -### Serviceability - -To make Argo CD successful we need to build tools that enable Argo CD administrators to handle scalability and performance issues in a self-service model. - -That includes more metrics, out of the box alerts and a cluster management user interface. - -### GitOps Engine Enhancements - -The [GitOps Engine](https://github.com/argoproj/gitops-engine) is a library that implements core GitOps functions such as K8S resource reconciliation and diffing. -A lot of Argo CD features are still not available in GitOps engine. The following features have to be contributed to the GitOps Engine: - -* an ability to customize resources health assessment and existing CRD health [assessment functions](https://github.com/argoproj/argo-cd/tree/master/resource_customizations). -* resource diffing [customization](../user-guide/diffing/). -* config management [tools](../user-guide/application_sources/) integration. -* unified syncing annotations [argoproj/gitops-engine#43](https://github.com/argoproj/gitops-engine/issues/43). - -### GitOps Agent - -[GitOps Agent](https://github.com/argoproj/gitops-engine/tree/master/agent) is a continuation of GitOps engine work. The GitOps Agent leverages the GitOps Engine and provides -access to many engine features via a simple CLI interface. - -### Config Management Tools Integrations - -The community likes the first class support of Helm, Kustomize and keeps requesting support for more tools. -Argo CD provides a mechanism to integrate with any config management tool. We need to investigate why -it is not enough and implement missing features. - -### Resource Actions Revamp - -Resource actions is very powerful but literally hidden feature. Documentation is missing and therefore -adoption is poor. We need to document and promote it, and then iterate and work on enhancements: - -* hard to configure unless you are Argo CD ninja -* half done parameters support: we have backend but no UI/CLI for it -* configuration issue: it is impossible to share actions as a YAML file since ALL resource customizations are stored in one config map key - -### Argo CD Notifications - -[Argo CD Notifications](https://github.com/argoproj-labs/argocd-notifications) provides the ability to notify users about Argo CD Application -changes as well as implement integrations such as update Github commit status, trigger Jenkins job, set Grafana label, etc. - -### Automated Registry Monitoring - -[Argo CD Image Updater](https://github.com/argoproj-labs/argocd-image-updater) provides an ability to monitor Docker registries and automatically -update image versions in the deployment repository. See [https://github.com/argoproj/argo-cd/issues/1648](https://github.com/argoproj/argo-cd/issues/1648). - -### Application Details Page Usability - -Application details page has accumulated multiple usability and feature requests such as -[Node view](https://github.com/argoproj/argo-cd/issues/1483), -Logs ([1](https://github.com/argoproj/argo-cd/issues/781), [2](https://github.com/argoproj/argo-cd/issues/3382)), -Network view ([1](https://github.com/argoproj/argo-cd/issues/2892), [2](https://github.com/argoproj/argo-cd/issues/2338)) - [etc](https://github.com/argoproj/argo-cd/issues/2199). - -### Cluster Management User Interface - -Argo CD has information about whole clusters, not just applications in it. -We need to provide a user interface for cluster administrators that visualize cluster level resources. - -### Projects Enhancements - -Argo CD projects accumulated a lot of debt: - -* Users don't know how to use project roles and SSO. It is one of the key features but not documented well. We need to document and promote it -* Project management UI has evolved organically and needs a complete redesign. We packaged everything into one sliding panel which is painful to use -* Enhancements: [#3598](https://github.com/argoproj/argo-cd/issues/3598) diff --git a/docs/security_considerations.md b/docs/security_considerations.md deleted file mode 100644 index 8ce2c49e59664..0000000000000 --- a/docs/security_considerations.md +++ /dev/null @@ -1,183 +0,0 @@ -# Security Considerations - -!!!warning "Deprecation notice" - This page is now deprecated and serves as an archive only. For up-to-date - information, please have a look at our - [security policy](https://github.com/argoproj/argo-cd/security/policy) and - [published security advisories](https://github.com/argoproj/argo-cd/security/advisories). - -As a deployment tool, Argo CD needs to have production access which makes security a very important topic. -The Argoproj team takes security very seriously and continuously working on improving it. Learn more about security -related features in [Security](./operator-manual/security.md) section. - -## Overview of past and current issues - -The following table gives a general overview about past and present issues known -to the ArgoCD project. See in the [Known Issues](#known-issues-and-workarounds) -section if there is a work-around available if you cannot update or if there is -no fix yet. - -|Date|CVE|Title|Risk|Affected version(s)|Fix version| -|----|---|-----|----|-------------------|-----------| -|2020-06-16|[CVE-2020-1747](https://nvd.nist.gov/vuln/detail/CVE-2020-1747)|PyYAML library susceptible to arbitrary code execution|High|all|v1.5.8| -|2020-06-16|[CVE-2020-14343](https://nvd.nist.gov/vuln/detail/CVE-2020-14343)|PyYAML library susceptible to arbitrary code execution|High|all|v1.5.8| -|2020-04-14|[CVE-2020-5260](https://nvd.nist.gov/vuln/detail/CVE-2020-5260)|Possible Git credential leak|High|all|v1.4.3,v1.5.2| -|2020-04-08|[CVE-2020-11576](https://nvd.nist.gov/vuln/detail/CVE-2020-11576)|User Enumeration|Medium|v1.5.0|v1.5.1| -|2020-04-08|[CVE-2020-8826](https://nvd.nist.gov/vuln/detail/CVE-2020-8826)|Session-fixation|High|all|n/a| -|2020-04-08|[CVE-2020-8827](https://nvd.nist.gov/vuln/detail/CVE-2020-8827)|Insufficient anti-automation/anti-brute force|High|all <= 1.5.3|v1.5.3| -|2020-04-08|[CVE-2020-8828](https://nvd.nist.gov/vuln/detail/CVE-2020-8828)|Insecure default administrative password|High|all|n/a| -|2020-04-08|[CVE-2018-21034](https://nvd.nist.gov/vuln/detail/CVE-2018-21034)|Sensitive Information Disclosure|Medium|all <= v1.5.0|v1.5.0| - -## Known Issues And Workarounds - -A recent security audit (thanks a lot to [Matt Hamilton](https://github.com/Eriner) of [https://soluble.ai](https://soluble.ai) ) -has revealed several limitations in Argo CD which could compromise security. -Most of the issues are related to the built-in user management implementation. - -### CVE-2020-1747, CVE-2020-14343 - PyYAML library susceptible to arbitrary code execution - -**Summary:** - -|Risk|Reported by|Fix version|Workaround| -|----|-----------|-----------|----------| -|High|[infa-kparida](https://github.com/infa-kparida)|v1.5.8|No| - -**Details:** - -PyYAML library susceptible to arbitrary code execution when it processes untrusted YAML files. -We do not believe ArgoCD is affected by this vulnerability, because the impact of CVE-2020-1747 and CVE-2020-14343 is limited to usage of awscli. -The `awscli` only used for AWS IAM authentication, and the endpoint is the AWS API. - -### CVE-2020-5260 - Possible Git credential leak - -**Summary:** - -|Risk|Reported by|Fix version|Workaround| -|----|-----------|-----------|----------| -|Critical|Felix Wilhelm of Google Project Zero|v1.4.3,v1.5.2|Yes| - -**Details:** - -ArgoCD relies on Git for many of its operations. The Git project released a -[security advisory](https://github.com/git/git/security/advisories/GHSA-qm7j-c969-7j4q) -on 2020-04-14, describing a serious vulnerability in Git which can lead to credential -leakage through credential helpers by feeding malicious URLs to the `git clone` -operation. - -We do not believe ArgoCD is affected by this vulnerability, because ArgoCD does neither -make use of Git credential helpers nor does it use `git clone` for repository operations. -However, we do not know whether our users might have configured Git credential helpers on -their own and chose to release new images which contain the bug fix for Git. - -**Mitigation and/or workaround:** - -We strongly recommend to upgrade your ArgoCD installation to either `v1.4.3` (if on v1.4 -branch) or `v1.5.2` (if on v1.5 branch) - - -When you are running `v1.4.x`, you can upgrade to `v1.4.3` by simply changing the image -tags for `argocd-server`, `argocd-repo-server` and `argocd-controller` to `v1.4.3`. -The `v1.4.3` release does not contain additional functional bug fixes. - -Likewise, hen you are running `v1.5.x`, you can upgrade to `v1.5.2` by simply changing -the image tags for `argocd-server`, `argocd-repo-server` and `argocd-controller` to `v1.5.2`. -The `v1.5.2` release does not contain additional functional bug fixes. - -### CVE-2020-11576 - User Enumeration - -**Summary:** - -|Risk|Reported by|Fix version|Workaround| -|----|-----------|-----------|----------| -|Medium|[Matt Hamilton](https://github.com/Eriner) of [https://soluble.ai](https://soluble.ai)|v1.5.1|Yes| - -**Details:** - -Argo version v1.5.0 was vulnerable to a user-enumeration vulnerability which allowed attackers to determine the usernames of valid (non-SSO) accounts within Argo. - -**Mitigation and/or workaround:** - -Upgrade to ArgoCD v1.5.1 or higher. As a workaround, disable local users and use only SSO authentication. - -### CVE-2020-8828 - Insecure default administrative password - -**Summary:** - -|Risk|Reported by|Fix version|Workaround| -|----|-----------|-----------|----------| -|High|[Matt Hamilton](https://github.com/Eriner) of [https://soluble.ai](https://soluble.ai)|n/a|Yes| - -**Details:** - -Argo CD uses the `argocd-server` pod name (ex: `argocd-server-55594fbdb9-ptsf5`) as the default admin password. - -Kubernetes users able to list pods in the argo namespace are able to retrieve the default password. - -Additionally, In most installations, [the Pod name contains a random "trail" of characters](https://github.com/kubernetes/kubernetes/blob/dda530cfb74b157f1d17b97818aa128a9db8e711/staging/src/k8s.io/apiserver/pkg/storage/names/generate.go#L37). -These characters are generated using [a time-seeded PRNG](https://github.com/kubernetes/apimachinery/blob/master/pkg/util/rand/rand.go#L26) and not a CSPRNG. -An attacker could use this information in an attempt to deduce the state of the internal PRNG, aiding bruteforce attacks. - -**Mitigation and/or workaround:** - -The recommended mitigation as described in the user documentation is to use SSO integration. The default admin password -should only be used for initial configuration and then [disabled](../operator-manual/user-management/#disable-admin-user) -or at least changed to a more secure password. - -### CVE-2020-8827 - Insufficient anti-automation/anti-brute force - -**Summary:** - -|Risk|Reported by|Fix version|Workaround| -|----|-----------|-----------|----------| -|High|[Matt Hamilton](https://github.com/Eriner) of [https://soluble.ai](https://soluble.ai)|n/a|Yes| - -**Details:** - -ArgoCD before v1.5.3 does not enforce rate-limiting or other anti-automation mechanisms which would mitigate admin password brute force. - -**Mitigation and/or workaround:** - -Rate-limiting and anti-automation mechanisms for local user accounts have been introduced with ArgoCD v1.5.3. - -As a workaround for mitigation if you cannot upgrade ArgoCD to v1.5.3 yet, we recommend to disable local users and use SSO instead. - -### CVE-2020-8826 - Session-fixation - -**Summary:** - -|Risk|Reported by|Fix version|Workaround| -|----|-----------|-----------|----------| -|High|[Matt Hamilton](https://github.com/Eriner) of [https://soluble.ai](https://soluble.ai)|n/a|Yes| - -**Details:** - -The authentication tokens generated for built-in users have no expiry. - -These issues might be acceptable in the controlled isolated environment but not acceptable if Argo CD user interface is -exposed to the Internet. - -**Mitigation and/or workaround:** - -The recommended mitigation is to change the password periodically to invalidate the authentication tokens. - -### CVE-2018-21034 - Sensitive Information Disclosure - -**Summary:** - -|Risk|Reported by|Fix version|Workaround| -|----|-----------|-----------|----------| -|Medium|[Matt Hamilton](https://github.com/Eriner) of [https://soluble.ai](https://soluble.ai)|v1.5.0|No| - -**Details:** - -In Argo versions prior to v1.5.0-rc1, it was possible for authenticated Argo users to submit API calls to retrieve secrets and other manifests which were stored within git. - -**Mitigation and/or workaround:** - -Upgrade to ArgoCD v1.5.0 or higher. No workaround available - -## Reporting Vulnerabilities - -Please have a look at our -[security policy](https://github.com/argoproj/argo-cd/security/policy) -for more details on how to report security vulnerabilities for Argo CD. diff --git a/docs/syncing/diffing.md b/docs/syncing/diffing.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/syncing/git_webhooks.md b/docs/syncing/git_webhooks.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/user-guide/gpg-verification.md b/docs/syncing/gnupg.md similarity index 95% rename from docs/user-guide/gpg-verification.md rename to docs/syncing/gnupg.md index 946118de6bb3e..8d370d41c4f58 100644 --- a/docs/user-guide/gpg-verification.md +++ b/docs/syncing/gnupg.md @@ -60,29 +60,6 @@ this project. If signature verification is enforced, you will not be able to sync from local sources (i.e. `argocd app sync --local`) anymore. -## RBAC rules for managing GnuPG keys - -The appropriate resource notation for Argo CD's RBAC implementation to allow -the managing of GnuPG keys is `gpgkeys`. - -To allow listing of keys for a role named `role:myrole`, use: - -``` -p, role:myrole, gpgkeys, get, *, allow -``` - -To allow adding keys for a role named `role:myrole`, use: - -``` -p, role:myrole, gpgkeys, create, *, allow -``` - -And finally, to allow deletion of keys for a role named `role:myrole`, use: - -``` -p, role:myrole, gpgkeys, delete, *, allow -``` - ## Importing GnuPG public keys You can configure the GnuPG public keys that ArgoCD will use for verification diff --git a/docs/syncing/health.md b/docs/syncing/health.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/syncing/hooks.md b/docs/syncing/hooks.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/syncing/index.md b/docs/syncing/index.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/syncing/options.md b/docs/syncing/options.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/syncing/policy.md b/docs/syncing/policy.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/syncing/states.md b/docs/syncing/states.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/syncing/tracking.md b/docs/syncing/tracking.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/syncing/waves.md b/docs/syncing/waves.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/syncing/windows.md b/docs/syncing/windows.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/tools/helm.md b/docs/tools/helm.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/tools/index.md b/docs/tools/index.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/tools/jsonnet.md b/docs/tools/jsonnet.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/tools/kustomize.md b/docs/tools/kustomize.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/tools/plugins.md b/docs/tools/plugins.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/troubleshooting/common-issues.md b/docs/troubleshooting/common-issues.md new file mode 100644 index 0000000000000..3cc13c23f31f6 --- /dev/null +++ b/docs/troubleshooting/common-issues.md @@ -0,0 +1,11 @@ +# Common Issues + +## Applications + +## Projects + +## Clusters + +## Repositories + +## Ingress diff --git a/docs/troubleshooting/performance.md b/docs/troubleshooting/performance.md new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/docs/understand_the_basics.md b/docs/understand_the_basics.md deleted file mode 100644 index 0737743aa27ae..0000000000000 --- a/docs/understand_the_basics.md +++ /dev/null @@ -1,17 +0,0 @@ -# Understand The Basics - -Before effectively using Argo CD, it is necessary to understand the underlying technology that the platform is built on. It is also necessary to understand the features being provided to you and how to use them. The section below provides some useful links to build up this understanding. -  -## Learn The Fundamentals - -* Go through the online Docker and Kubernetes tutorials: - * [A Beginner-Friendly Introduction to Containers, VMs and Docker](https://medium.freecodecamp.org/a-beginner-friendly-introduction-to-containers-vms-and-docker-79a9e3e119b) - * [Introduction to Kubernetes](https://www.edx.org/course/introduction-to-kubernetes) - * [Tutorials](https://kubernetes.io/docs/tutorials/) - * [Hands on labs](https://katacoda.com/courses/kubernetes/) -* Depending on how you plan to template your applications: - * [Kustomize](https://kustomize.io) - * [Helm](https://helm.sh) - * [Ksonnet](https://ksonnet.io) -* If you're integrating with Jenkins: - * [Jenkins User Guide](https://jenkins.io) diff --git a/docs/user-guide/app_deletion.md b/docs/user-guide/app_deletion.md deleted file mode 100644 index d50853e2ed4ad..0000000000000 --- a/docs/user-guide/app_deletion.md +++ /dev/null @@ -1,52 +0,0 @@ -# App Deletion - -Apps can be deleted with or without a cascade option. A **cascade delete**, deletes both the app and its resources, rather than only the app. - -## Deletion Using `argocd` - -To perform a non-cascade delete: - -```bash -argocd app delete APPNAME --cascade=false -``` - -To perform a cascade delete: - -```bash -argocd app delete APPNAME --cascade -``` - -or - -```bash -argocd app delete APPNAME -``` - -# Deletion Using `kubectl` - -To perform a non-cascade delete: - -```bash -kubectl delete app APPNAME -``` - -To perform a cascade delete set the finalizer, e.g. using `kubctl patch`: - -```bash -kubectl patch app APPNAME -p '{"metadata": {"finalizers": ["resources-finalizer.argocd.argoproj.io"]}}' --type merge -kubectl delete app APPNAME -``` - -# About The Deletion Finalizer - -For the technical amongst you, the Argo CD application controller watches for this finalizer: - -```yaml -metadata: - finalizers: - - resources-finalizer.argocd.argoproj.io -``` - -Argo CD's app controller watches for this and will then delete both the app and its resources. - -When you invoke `argocd app delete` with `--cascade`, the finalizer is added automatically. diff --git a/docs/user-guide/application_sources.md b/docs/user-guide/application_sources.md deleted file mode 100644 index 55730f5b7535a..0000000000000 --- a/docs/user-guide/application_sources.md +++ /dev/null @@ -1,21 +0,0 @@ -# Tools - -## Production - -Argo CD supports several different ways in which Kubernetes manifests can be defined: - -* [Kustomize](kustomize.md) applications -* [Helm](helm.md) charts -* [Ksonnet](ksonnet.md) applications -* A directory of YAML/JSON/Jsonnet manifests, including [Jsonnet](jsonnet.md). -* Any [custom config management tool](config-management-plugins.md) configured as a config management plugin - -## Development -Argo CD also supports uploading local manifests directly. Since this is an anti-pattern of the -GitOps paradigm, this should only be done for development purposes. A user with an `override` permission is required -to upload manifests locally (typically an admin). All of the different Kubernetes deployment tools above are supported. -To upload a local application: - -```bash -$ argocd app sync APPNAME --local /path/to/dir/ -``` diff --git a/docs/user-guide/auto_sync.md b/docs/user-guide/auto_sync.md deleted file mode 100644 index df39d2ef5d8c8..0000000000000 --- a/docs/user-guide/auto_sync.md +++ /dev/null @@ -1,90 +0,0 @@ -# Automated Sync Policy - -Argo CD has the ability to automatically sync an application when it detects differences between -the desired manifests in Git, and the live state in the cluster. A benefit of automatic sync is that -CI/CD pipelines no longer need direct access to the Argo CD API server to perform the deployment. -Instead, the pipeline makes a commit and push to the Git repository with the changes to the -manifests in the tracking Git repo. - -To configure automated sync run: -```bash -argocd app set --sync-policy automated -``` - -Alternatively, if creating the application an application manifest, specify a syncPolicy with an -`automated` policy. -```yaml -spec: - syncPolicy: - automated: {} -``` - -## Automatic Pruning - -By default (and as a safety mechanism), automated sync will not delete resources when Argo CD detects -the resource is no longer defined in Git. To prune the resources, a manual sync can always be -performed (with pruning checked). Pruning can also be enabled to happen automatically as part of the -automated sync by running: - -```bash -argocd app set --auto-prune -``` - -Or by setting the prune option to true in the automated sync policy: - -```yaml -spec: - syncPolicy: - automated: - prune: true -``` - -## Automatic Pruning with Allow-Empty (v1.8) - -By default (and as a safety mechanism), automated sync with prune have a protection from any automation/human errors -when there are no target resources. It prevents application from having empty resources. To allow applications have empty resources, run: - -```bash -argocd app set --allow-empty -``` - -Or by setting the allow empty option to true in the automated sync policy: - -```yaml -spec: - syncPolicy: - automated: - prune: true - allowEmpty: true -``` - -## Automatic Self-Healing -By default, changes that are made to the live cluster will not trigger automated sync. To enable automatic sync -when the live cluster's state deviates from the state defined in Git, run: - -```bash -argocd app set --self-heal -``` - -Or by setting the self heal option to true in the automated sync policy: - -```yaml -spec: - syncPolicy: - automated: - selfHeal: true -``` - -## Automated Sync Semantics - -* An automated sync will only be performed if the application is OutOfSync. Applications in a - Synced or error state will not attempt automated sync. -* Automated sync will only attempt one synchronization per unique combination of commit SHA1 and - application parameters. If the most recent successful sync in the history was already performed - against the same commit-SHA and parameters, a second sync will not be attempted, unless `selfHeal` flag is set to true. -* If `selfHeal` flag is set to true then sync will be attempted again after self heal timeout (5 seconds by default) -which is controlled by `--self-heal-timeout-seconds` flag of `argocd-application-controller` deployment. -* Automatic sync will not reattempt a sync if the previous sync attempt against the same commit-SHA - and parameters had failed. - -* Rollback cannot be performed against an application with automated sync enabled. diff --git a/docs/user-guide/best_practices.md b/docs/user-guide/best_practices.md deleted file mode 100644 index 7c44c554da116..0000000000000 --- a/docs/user-guide/best_practices.md +++ /dev/null @@ -1,79 +0,0 @@ -# Best Practices - -## Separating Config Vs. Source Code Repositories - -Using a separate Git repository to hold your kubernetes manifests, keeping the config separate -from your application source code, is highly recommended for the following reasons: - -1. It provides a clean separation of application code vs. application config. There will be times - when you wish to modify just the manifests without triggering an entire CI build. For example, - you likely do _not_ want to trigger a build if you simply wish to bump the number of replicas in - a Deployment spec. - -2. Cleaner audit log. For auditing purposes, a repo which only holds configuration will have a much - cleaner Git history of what changes were made, without the noise coming from check-ins due to - normal development activity. - -3. Your application may be comprised of services built from multiple Git repositories, but is - deployed as a single unit. Oftentimes, microservices applications are comprised of services - with different versioning schemes, and release cycles (e.g. ELK, Kafka + Zookeeper). It may not - make sense to store the manifests in one of the source code repositories of a single component. - -4. Separation of access. The developers who are developing the application, may not necessarily be - the same people who can/should push to production environments, either intentionally or - unintentionally. By having separate repos, commit access can be given to the source code repo, - and not the application config repo. - -5. If you are automating your CI pipeline, pushing manifest changes to the same Git repository can - trigger an infinite loop of build jobs and Git commit triggers. Having a separate repo to push - config changes to, prevents this from happening. - - -## Leaving Room For Imperativeness - -It may be desired to leave room for some imperativeness/automation, and not have everything defined -in your Git manifests. For example, if you want the number of your deployment's replicas to be -managed by [Horizontal Pod Autoscaler](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/), -then you would not want to track `replicas` in Git. - -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: nginx-deployment -spec: - # do not include replicas in the manifests if you want replicas to be controlled by HPA - # replicas: 1 - template: - spec: - containers: - - image: nginx:1.7.9 - name: nginx - ports: - - containerPort: 80 -... -``` - -## Ensuring Manifests At Git Revisions Are Truly Immutable - -When using templating tools like `helm` or `kustomize`, it is possible for manifests to change -their meaning from one day to the next. This is typically caused by changes made to an upstream helm -repository or kustomize base. - -For example, consider the following kustomization.yaml - -```yaml -bases: -- github.com/argoproj/argo-cd//manifests/cluster-install -``` - -The above kustomization has a remote base to the HEAD revision of the argo-cd repo. Since this -is not a stable target, the manifests for this kustomize application can suddenly change meaning, even without -any changes to your own Git repository. - -A better version would be to use a Git tag or commit SHA. For example: - -```yaml -bases: -- github.com/argoproj/argo-cd//manifests/cluster-install?ref=v0.11.1 -``` diff --git a/docs/user-guide/build-environment.md b/docs/user-guide/build-environment.md deleted file mode 100644 index 708967da0c663..0000000000000 --- a/docs/user-guide/build-environment.md +++ /dev/null @@ -1,14 +0,0 @@ -# Build Environment - -> v1.4 - -[Custom tools](config-management-plugins.md), [Helm](helm.md), and [Jsonnet](jsonnet.md) support the following build env vars: - -* `ARGOCD_APP_NAME` - name of application -* `ARGOCD_APP_NAMESPACE` - destination application namespace. -* `ARGOCD_APP_REVISION` - the resolved revision, e.g. `f913b6cbf58aa5ae5ca1f8a2b149477aebcbd9d8` -* `ARGOCD_APP_SOURCE_PATH` - the path of the app within the repo -* `ARGOCD_APP_SOURCE_REPO_URL` the repo's URL -* `ARGOCD_APP_SOURCE_TARGET_REVISION` - the target revision from the spec, e.g. `master`. -* `KUBE_VERSION` - the version of kubernetes -* `KUBE_API_VERSIONS` = the version of kubernetes API \ No newline at end of file diff --git a/docs/user-guide/ci_automation.md b/docs/user-guide/ci_automation.md deleted file mode 100644 index d34024a5108e9..0000000000000 --- a/docs/user-guide/ci_automation.md +++ /dev/null @@ -1,58 +0,0 @@ -# Automation from CI Pipelines - -Argo CD follows the GitOps model of deployment, where desired configuration changes are first -pushed to Git, and the cluster state then syncs to the desired state in git. This is a departure -from imperative pipelines which do not traditionally use Git repositories to hold application -config. - -To push new container images into to a cluster managed by Argo CD, the following workflow (or -variations), might be used: - -## Build And Publish A New Container Image - -```bash -docker build -t mycompany/guestbook:v2.0 . -docker push mycompany/guestbook:v2.0 -``` - -## Update The Local Manifests Using Your Preferred Templating Tool, And Push The Changes To Git - -!!! tip - The use of a different Git repository to hold your kubernetes manifests (separate from - your application source code), is highly recommended. See [best practices](best_practices.md) - for further rationale. - -```bash -git clone https://github.com/mycompany/guestbook-config.git -cd guestbook-config - -# kustomize -kustomize edit set image mycompany/guestbook:v2.0 - -# ksonnet -ks param set guestbook image mycompany/guestbook:v2.0 - -# plain yaml -kubectl patch --local -f config-deployment.yaml -p '{"spec":{"template":{"spec":{"containers":[{"name":"guestbook","image":"mycompany/guestbook:v2.0"}]}}}}' -o yaml - -git add . -m "Update guestbook to v2.0" -git push -``` - -## Synchronize The App (Optional) - -For convenience, the argocd CLI can be downloaded directly from the API server. This is -useful so that the CLI used in the CI pipeline is always kept in-sync and uses argocd binary -that is always compatible with the Argo CD API server. - -```bash -export ARGOCD_SERVER=argocd.mycompany.com -export ARGOCD_AUTH_TOKEN= -curl -sSL -o /usr/local/bin/argocd https://${ARGOCD_SERVER}/download/argocd-linux-amd64 -argocd app sync guestbook -argocd app wait guestbook -``` - -If [automated synchronization](auto_sync.md) is configured for the application, this step is -unnecessary. The controller will automatically detect the new config (fast tracked using a -[webhook](../operator-manual/webhook.md), or polled every 3 minutes), and automatically sync the new manifests. diff --git a/docs/user-guide/commands/argocd.md b/docs/user-guide/commands/argocd.md deleted file mode 100644 index 43fad143dc583..0000000000000 --- a/docs/user-guide/commands/argocd.md +++ /dev/null @@ -1,46 +0,0 @@ -## argocd - -argocd controls a Argo CD server - -``` -argocd [flags] -``` - -### Options - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - -h, --help help for argocd - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd account](argocd_account.md) - Manage account settings -* [argocd app](argocd_app.md) - Manage applications -* [argocd cert](argocd_cert.md) - Manage repository certificates and SSH known hosts entries -* [argocd cluster](argocd_cluster.md) - Manage cluster credentials -* [argocd completion](argocd_completion.md) - output shell completion code for the specified shell (bash or zsh) -* [argocd context](argocd_context.md) - Switch between contexts -* [argocd gpg](argocd_gpg.md) - Manage GPG keys used for signature verification -* [argocd login](argocd_login.md) - Log in to Argo CD -* [argocd logout](argocd_logout.md) - Log out from Argo CD -* [argocd proj](argocd_proj.md) - Manage projects -* [argocd relogin](argocd_relogin.md) - Refresh an expired authenticate token -* [argocd repo](argocd_repo.md) - Manage repository connection parameters -* [argocd repocreds](argocd_repocreds.md) - Manage repository connection parameters -* [argocd version](argocd_version.md) - Print version information - diff --git a/docs/user-guide/commands/argocd_account.md b/docs/user-guide/commands/argocd_account.md deleted file mode 100644 index 479066e737137..0000000000000 --- a/docs/user-guide/commands/argocd_account.md +++ /dev/null @@ -1,45 +0,0 @@ -## argocd account - -Manage account settings - -``` -argocd account [flags] -``` - -### Options - -``` - -h, --help help for account -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd](argocd.md) - argocd controls a Argo CD server -* [argocd account can-i](argocd_account_can-i.md) - Can I -* [argocd account delete-token](argocd_account_delete-token.md) - Deletes account token -* [argocd account generate-token](argocd_account_generate-token.md) - Generate account token -* [argocd account get](argocd_account_get.md) - Get account details -* [argocd account get-user-info](argocd_account_get-user-info.md) - Get user info -* [argocd account list](argocd_account_list.md) - List accounts -* [argocd account update-password](argocd_account_update-password.md) - Update password - diff --git a/docs/user-guide/commands/argocd_account_can-i.md b/docs/user-guide/commands/argocd_account_can-i.md deleted file mode 100644 index 88016188936db..0000000000000 --- a/docs/user-guide/commands/argocd_account_can-i.md +++ /dev/null @@ -1,56 +0,0 @@ -## argocd account can-i - -Can I - -``` -argocd account can-i ACTION RESOURCE SUBRESOURCE [flags] -``` - -### Examples - -``` - -# Can I sync any app? -argocd account can-i sync applications '*' - -# Can I update a project? -argocd account can-i update projects 'default' - -# Can I create a cluster? -argocd account can-i create clusters '*' - -Actions: [get create update delete sync override] -Resources: [clusters projects applications repositories certificates] - -``` - -### Options - -``` - -h, --help help for can-i -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd account](argocd_account.md) - Manage account settings - diff --git a/docs/user-guide/commands/argocd_account_delete-token.md b/docs/user-guide/commands/argocd_account_delete-token.md deleted file mode 100644 index 0002610705259..0000000000000 --- a/docs/user-guide/commands/argocd_account_delete-token.md +++ /dev/null @@ -1,49 +0,0 @@ -## argocd account delete-token - -Deletes account token - -``` -argocd account delete-token [flags] -``` - -### Examples - -``` -# Delete token of the currently logged in account -argocd account delete-token ID - -# Delete token of the account with the specified name -argocd account generate-token --account -``` - -### Options - -``` - -a, --account string Account name. Defaults to the current account. - -h, --help help for delete-token -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd account](argocd_account.md) - Manage account settings - diff --git a/docs/user-guide/commands/argocd_account_generate-token.md b/docs/user-guide/commands/argocd_account_generate-token.md deleted file mode 100644 index 26840f4320caf..0000000000000 --- a/docs/user-guide/commands/argocd_account_generate-token.md +++ /dev/null @@ -1,51 +0,0 @@ -## argocd account generate-token - -Generate account token - -``` -argocd account generate-token [flags] -``` - -### Examples - -``` -# Generate token for the currently logged in account -argocd account generate-token - -# Generate token for the account with the specified name -argocd account generate-token --account -``` - -### Options - -``` - -a, --account string Account name. Defaults to the current account. - -e, --expires-in string Duration before the token will expire. (Default: No expiration) (default "0s") - -h, --help help for generate-token - --id string Optional token id. Fallback to uuid if not value specified. -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd account](argocd_account.md) - Manage account settings - diff --git a/docs/user-guide/commands/argocd_account_get-user-info.md b/docs/user-guide/commands/argocd_account_get-user-info.md deleted file mode 100644 index 8620a0c6026ec..0000000000000 --- a/docs/user-guide/commands/argocd_account_get-user-info.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd account get-user-info - -Get user info - -``` -argocd account get-user-info [flags] -``` - -### Options - -``` - -h, --help help for get-user-info - -o, --output string Output format. One of: yaml, json -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd account](argocd_account.md) - Manage account settings - diff --git a/docs/user-guide/commands/argocd_account_get.md b/docs/user-guide/commands/argocd_account_get.md deleted file mode 100644 index 1863a6de42d42..0000000000000 --- a/docs/user-guide/commands/argocd_account_get.md +++ /dev/null @@ -1,50 +0,0 @@ -## argocd account get - -Get account details - -``` -argocd account get [flags] -``` - -### Examples - -``` -# Get the currently logged in account details -argocd account get - -# Get details for an account by name -argocd account get --account -``` - -### Options - -``` - -a, --account string Account name. Defaults to the current account. - -h, --help help for get - -o, --output string Output format. One of: json|yaml|wide|name (default "wide") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd account](argocd_account.md) - Manage account settings - diff --git a/docs/user-guide/commands/argocd_account_list.md b/docs/user-guide/commands/argocd_account_list.md deleted file mode 100644 index 41ea0f9af34d2..0000000000000 --- a/docs/user-guide/commands/argocd_account_list.md +++ /dev/null @@ -1,45 +0,0 @@ -## argocd account list - -List accounts - -``` -argocd account list [flags] -``` - -### Examples - -``` -argocd account list -``` - -### Options - -``` - -h, --help help for list - -o, --output string Output format. One of: json|yaml|wide|name (default "wide") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd account](argocd_account.md) - Manage account settings - diff --git a/docs/user-guide/commands/argocd_account_update-password.md b/docs/user-guide/commands/argocd_account_update-password.md deleted file mode 100644 index 6894d5bfaafd4..0000000000000 --- a/docs/user-guide/commands/argocd_account_update-password.md +++ /dev/null @@ -1,41 +0,0 @@ -## argocd account update-password - -Update password - -``` -argocd account update-password [flags] -``` - -### Options - -``` - --account string an account name that should be updated. Defaults to current user account - --current-password string current password you wish to change - -h, --help help for update-password - --new-password string new password you want to update to -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd account](argocd_account.md) - Manage account settings - diff --git a/docs/user-guide/commands/argocd_app.md b/docs/user-guide/commands/argocd_app.md deleted file mode 100644 index 99b534a73339f..0000000000000 --- a/docs/user-guide/commands/argocd_app.md +++ /dev/null @@ -1,70 +0,0 @@ -## argocd app - -Manage applications - -``` -argocd app [flags] -``` - -### Examples - -``` - # List all the applications. - argocd app list - - # Get the details of a application - argocd app get my-app - - # Set an override parameter - argocd app set my-app -p image.tag=v1.0.1 -``` - -### Options - -``` - -h, --help help for app -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd](argocd.md) - argocd controls a Argo CD server -* [argocd app actions](argocd_app_actions.md) - Manage Resource actions -* [argocd app create](argocd_app_create.md) - Create an application -* [argocd app delete](argocd_app_delete.md) - Delete an application -* [argocd app diff](argocd_app_diff.md) - Perform a diff against the target and live state. -* [argocd app edit](argocd_app_edit.md) - Edit application -* [argocd app get](argocd_app_get.md) - Get application details -* [argocd app history](argocd_app_history.md) - Show application deployment history -* [argocd app list](argocd_app_list.md) - List applications -* [argocd app logs](argocd_app_logs.md) - Get logs of application pods -* [argocd app manifests](argocd_app_manifests.md) - Print manifests of an application -* [argocd app patch](argocd_app_patch.md) - Patch application -* [argocd app patch-resource](argocd_app_patch-resource.md) - Patch resource in an application -* [argocd app resources](argocd_app_resources.md) - List resource of application -* [argocd app rollback](argocd_app_rollback.md) - Rollback application to a previous deployed version by History ID -* [argocd app set](argocd_app_set.md) - Set application parameters -* [argocd app sync](argocd_app_sync.md) - Sync an application to its target state -* [argocd app terminate-op](argocd_app_terminate-op.md) - Terminate running operation of an application -* [argocd app unset](argocd_app_unset.md) - Unset application parameters -* [argocd app wait](argocd_app_wait.md) - Wait for an application to reach a synced and healthy state - diff --git a/docs/user-guide/commands/argocd_app_actions.md b/docs/user-guide/commands/argocd_app_actions.md deleted file mode 100644 index e4db9993d861a..0000000000000 --- a/docs/user-guide/commands/argocd_app_actions.md +++ /dev/null @@ -1,40 +0,0 @@ -## argocd app actions - -Manage Resource actions - -``` -argocd app actions [flags] -``` - -### Options - -``` - -h, --help help for actions -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications -* [argocd app actions list](argocd_app_actions_list.md) - Lists available actions on a resource -* [argocd app actions run](argocd_app_actions_run.md) - Runs an available action on resource(s) - diff --git a/docs/user-guide/commands/argocd_app_actions_list.md b/docs/user-guide/commands/argocd_app_actions_list.md deleted file mode 100644 index 5dd8c09bc881d..0000000000000 --- a/docs/user-guide/commands/argocd_app_actions_list.md +++ /dev/null @@ -1,43 +0,0 @@ -## argocd app actions list - -Lists available actions on a resource - -``` -argocd app actions list APPNAME [flags] -``` - -### Options - -``` - --group string Group - -h, --help help for list - --kind string Kind - --namespace string Namespace - -o, --out string Output format. One of: yaml, json - --resource-name string Name of resource -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app actions](argocd_app_actions.md) - Manage Resource actions - diff --git a/docs/user-guide/commands/argocd_app_actions_run.md b/docs/user-guide/commands/argocd_app_actions_run.md deleted file mode 100644 index 6e491d38a8bc6..0000000000000 --- a/docs/user-guide/commands/argocd_app_actions_run.md +++ /dev/null @@ -1,43 +0,0 @@ -## argocd app actions run - -Runs an available action on resource(s) - -``` -argocd app actions run APPNAME ACTION [flags] -``` - -### Options - -``` - --all Indicates whether to run the action on multiple matching resources - --group string Group - -h, --help help for run - --kind string Kind - --namespace string Namespace - --resource-name string Name of resource -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app actions](argocd_app_actions.md) - Manage Resource actions - diff --git a/docs/user-guide/commands/argocd_app_create.md b/docs/user-guide/commands/argocd_app_create.md deleted file mode 100644 index 5e26cae24d00f..0000000000000 --- a/docs/user-guide/commands/argocd_app_create.md +++ /dev/null @@ -1,106 +0,0 @@ -## argocd app create - -Create an application - -``` -argocd app create APPNAME [flags] -``` - -### Examples - -``` - - # Create a directory app - argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --directory-recurse - - # Create a Jsonnet app - argocd app create jsonnet-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path jsonnet-guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --jsonnet-ext-str replicas=2 - - # Create a Helm app - argocd app create helm-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path helm-guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --helm-set replicaCount=2 - - # Create a Helm app from a Helm repo - argocd app create nginx-ingress --repo https://kubernetes-charts.storage.googleapis.com --helm-chart nginx-ingress --revision 1.24.3 --dest-namespace default --dest-server https://kubernetes.default.svc - - # Create a Kustomize app - argocd app create kustomize-guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path kustomize-guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --kustomize-image gcr.io/heptio-images/ks-guestbook-demo:0.1 - - # Create a app using a custom tool: - argocd app create ksane --repo https://github.com/argoproj/argocd-example-apps.git --path plugins/kasane --dest-namespace default --dest-server https://kubernetes.default.svc --config-management-plugin kasane - -``` - -### Options - -``` - --allow-empty Set allow zero live resources when sync is automated - --auto-prune Set automatic pruning when sync is automated - --config-management-plugin string Config management plugin name - --dest-name string K8s cluster Name (e.g. minikube) - --dest-namespace string K8s target namespace (overrides the namespace specified in the ksonnet app.yaml) - --dest-server string K8s cluster URL (e.g. https://kubernetes.default.svc) - --directory-exclude string Set glob expression used to exclude files from application source path - --directory-include string Set glob expression used to include files from application source path - --directory-recurse Recurse directory - --env string Application environment to monitor - -f, --file string Filename or URL to Kubernetes manifests for the app - --helm-chart string Helm Chart name - --helm-set stringArray Helm set values on the command line (can be repeated to set several values: --helm-set key1=val1 --helm-set key2=val2) - --helm-set-file stringArray Helm set values from respective files specified via the command line (can be repeated to set several values: --helm-set-file key1=path1 --helm-set-file key2=path2) - --helm-set-string stringArray Helm set STRING values on the command line (can be repeated to set several values: --helm-set-string key1=val1 --helm-set-string key2=val2) - --helm-version string Helm version - -h, --help help for create - --jsonnet-ext-var-code stringArray Jsonnet ext var - --jsonnet-ext-var-str stringArray Jsonnet string ext var - --jsonnet-libs stringArray Additional jsonnet libs (prefixed by repoRoot) - --jsonnet-tla-code stringArray Jsonnet top level code arguments - --jsonnet-tla-str stringArray Jsonnet top level string arguments - --kustomize-common-annotation stringArray Set common labels in Kustomize - --kustomize-common-label stringArray Set common labels in Kustomize - --kustomize-image stringArray Kustomize images (e.g. --kustomize-image node:8.15.0 --kustomize-image mysql=mariadb,alpine@sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d) - --kustomize-version string Kustomize version - -l, --label stringArray Labels to apply to the app - --name string A name for the app, ignored if a file is set (DEPRECATED) - --nameprefix string Kustomize nameprefix - --namesuffix string Kustomize namesuffix - -p, --parameter stringArray set a parameter override (e.g. -p guestbook=image=example/guestbook:latest) - --path string Path in repository to the app directory, ignored if a file is set - --plugin-env stringArray Additional plugin envs - --project string Application project name - --release-name string Helm release-name - --repo string Repository URL, ignored if a file is set - --revision string The tracking source branch, tag, commit or Helm chart version the application will sync to - --revision-history-limit int How many items to keep in revision history (default 10) - --self-heal Set self healing when sync is automated - --sync-option Prune=false Add or remove a sync option, e.g add Prune=false. Remove using `!` prefix, e.g. `!Prune=false` - --sync-policy string Set the sync policy (one of: none, automated (aliases of automated: auto, automatic)) - --upsert Allows to override application with the same name even if supplied application spec is different from existing spec - --validate Validation of repo and cluster (default true) - --values stringArray Helm values file(s) to use - --values-literal-file string Filename or URL to import as a literal Helm values block -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_delete.md b/docs/user-guide/commands/argocd_app_delete.md deleted file mode 100644 index a48125a354fce..0000000000000 --- a/docs/user-guide/commands/argocd_app_delete.md +++ /dev/null @@ -1,40 +0,0 @@ -## argocd app delete - -Delete an application - -``` -argocd app delete APPNAME [flags] -``` - -### Options - -``` - --cascade Perform a cascaded deletion of all application resources (default true) - -h, --help help for delete - -y, --yes Turn off prompting to confirm cascaded deletion of application resources -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_diff.md b/docs/user-guide/commands/argocd_app_diff.md deleted file mode 100644 index 38f4e831d9491..0000000000000 --- a/docs/user-guide/commands/argocd_app_diff.md +++ /dev/null @@ -1,49 +0,0 @@ -## argocd app diff - -Perform a diff against the target and live state. - -### Synopsis - -Perform a diff against the target and live state. -Uses 'diff' to render the difference. KUBECTL_EXTERNAL_DIFF environment variable can be used to select your own diff tool. -Returns the following exit codes: 2 on general errors, 1 when a diff is found, and 0 when no diff is found - -``` -argocd app diff APPNAME [flags] -``` - -### Options - -``` - --hard-refresh Refresh application data as well as target manifests cache - -h, --help help for diff - --local string Compare live app to a local manifests - --local-repo-root string Path to the repository root. Used together with --local allows setting the repository root (default "/") - --refresh Refresh application data when retrieving - --revision string Compare live app to a particular revision -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_edit.md b/docs/user-guide/commands/argocd_app_edit.md deleted file mode 100644 index cdd660ea82ca4..0000000000000 --- a/docs/user-guide/commands/argocd_app_edit.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd app edit - -Edit application - -``` -argocd app edit APPNAME [flags] -``` - -### Options - -``` - -h, --help help for edit -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_get.md b/docs/user-guide/commands/argocd_app_get.md deleted file mode 100644 index 2a61131731472..0000000000000 --- a/docs/user-guide/commands/argocd_app_get.md +++ /dev/null @@ -1,43 +0,0 @@ -## argocd app get - -Get application details - -``` -argocd app get APPNAME [flags] -``` - -### Options - -``` - --hard-refresh Refresh application data as well as target manifests cache - -h, --help help for get - -o, --output string Output format. One of: json|yaml|wide (default "wide") - --refresh Refresh application data when retrieving - --show-operation Show application operation - --show-params Show application parameters and overrides -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_history.md b/docs/user-guide/commands/argocd_app_history.md deleted file mode 100644 index f17681549438b..0000000000000 --- a/docs/user-guide/commands/argocd_app_history.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd app history - -Show application deployment history - -``` -argocd app history APPNAME [flags] -``` - -### Options - -``` - -h, --help help for history - -o, --output string Output format. One of: wide|id (default "wide") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_list.md b/docs/user-guide/commands/argocd_app_list.md deleted file mode 100644 index 79773e37e276b..0000000000000 --- a/docs/user-guide/commands/argocd_app_list.md +++ /dev/null @@ -1,51 +0,0 @@ -## argocd app list - -List applications - -``` -argocd app list [flags] -``` - -### Examples - -``` - # List all apps - argocd app list - - # List apps by label, in this example we listing apps that are children of another app (aka app-of-apps) - argocd app list -l app.kubernetes.io/instance=my-app -``` - -### Options - -``` - -h, --help help for list - -o, --output string Output format. One of: wide|name|json|yaml (default "wide") - -p, --project stringArray Filter by project name - -l, --selector string List apps by label -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_logs.md b/docs/user-guide/commands/argocd_app_logs.md deleted file mode 100644 index 6e025259e4bf3..0000000000000 --- a/docs/user-guide/commands/argocd_app_logs.md +++ /dev/null @@ -1,47 +0,0 @@ -## argocd app logs - -Get logs of application pods - -``` -argocd app logs APPNAME [flags] -``` - -### Options - -``` - --filter string Show logs contain this string - --follow Specify if the logs should be streamed - --group string Resource group - -h, --help help for logs - --kind string Resource kind - --name string Resource name - --namespace string Resource namespace - --since-seconds int A relative time in seconds before the current time from which to show logs - --tail int The number of lines from the end of the logs to show - --until-time string Show logs until this time -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_manifests.md b/docs/user-guide/commands/argocd_app_manifests.md deleted file mode 100644 index 6b79eea271f13..0000000000000 --- a/docs/user-guide/commands/argocd_app_manifests.md +++ /dev/null @@ -1,40 +0,0 @@ -## argocd app manifests - -Print manifests of an application - -``` -argocd app manifests APPNAME [flags] -``` - -### Options - -``` - -h, --help help for manifests - --revision string Show manifests at a specific revision - --source string Source of manifests. One of: live|git (default "git") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_patch-resource.md b/docs/user-guide/commands/argocd_app_patch-resource.md deleted file mode 100644 index 3e98d912d5937..0000000000000 --- a/docs/user-guide/commands/argocd_app_patch-resource.md +++ /dev/null @@ -1,45 +0,0 @@ -## argocd app patch-resource - -Patch resource in an application - -``` -argocd app patch-resource APPNAME [flags] -``` - -### Options - -``` - --all Indicates whether to patch multiple matching of resources - --group string Group - -h, --help help for patch-resource - --kind string Kind - --namespace string Namespace - --patch string Patch - --patch-type string Which Patching strategy to use: 'application/json-patch+json', 'application/merge-patch+json', or 'application/strategic-merge-patch+json'. Defaults to 'application/merge-patch+json' (default "application/merge-patch+json") - --resource-name string Name of resource -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_patch.md b/docs/user-guide/commands/argocd_app_patch.md deleted file mode 100644 index a2cf869cc99ce..0000000000000 --- a/docs/user-guide/commands/argocd_app_patch.md +++ /dev/null @@ -1,49 +0,0 @@ -## argocd app patch - -Patch application - -### Synopsis - -Examples: - # Update an application's source path using json patch - argocd app patch myapplication --patch='[{"op": "replace", "path": "/spec/source/path", "value": "newPath"}]' --type json - - # Update an application's repository target revision using merge patch - argocd app patch myapplication --patch '{"spec": { "source": { "targetRevision": "master" } }}' --type merge - -``` -argocd app patch APPNAME [flags] -``` - -### Options - -``` - -h, --help help for patch - --patch string Patch body - --type string The type of patch being provided; one of [json merge] (default "json") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_resources.md b/docs/user-guide/commands/argocd_app_resources.md deleted file mode 100644 index 730084a9611dc..0000000000000 --- a/docs/user-guide/commands/argocd_app_resources.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd app resources - -List resource of application - -``` -argocd app resources APPNAME [flags] -``` - -### Options - -``` - -h, --help help for resources - --orphaned Lists only orphaned resources -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_rollback.md b/docs/user-guide/commands/argocd_app_rollback.md deleted file mode 100644 index 8a39389153c9d..0000000000000 --- a/docs/user-guide/commands/argocd_app_rollback.md +++ /dev/null @@ -1,40 +0,0 @@ -## argocd app rollback - -Rollback application to a previous deployed version by History ID - -``` -argocd app rollback APPNAME ID [flags] -``` - -### Options - -``` - -h, --help help for rollback - --prune Allow deleting unexpected resources - --timeout uint Time out after this many seconds -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_set.md b/docs/user-guide/commands/argocd_app_set.md deleted file mode 100644 index 0cbe0404f4948..0000000000000 --- a/docs/user-guide/commands/argocd_app_set.md +++ /dev/null @@ -1,78 +0,0 @@ -## argocd app set - -Set application parameters - -``` -argocd app set APPNAME [flags] -``` - -### Options - -``` - --allow-empty Set allow zero live resources when sync is automated - --auto-prune Set automatic pruning when sync is automated - --config-management-plugin string Config management plugin name - --dest-name string K8s cluster Name (e.g. minikube) - --dest-namespace string K8s target namespace (overrides the namespace specified in the ksonnet app.yaml) - --dest-server string K8s cluster URL (e.g. https://kubernetes.default.svc) - --directory-exclude string Set glob expression used to exclude files from application source path - --directory-include string Set glob expression used to include files from application source path - --directory-recurse Recurse directory - --env string Application environment to monitor - --helm-chart string Helm Chart name - --helm-set stringArray Helm set values on the command line (can be repeated to set several values: --helm-set key1=val1 --helm-set key2=val2) - --helm-set-file stringArray Helm set values from respective files specified via the command line (can be repeated to set several values: --helm-set-file key1=path1 --helm-set-file key2=path2) - --helm-set-string stringArray Helm set STRING values on the command line (can be repeated to set several values: --helm-set-string key1=val1 --helm-set-string key2=val2) - --helm-version string Helm version - -h, --help help for set - --jsonnet-ext-var-code stringArray Jsonnet ext var - --jsonnet-ext-var-str stringArray Jsonnet string ext var - --jsonnet-libs stringArray Additional jsonnet libs (prefixed by repoRoot) - --jsonnet-tla-code stringArray Jsonnet top level code arguments - --jsonnet-tla-str stringArray Jsonnet top level string arguments - --kustomize-common-annotation stringArray Set common labels in Kustomize - --kustomize-common-label stringArray Set common labels in Kustomize - --kustomize-image stringArray Kustomize images (e.g. --kustomize-image node:8.15.0 --kustomize-image mysql=mariadb,alpine@sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d) - --kustomize-version string Kustomize version - --nameprefix string Kustomize nameprefix - --namesuffix string Kustomize namesuffix - -p, --parameter stringArray set a parameter override (e.g. -p guestbook=image=example/guestbook:latest) - --path string Path in repository to the app directory, ignored if a file is set - --plugin-env stringArray Additional plugin envs - --project string Application project name - --release-name string Helm release-name - --repo string Repository URL, ignored if a file is set - --revision string The tracking source branch, tag, commit or Helm chart version the application will sync to - --revision-history-limit int How many items to keep in revision history (default 10) - --self-heal Set self healing when sync is automated - --sync-option Prune=false Add or remove a sync option, e.g add Prune=false. Remove using `!` prefix, e.g. `!Prune=false` - --sync-policy string Set the sync policy (one of: none, automated (aliases of automated: auto, automatic)) - --validate Validation of repo and cluster (default true) - --values stringArray Helm values file(s) to use - --values-literal-file string Filename or URL to import as a literal Helm values block -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_sync.md b/docs/user-guide/commands/argocd_app_sync.md deleted file mode 100644 index 9ce3fca3b5e7a..0000000000000 --- a/docs/user-guide/commands/argocd_app_sync.md +++ /dev/null @@ -1,75 +0,0 @@ -## argocd app sync - -Sync an application to its target state - -``` -argocd app sync [APPNAME... | -l selector] [flags] -``` - -### Examples - -``` - # Sync an app - argocd app sync my-app - - # Sync multiples apps - argocd app sync my-app other-app - - # Sync apps by label, in this example we sync apps that are children of another app (aka app-of-apps) - argocd app sync -l app.kubernetes.io/instance=my-app - - # Sync a specific resource - # Resource should be formatted as GROUP:KIND:NAME. If no GROUP is specified then :KIND:NAME - argocd app sync my-app --resource :Service:my-service - argocd app sync my-app --resource argoproj.io:Rollout:my-rollout - # Specify namespace if the application has resources with the same name in different namespaces - argocd app sync my-app --resource argoproj.io:Rollout:my-namespace/my-rollout -``` - -### Options - -``` - --async Do not wait for application to sync before continuing - --dry-run Preview apply without affecting cluster - --force Use a force apply - -h, --help help for sync - --info stringArray A list of key-value pairs during sync process. These infos will be persisted in app. - --label stringArray Sync only specific resources with a label. This option may be specified repeatedly. - --local string Path to a local directory. When this flag is present no git queries will be made - --local-repo-root string Path to the repository root. Used together with --local allows setting the repository root (default "/") - --prune Allow deleting unexpected resources - --resource stringArray Sync only specific resources as GROUP:KIND:NAME. Fields may be blank. This option may be specified repeatedly - --retry-backoff-duration duration Retry backoff base duration. Input needs to be a duration (e.g. 2m, 1h) (default 5s) - --retry-backoff-factor int Factor multiplies the base duration after each failed retry (default 2) - --retry-backoff-max-duration duration Max retry backoff duration. Input needs to be a duration (e.g. 2m, 1h) (default 3m0s) - --retry-limit int Max number of allowed sync retries - --revision string Sync to a specific revision. Preserves parameter overrides - -l, --selector string Sync apps that match this label - --strategy string Sync strategy (one of: apply|hook) - --timeout uint Time out after this many seconds -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_terminate-op.md b/docs/user-guide/commands/argocd_app_terminate-op.md deleted file mode 100644 index 210d038aa08a1..0000000000000 --- a/docs/user-guide/commands/argocd_app_terminate-op.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd app terminate-op - -Terminate running operation of an application - -``` -argocd app terminate-op APPNAME [flags] -``` - -### Options - -``` - -h, --help help for terminate-op -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_unset.md b/docs/user-guide/commands/argocd_app_unset.md deleted file mode 100644 index 082c8d283cb08..0000000000000 --- a/docs/user-guide/commands/argocd_app_unset.md +++ /dev/null @@ -1,58 +0,0 @@ -## argocd app unset - -Unset application parameters - -``` -argocd app unset APPNAME parameters [flags] -``` - -### Examples - -``` - # Unset kustomize override kustomize image - argocd app unset my-app --kustomize-image=alpine - - # Unset kustomize override prefix - argocd app unset my-app --namesuffix - - # Unset parameter override - argocd app unset my-app -p COMPONENT=PARAM -``` - -### Options - -``` - -h, --help help for unset - --kustomize-image stringArray Kustomize images name (e.g. --kustomize-image node --kustomize-image mysql) - --kustomize-version Kustomize version - --nameprefix Kustomize nameprefix - --namesuffix Kustomize namesuffix - -p, --parameter stringArray Unset a parameter override (e.g. -p guestbook=image) - --values stringArray Unset one or more Helm values files - --values-literal Unset literal Helm values block -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_app_wait.md b/docs/user-guide/commands/argocd_app_wait.md deleted file mode 100644 index 05bad83c62d7c..0000000000000 --- a/docs/user-guide/commands/argocd_app_wait.md +++ /dev/null @@ -1,58 +0,0 @@ -## argocd app wait - -Wait for an application to reach a synced and healthy state - -``` -argocd app wait [APPNAME.. | -l selector] [flags] -``` - -### Examples - -``` - # Wait for an app - argocd app wait my-app - - # Wait for multiple apps - argocd app wait my-app other-app - - # Wait for apps by label, in this example we waiting for apps that are children of another app (aka app-of-apps) - argocd app wait -l app.kubernetes.io/instance=apps -``` - -### Options - -``` - --health Wait for health - -h, --help help for wait - --operation Wait for pending operations - --resource stringArray Sync only specific resources as GROUP:KIND:NAME. Fields may be blank. This option may be specified repeatedly - -l, --selector string Wait for apps by label - --suspended Wait for suspended - --sync Wait for sync - --timeout uint Time out after this many seconds -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd app](argocd_app.md) - Manage applications - diff --git a/docs/user-guide/commands/argocd_cert.md b/docs/user-guide/commands/argocd_cert.md deleted file mode 100644 index 9c3a81d21ea74..0000000000000 --- a/docs/user-guide/commands/argocd_cert.md +++ /dev/null @@ -1,65 +0,0 @@ -## argocd cert - -Manage repository certificates and SSH known hosts entries - -``` -argocd cert [flags] -``` - -### Examples - -``` - # Add a TLS certificate for cd.example.com to ArgoCD cert store from a file - argocd cert add-tls --from ~/mycert.pem cd.example.com - - # Add a TLS certificate for cd.example.com to ArgoCD via stdin - cat ~/mycert.pem | argocd cert add-tls cd.example.com - - # Add SSH known host entries for cd.example.com to ArgoCD by scanning host - ssh-keyscan cd.example.com | argocd cert add-ssh --batch - - # List all known TLS certificates - argocd cert list --cert-type https - - # Remove all TLS certificates for cd.example.com - argocd cert rm --cert-type https cd.example.com - - # Remove all certificates and SSH known host entries for cd.example.com - argocd cert rm cd.example.com - -``` - -### Options - -``` - -h, --help help for cert -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd](argocd.md) - argocd controls a Argo CD server -* [argocd cert add-ssh](argocd_cert_add-ssh.md) - Add SSH known host entries for repository servers -* [argocd cert add-tls](argocd_cert_add-tls.md) - Add TLS certificate data for connecting to repository server SERVERNAME -* [argocd cert list](argocd_cert_list.md) - List configured certificates -* [argocd cert rm](argocd_cert_rm.md) - Remove certificate of TYPE for REPOSERVER - diff --git a/docs/user-guide/commands/argocd_cert_add-ssh.md b/docs/user-guide/commands/argocd_cert_add-ssh.md deleted file mode 100644 index 4a15deada4b9c..0000000000000 --- a/docs/user-guide/commands/argocd_cert_add-ssh.md +++ /dev/null @@ -1,41 +0,0 @@ -## argocd cert add-ssh - -Add SSH known host entries for repository servers - -``` -argocd cert add-ssh --batch [flags] -``` - -### Options - -``` - --batch Perform batch processing by reading in SSH known hosts data (mandatory flag) - --from string Read SSH known hosts data from file (default is to read from stdin) - -h, --help help for add-ssh - --upsert Replace existing SSH server public host keys if key is different in input -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd cert](argocd_cert.md) - Manage repository certificates and SSH known hosts entries - diff --git a/docs/user-guide/commands/argocd_cert_add-tls.md b/docs/user-guide/commands/argocd_cert_add-tls.md deleted file mode 100644 index d6019c9143f9e..0000000000000 --- a/docs/user-guide/commands/argocd_cert_add-tls.md +++ /dev/null @@ -1,40 +0,0 @@ -## argocd cert add-tls - -Add TLS certificate data for connecting to repository server SERVERNAME - -``` -argocd cert add-tls SERVERNAME [flags] -``` - -### Options - -``` - --from string read TLS certificate data from file (default is to read from stdin) - -h, --help help for add-tls - --upsert Replace existing TLS certificate if certificate is different in input -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd cert](argocd_cert.md) - Manage repository certificates and SSH known hosts entries - diff --git a/docs/user-guide/commands/argocd_cert_list.md b/docs/user-guide/commands/argocd_cert_list.md deleted file mode 100644 index db7747d6a8295..0000000000000 --- a/docs/user-guide/commands/argocd_cert_list.md +++ /dev/null @@ -1,42 +0,0 @@ -## argocd cert list - -List configured certificates - -``` -argocd cert list [flags] -``` - -### Options - -``` - --cert-type string only list certificates of given type, valid: 'ssh','https' - -h, --help help for list - --hostname-pattern string only list certificates for hosts matching given glob-pattern - -o, --output string Output format. One of: json|yaml|wide (default "wide") - --sort string set display sort order for output format wide. One of: hostname|type -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd cert](argocd_cert.md) - Manage repository certificates and SSH known hosts entries - diff --git a/docs/user-guide/commands/argocd_cert_rm.md b/docs/user-guide/commands/argocd_cert_rm.md deleted file mode 100644 index 0c825009964bd..0000000000000 --- a/docs/user-guide/commands/argocd_cert_rm.md +++ /dev/null @@ -1,40 +0,0 @@ -## argocd cert rm - -Remove certificate of TYPE for REPOSERVER - -``` -argocd cert rm REPOSERVER [flags] -``` - -### Options - -``` - --cert-sub-type string Only remove certs of given sub-type (only for ssh) - --cert-type string Only remove certs of given type (ssh, https) - -h, --help help for rm -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd cert](argocd_cert.md) - Manage repository certificates and SSH known hosts entries - diff --git a/docs/user-guide/commands/argocd_cli.md b/docs/user-guide/commands/argocd_cli.md deleted file mode 100644 index 127e6733acb22..0000000000000 --- a/docs/user-guide/commands/argocd_cli.md +++ /dev/null @@ -1,3 +0,0 @@ -# ArgoCD Command Reference - -ArgoCD command reference can be found [here](./argocd.md). \ No newline at end of file diff --git a/docs/user-guide/commands/argocd_cluster.md b/docs/user-guide/commands/argocd_cluster.md deleted file mode 100644 index 72d50f2d07e22..0000000000000 --- a/docs/user-guide/commands/argocd_cluster.md +++ /dev/null @@ -1,60 +0,0 @@ -## argocd cluster - -Manage cluster credentials - -``` -argocd cluster [flags] -``` - -### Examples - -``` - # List all known clusters in JSON format: - argocd cluster list -o json - - # Add a target cluster configuration to ArgoCD. The context must exist in your kubectl config: - argocd cluster add example-cluster - - # Get specific details about a cluster in plain text (wide) format: - argocd cluster get example-cluster -o wide - - # Remove a target cluster context from ArgoCD - argocd cluster rm example-cluster - -``` - -### Options - -``` - -h, --help help for cluster -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd](argocd.md) - argocd controls a Argo CD server -* [argocd cluster add](argocd_cluster_add.md) - argocd cluster add CONTEXT -* [argocd cluster get](argocd_cluster_get.md) - Get cluster information -* [argocd cluster list](argocd_cluster_list.md) - List configured clusters -* [argocd cluster rm](argocd_cluster_rm.md) - Remove cluster credentials -* [argocd cluster rotate-auth](argocd_cluster_rotate-auth.md) - argocd cluster rotate-auth SERVER - diff --git a/docs/user-guide/commands/argocd_cluster_add.md b/docs/user-guide/commands/argocd_cluster_add.md deleted file mode 100644 index aa951766328eb..0000000000000 --- a/docs/user-guide/commands/argocd_cluster_add.md +++ /dev/null @@ -1,53 +0,0 @@ -## argocd cluster add - -argocd cluster add CONTEXT - -``` -argocd cluster add CONTEXT [flags] -``` - -### Options - -``` - --aws-cluster-name string AWS Cluster name if set then aws cli eks token command will be used to access cluster - --aws-role-arn string Optional AWS role arn. If set then AWS IAM Authenticator assumes a role to perform cluster operations instead of the default AWS credential provider chain. - --exec-command string Command to run to provide client credentials to the cluster. You may need to build a custom ArgoCD image to ensure the command is available at runtime. - --exec-command-api-version string Preferred input version of the ExecInfo for the --exec-command executable - --exec-command-args stringArray Arguments to supply to the --exec-command executable - --exec-command-env stringToString Environment vars to set when running the --exec-command executable (default []) - --exec-command-install-hint string Text shown to the user when the --exec-command executable doesn't seem to be present - -h, --help help for add - --in-cluster Indicates Argo CD resides inside this cluster and should connect using the internal k8s hostname (kubernetes.default.svc) - --kubeconfig string use a particular kubeconfig file - --name string Overwrite the cluster name - --namespace stringArray List of namespaces which are allowed to manage - --service-account string System namespace service account to use for kubernetes resource management. If not set then default "argocd-manager" SA will be created - --shard int Cluster shard number; inferred from hostname if not set (default -1) - --system-namespace string Use different system namespace (default "kube-system") - --upsert Override an existing cluster with the same name even if the spec differs -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd cluster](argocd_cluster.md) - Manage cluster credentials - diff --git a/docs/user-guide/commands/argocd_cluster_get.md b/docs/user-guide/commands/argocd_cluster_get.md deleted file mode 100644 index d78648a6aa936..0000000000000 --- a/docs/user-guide/commands/argocd_cluster_get.md +++ /dev/null @@ -1,45 +0,0 @@ -## argocd cluster get - -Get cluster information - -``` -argocd cluster get SERVER [flags] -``` - -### Examples - -``` -argocd cluster get https://12.34.567.89 -``` - -### Options - -``` - -h, --help help for get - -o, --output string Output format. One of: json|yaml|wide|server (default "yaml") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd cluster](argocd_cluster.md) - Manage cluster credentials - diff --git a/docs/user-guide/commands/argocd_cluster_list.md b/docs/user-guide/commands/argocd_cluster_list.md deleted file mode 100644 index 42aced59035d7..0000000000000 --- a/docs/user-guide/commands/argocd_cluster_list.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd cluster list - -List configured clusters - -``` -argocd cluster list [flags] -``` - -### Options - -``` - -h, --help help for list - -o, --output string Output format. One of: json|yaml|wide|server (default "wide") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd cluster](argocd_cluster.md) - Manage cluster credentials - diff --git a/docs/user-guide/commands/argocd_cluster_rm.md b/docs/user-guide/commands/argocd_cluster_rm.md deleted file mode 100644 index ba147784d3ff1..0000000000000 --- a/docs/user-guide/commands/argocd_cluster_rm.md +++ /dev/null @@ -1,44 +0,0 @@ -## argocd cluster rm - -Remove cluster credentials - -``` -argocd cluster rm SERVER [flags] -``` - -### Examples - -``` -argocd cluster rm https://12.34.567.89 -``` - -### Options - -``` - -h, --help help for rm -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd cluster](argocd_cluster.md) - Manage cluster credentials - diff --git a/docs/user-guide/commands/argocd_cluster_rotate-auth.md b/docs/user-guide/commands/argocd_cluster_rotate-auth.md deleted file mode 100644 index a072b336a91aa..0000000000000 --- a/docs/user-guide/commands/argocd_cluster_rotate-auth.md +++ /dev/null @@ -1,44 +0,0 @@ -## argocd cluster rotate-auth - -argocd cluster rotate-auth SERVER - -``` -argocd cluster rotate-auth SERVER [flags] -``` - -### Examples - -``` -argocd cluster rotate-auth https://12.34.567.89 -``` - -### Options - -``` - -h, --help help for rotate-auth -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd cluster](argocd_cluster.md) - Manage cluster credentials - diff --git a/docs/user-guide/commands/argocd_completion.md b/docs/user-guide/commands/argocd_completion.md deleted file mode 100644 index 28f87994330b5..0000000000000 --- a/docs/user-guide/commands/argocd_completion.md +++ /dev/null @@ -1,51 +0,0 @@ -## argocd completion - -output shell completion code for the specified shell (bash or zsh) - -### Synopsis - -Write bash or zsh shell completion code to standard output. - -For bash, ensure you have bash completions installed and enabled. -To access completions in your current shell, run -$ source <(argocd completion bash) -Alternatively, write it to a file and source in .bash_profile - -For zsh, output to a file in a directory referenced by the $fpath shell -variable. - - -``` -argocd completion SHELL [flags] -``` - -### Options - -``` - -h, --help help for completion -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd](argocd.md) - argocd controls a Argo CD server - diff --git a/docs/user-guide/commands/argocd_context.md b/docs/user-guide/commands/argocd_context.md deleted file mode 100644 index dbd1b57c25d22..0000000000000 --- a/docs/user-guide/commands/argocd_context.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd context - -Switch between contexts - -``` -argocd context [CONTEXT] [flags] -``` - -### Options - -``` - --delete Delete the context instead of switching to it - -h, --help help for context -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd](argocd.md) - argocd controls a Argo CD server - diff --git a/docs/user-guide/commands/argocd_gpg.md b/docs/user-guide/commands/argocd_gpg.md deleted file mode 100644 index 7ee841c861fba..0000000000000 --- a/docs/user-guide/commands/argocd_gpg.md +++ /dev/null @@ -1,42 +0,0 @@ -## argocd gpg - -Manage GPG keys used for signature verification - -``` -argocd gpg [flags] -``` - -### Options - -``` - -h, --help help for gpg -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd](argocd.md) - argocd controls a Argo CD server -* [argocd gpg add](argocd_gpg_add.md) - Adds a GPG public key to the server's keyring -* [argocd gpg get](argocd_gpg_get.md) - Get the GPG public key with ID from the server -* [argocd gpg list](argocd_gpg_list.md) - List configured GPG public keys -* [argocd gpg rm](argocd_gpg_rm.md) - Removes a GPG public key from the server's keyring - diff --git a/docs/user-guide/commands/argocd_gpg_add.md b/docs/user-guide/commands/argocd_gpg_add.md deleted file mode 100644 index a48de2d0d0eb0..0000000000000 --- a/docs/user-guide/commands/argocd_gpg_add.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd gpg add - -Adds a GPG public key to the server's keyring - -``` -argocd gpg add [flags] -``` - -### Options - -``` - -f, --from string Path to the file that contains the GPG public key to import - -h, --help help for add -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd gpg](argocd_gpg.md) - Manage GPG keys used for signature verification - diff --git a/docs/user-guide/commands/argocd_gpg_get.md b/docs/user-guide/commands/argocd_gpg_get.md deleted file mode 100644 index 981de9ac89aab..0000000000000 --- a/docs/user-guide/commands/argocd_gpg_get.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd gpg get - -Get the GPG public key with ID from the server - -``` -argocd gpg get KEYID [flags] -``` - -### Options - -``` - -h, --help help for get - -o, --output string Output format. One of: json|yaml|wide (default "wide") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd gpg](argocd_gpg.md) - Manage GPG keys used for signature verification - diff --git a/docs/user-guide/commands/argocd_gpg_list.md b/docs/user-guide/commands/argocd_gpg_list.md deleted file mode 100644 index a80120f97b8a2..0000000000000 --- a/docs/user-guide/commands/argocd_gpg_list.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd gpg list - -List configured GPG public keys - -``` -argocd gpg list [flags] -``` - -### Options - -``` - -h, --help help for list - -o, --output string Output format. One of: json|yaml|wide (default "wide") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd gpg](argocd_gpg.md) - Manage GPG keys used for signature verification - diff --git a/docs/user-guide/commands/argocd_gpg_rm.md b/docs/user-guide/commands/argocd_gpg_rm.md deleted file mode 100644 index ff759077d37f9..0000000000000 --- a/docs/user-guide/commands/argocd_gpg_rm.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd gpg rm - -Removes a GPG public key from the server's keyring - -``` -argocd gpg rm KEYID [flags] -``` - -### Options - -``` - -h, --help help for rm -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd gpg](argocd_gpg.md) - Manage GPG keys used for signature verification - diff --git a/docs/user-guide/commands/argocd_login.md b/docs/user-guide/commands/argocd_login.md deleted file mode 100644 index 9508214bf35d0..0000000000000 --- a/docs/user-guide/commands/argocd_login.md +++ /dev/null @@ -1,47 +0,0 @@ -## argocd login - -Log in to Argo CD - -### Synopsis - -Log in to Argo CD - -``` -argocd login SERVER [flags] -``` - -### Options - -``` - -h, --help help for login - --name string name to use for the context - --password string the password of an account to authenticate - --sso perform SSO login - --sso-port int port to run local OAuth2 login application (default 8085) - --username string the username of an account to authenticate -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd](argocd.md) - argocd controls a Argo CD server - diff --git a/docs/user-guide/commands/argocd_logout.md b/docs/user-guide/commands/argocd_logout.md deleted file mode 100644 index f251ebadec32c..0000000000000 --- a/docs/user-guide/commands/argocd_logout.md +++ /dev/null @@ -1,42 +0,0 @@ -## argocd logout - -Log out from Argo CD - -### Synopsis - -Log out from Argo CD - -``` -argocd logout CONTEXT [flags] -``` - -### Options - -``` - -h, --help help for logout -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd](argocd.md) - argocd controls a Argo CD server - diff --git a/docs/user-guide/commands/argocd_proj.md b/docs/user-guide/commands/argocd_proj.md deleted file mode 100644 index c514e0dfc58b3..0000000000000 --- a/docs/user-guide/commands/argocd_proj.md +++ /dev/null @@ -1,58 +0,0 @@ -## argocd proj - -Manage projects - -``` -argocd proj [flags] -``` - -### Options - -``` - -h, --help help for proj -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd](argocd.md) - argocd controls a Argo CD server -* [argocd proj add-destination](argocd_proj_add-destination.md) - Add project destination -* [argocd proj add-orphaned-ignore](argocd_proj_add-orphaned-ignore.md) - Add a resource to orphaned ignore list -* [argocd proj add-signature-key](argocd_proj_add-signature-key.md) - Add GnuPG signature key to project -* [argocd proj add-source](argocd_proj_add-source.md) - Add project source repository -* [argocd proj allow-cluster-resource](argocd_proj_allow-cluster-resource.md) - Adds a cluster-scoped API resource to the allow list and removes it from deny list -* [argocd proj allow-namespace-resource](argocd_proj_allow-namespace-resource.md) - Removes a namespaced API resource from the deny list or add a namespaced API resource to the allow list -* [argocd proj create](argocd_proj_create.md) - Create a project -* [argocd proj delete](argocd_proj_delete.md) - Delete project -* [argocd proj deny-cluster-resource](argocd_proj_deny-cluster-resource.md) - Removes a cluster-scoped API resource from the allow list and adds it to deny list -* [argocd proj deny-namespace-resource](argocd_proj_deny-namespace-resource.md) - Adds a namespaced API resource to the deny list or removes a namespaced API resource from the allow list -* [argocd proj edit](argocd_proj_edit.md) - Edit project -* [argocd proj get](argocd_proj_get.md) - Get project details -* [argocd proj list](argocd_proj_list.md) - List projects -* [argocd proj remove-destination](argocd_proj_remove-destination.md) - Remove project destination -* [argocd proj remove-orphaned-ignore](argocd_proj_remove-orphaned-ignore.md) - Remove a resource from orphaned ignore list -* [argocd proj remove-signature-key](argocd_proj_remove-signature-key.md) - Remove GnuPG signature key from project -* [argocd proj remove-source](argocd_proj_remove-source.md) - Remove project source repository -* [argocd proj role](argocd_proj_role.md) - Manage a project's roles -* [argocd proj set](argocd_proj_set.md) - Set project parameters -* [argocd proj windows](argocd_proj_windows.md) - Manage a project's sync windows - diff --git a/docs/user-guide/commands/argocd_proj_add-destination.md b/docs/user-guide/commands/argocd_proj_add-destination.md deleted file mode 100644 index 3330e66d7674f..0000000000000 --- a/docs/user-guide/commands/argocd_proj_add-destination.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd proj add-destination - -Add project destination - -``` -argocd proj add-destination PROJECT SERVER NAMESPACE [flags] -``` - -### Options - -``` - -h, --help help for add-destination -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_add-orphaned-ignore.md b/docs/user-guide/commands/argocd_proj_add-orphaned-ignore.md deleted file mode 100644 index 26c336cb1522f..0000000000000 --- a/docs/user-guide/commands/argocd_proj_add-orphaned-ignore.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd proj add-orphaned-ignore - -Add a resource to orphaned ignore list - -``` -argocd proj add-orphaned-ignore PROJECT GROUP KIND [flags] -``` - -### Options - -``` - -h, --help help for add-orphaned-ignore - --name string Resource name pattern -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_add-signature-key.md b/docs/user-guide/commands/argocd_proj_add-signature-key.md deleted file mode 100644 index f9b35df557cc7..0000000000000 --- a/docs/user-guide/commands/argocd_proj_add-signature-key.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd proj add-signature-key - -Add GnuPG signature key to project - -``` -argocd proj add-signature-key PROJECT KEY-ID [flags] -``` - -### Options - -``` - -h, --help help for add-signature-key -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_add-source.md b/docs/user-guide/commands/argocd_proj_add-source.md deleted file mode 100644 index ee283122cbdc0..0000000000000 --- a/docs/user-guide/commands/argocd_proj_add-source.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd proj add-source - -Add project source repository - -``` -argocd proj add-source PROJECT URL [flags] -``` - -### Options - -``` - -h, --help help for add-source -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_allow-cluster-resource.md b/docs/user-guide/commands/argocd_proj_allow-cluster-resource.md deleted file mode 100644 index 3667d93e5af01..0000000000000 --- a/docs/user-guide/commands/argocd_proj_allow-cluster-resource.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd proj allow-cluster-resource - -Adds a cluster-scoped API resource to the allow list and removes it from deny list - -``` -argocd proj allow-cluster-resource PROJECT GROUP KIND [flags] -``` - -### Options - -``` - -h, --help help for allow-cluster-resource - -l, --list string Use deny list or allow list. This can only be 'allow' or 'deny' (default "allow") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_allow-namespace-resource.md b/docs/user-guide/commands/argocd_proj_allow-namespace-resource.md deleted file mode 100644 index 9d88307819b7d..0000000000000 --- a/docs/user-guide/commands/argocd_proj_allow-namespace-resource.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd proj allow-namespace-resource - -Removes a namespaced API resource from the deny list or add a namespaced API resource to the allow list - -``` -argocd proj allow-namespace-resource PROJECT GROUP KIND [flags] -``` - -### Options - -``` - -h, --help help for allow-namespace-resource - -l, --list string Use deny list or allow list. This can only be 'allow' or 'deny' (default "deny") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_create.md b/docs/user-guide/commands/argocd_proj_create.md deleted file mode 100644 index 7cf7ebea7c5c6..0000000000000 --- a/docs/user-guide/commands/argocd_proj_create.md +++ /dev/null @@ -1,46 +0,0 @@ -## argocd proj create - -Create a project - -``` -argocd proj create PROJECT [flags] -``` - -### Options - -``` - --description string Project description - -d, --dest stringArray Permitted destination server and namespace (e.g. https://192.168.99.100:8443,default) - -f, --file string Filename or URL to Kubernetes manifests for the project - -h, --help help for create - --orphaned-resources Enables orphaned resources monitoring - --orphaned-resources-warn Specifies if applications should have a warning condition when orphaned resources detected - --signature-keys strings GnuPG public key IDs for commit signature verification - -s, --src stringArray Permitted source repository URL - --upsert Allows to override a project with the same name even if supplied project spec is different from existing spec -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_delete.md b/docs/user-guide/commands/argocd_proj_delete.md deleted file mode 100644 index 3e707c9e2fab5..0000000000000 --- a/docs/user-guide/commands/argocd_proj_delete.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd proj delete - -Delete project - -``` -argocd proj delete PROJECT [flags] -``` - -### Options - -``` - -h, --help help for delete -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_deny-cluster-resource.md b/docs/user-guide/commands/argocd_proj_deny-cluster-resource.md deleted file mode 100644 index f2b3f9b46a14f..0000000000000 --- a/docs/user-guide/commands/argocd_proj_deny-cluster-resource.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd proj deny-cluster-resource - -Removes a cluster-scoped API resource from the allow list and adds it to deny list - -``` -argocd proj deny-cluster-resource PROJECT GROUP KIND [flags] -``` - -### Options - -``` - -h, --help help for deny-cluster-resource - -l, --list string Use deny list or allow list. This can only be 'allow' or 'deny' (default "allow") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_deny-namespace-resource.md b/docs/user-guide/commands/argocd_proj_deny-namespace-resource.md deleted file mode 100644 index bbc438092c7a2..0000000000000 --- a/docs/user-guide/commands/argocd_proj_deny-namespace-resource.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd proj deny-namespace-resource - -Adds a namespaced API resource to the deny list or removes a namespaced API resource from the allow list - -``` -argocd proj deny-namespace-resource PROJECT GROUP KIND [flags] -``` - -### Options - -``` - -h, --help help for deny-namespace-resource - -l, --list string Use deny list or allow list. This can only be 'allow' or 'deny' (default "deny") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_edit.md b/docs/user-guide/commands/argocd_proj_edit.md deleted file mode 100644 index 4b43b539f2c16..0000000000000 --- a/docs/user-guide/commands/argocd_proj_edit.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd proj edit - -Edit project - -``` -argocd proj edit PROJECT [flags] -``` - -### Options - -``` - -h, --help help for edit -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_get.md b/docs/user-guide/commands/argocd_proj_get.md deleted file mode 100644 index 5b66cf9347083..0000000000000 --- a/docs/user-guide/commands/argocd_proj_get.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd proj get - -Get project details - -``` -argocd proj get PROJECT [flags] -``` - -### Options - -``` - -h, --help help for get - -o, --output string Output format. One of: json|yaml|wide (default "wide") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_list.md b/docs/user-guide/commands/argocd_proj_list.md deleted file mode 100644 index 3eda716be3f04..0000000000000 --- a/docs/user-guide/commands/argocd_proj_list.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd proj list - -List projects - -``` -argocd proj list [flags] -``` - -### Options - -``` - -h, --help help for list - -o, --output string Output format. One of: json|yaml|wide|name (default "wide") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_remove-destination.md b/docs/user-guide/commands/argocd_proj_remove-destination.md deleted file mode 100644 index 09c1690e2ea39..0000000000000 --- a/docs/user-guide/commands/argocd_proj_remove-destination.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd proj remove-destination - -Remove project destination - -``` -argocd proj remove-destination PROJECT SERVER NAMESPACE [flags] -``` - -### Options - -``` - -h, --help help for remove-destination -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_remove-orphaned-ignore.md b/docs/user-guide/commands/argocd_proj_remove-orphaned-ignore.md deleted file mode 100644 index f10697fe35249..0000000000000 --- a/docs/user-guide/commands/argocd_proj_remove-orphaned-ignore.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd proj remove-orphaned-ignore - -Remove a resource from orphaned ignore list - -``` -argocd proj remove-orphaned-ignore PROJECT GROUP KIND NAME [flags] -``` - -### Options - -``` - -h, --help help for remove-orphaned-ignore - --name string Resource name pattern -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_remove-signature-key.md b/docs/user-guide/commands/argocd_proj_remove-signature-key.md deleted file mode 100644 index d871886236ebd..0000000000000 --- a/docs/user-guide/commands/argocd_proj_remove-signature-key.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd proj remove-signature-key - -Remove GnuPG signature key from project - -``` -argocd proj remove-signature-key PROJECT KEY-ID [flags] -``` - -### Options - -``` - -h, --help help for remove-signature-key -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_remove-source.md b/docs/user-guide/commands/argocd_proj_remove-source.md deleted file mode 100644 index d9b07799237a5..0000000000000 --- a/docs/user-guide/commands/argocd_proj_remove-source.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd proj remove-source - -Remove project source repository - -``` -argocd proj remove-source PROJECT URL [flags] -``` - -### Options - -``` - -h, --help help for remove-source -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_role.md b/docs/user-guide/commands/argocd_proj_role.md deleted file mode 100644 index e8d0dfe4f72b4..0000000000000 --- a/docs/user-guide/commands/argocd_proj_role.md +++ /dev/null @@ -1,49 +0,0 @@ -## argocd proj role - -Manage a project's roles - -``` -argocd proj role [flags] -``` - -### Options - -``` - -h, --help help for role -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects -* [argocd proj role add-group](argocd_proj_role_add-group.md) - Add a group claim to a project role -* [argocd proj role add-policy](argocd_proj_role_add-policy.md) - Add a policy to a project role -* [argocd proj role create](argocd_proj_role_create.md) - Create a project role -* [argocd proj role create-token](argocd_proj_role_create-token.md) - Create a project token -* [argocd proj role delete](argocd_proj_role_delete.md) - Delete a project role -* [argocd proj role delete-token](argocd_proj_role_delete-token.md) - Delete a project token -* [argocd proj role get](argocd_proj_role_get.md) - Get the details of a specific role -* [argocd proj role list](argocd_proj_role_list.md) - List all the roles in a project -* [argocd proj role list-tokens](argocd_proj_role_list-tokens.md) - List tokens for a given role. -* [argocd proj role remove-group](argocd_proj_role_remove-group.md) - Remove a group claim from a role within a project -* [argocd proj role remove-policy](argocd_proj_role_remove-policy.md) - Remove a policy from a role within a project - diff --git a/docs/user-guide/commands/argocd_proj_role_add-group.md b/docs/user-guide/commands/argocd_proj_role_add-group.md deleted file mode 100644 index 1b658d2236c7f..0000000000000 --- a/docs/user-guide/commands/argocd_proj_role_add-group.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd proj role add-group - -Add a group claim to a project role - -``` -argocd proj role add-group PROJECT ROLE-NAME GROUP-CLAIM [flags] -``` - -### Options - -``` - -h, --help help for add-group -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj role](argocd_proj_role.md) - Manage a project's roles - diff --git a/docs/user-guide/commands/argocd_proj_role_add-policy.md b/docs/user-guide/commands/argocd_proj_role_add-policy.md deleted file mode 100644 index 07df0f82899c0..0000000000000 --- a/docs/user-guide/commands/argocd_proj_role_add-policy.md +++ /dev/null @@ -1,41 +0,0 @@ -## argocd proj role add-policy - -Add a policy to a project role - -``` -argocd proj role add-policy PROJECT ROLE-NAME [flags] -``` - -### Options - -``` - -a, --action string Action to grant/deny permission on (e.g. get, create, list, update, delete) - -h, --help help for add-policy - -o, --object string Object within the project to grant/deny access. Use '*' for a wildcard. Will want access to '/' - -p, --permission string Whether to allow or deny access to object with the action. This can only be 'allow' or 'deny' (default "allow") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj role](argocd_proj_role.md) - Manage a project's roles - diff --git a/docs/user-guide/commands/argocd_proj_role_create-token.md b/docs/user-guide/commands/argocd_proj_role_create-token.md deleted file mode 100644 index 37db97835dda5..0000000000000 --- a/docs/user-guide/commands/argocd_proj_role_create-token.md +++ /dev/null @@ -1,41 +0,0 @@ -## argocd proj role create-token - -Create a project token - -``` -argocd proj role create-token PROJECT ROLE-NAME [flags] -``` - -### Options - -``` - -e, --expires-in string Duration before the token will expire, eg "12h", "7d". (Default: No expiration) - -h, --help help for create-token - -i, --id string Token unique identifier. (Default: Random UUID) - -t, --token-only Output token only - for use in scripts. -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj role](argocd_proj_role.md) - Manage a project's roles - diff --git a/docs/user-guide/commands/argocd_proj_role_create.md b/docs/user-guide/commands/argocd_proj_role_create.md deleted file mode 100644 index 281657df4caed..0000000000000 --- a/docs/user-guide/commands/argocd_proj_role_create.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd proj role create - -Create a project role - -``` -argocd proj role create PROJECT ROLE-NAME [flags] -``` - -### Options - -``` - --description string Project description - -h, --help help for create -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj role](argocd_proj_role.md) - Manage a project's roles - diff --git a/docs/user-guide/commands/argocd_proj_role_delete-token.md b/docs/user-guide/commands/argocd_proj_role_delete-token.md deleted file mode 100644 index fda7565d24d51..0000000000000 --- a/docs/user-guide/commands/argocd_proj_role_delete-token.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd proj role delete-token - -Delete a project token - -``` -argocd proj role delete-token PROJECT ROLE-NAME ISSUED-AT [flags] -``` - -### Options - -``` - -h, --help help for delete-token -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj role](argocd_proj_role.md) - Manage a project's roles - diff --git a/docs/user-guide/commands/argocd_proj_role_delete.md b/docs/user-guide/commands/argocd_proj_role_delete.md deleted file mode 100644 index 6f332f0cf30e3..0000000000000 --- a/docs/user-guide/commands/argocd_proj_role_delete.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd proj role delete - -Delete a project role - -``` -argocd proj role delete PROJECT ROLE-NAME [flags] -``` - -### Options - -``` - -h, --help help for delete -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj role](argocd_proj_role.md) - Manage a project's roles - diff --git a/docs/user-guide/commands/argocd_proj_role_get.md b/docs/user-guide/commands/argocd_proj_role_get.md deleted file mode 100644 index 42a31ec78822c..0000000000000 --- a/docs/user-guide/commands/argocd_proj_role_get.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd proj role get - -Get the details of a specific role - -``` -argocd proj role get PROJECT ROLE-NAME [flags] -``` - -### Options - -``` - -h, --help help for get -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj role](argocd_proj_role.md) - Manage a project's roles - diff --git a/docs/user-guide/commands/argocd_proj_role_list-tokens.md b/docs/user-guide/commands/argocd_proj_role_list-tokens.md deleted file mode 100644 index 73d9b25a4894d..0000000000000 --- a/docs/user-guide/commands/argocd_proj_role_list-tokens.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd proj role list-tokens - -List tokens for a given role. - -``` -argocd proj role list-tokens PROJECT ROLE-NAME [flags] -``` - -### Options - -``` - -h, --help help for list-tokens - -u, --unixtime Print timestamps as Unix time instead of converting. Useful for piping into delete-token. -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj role](argocd_proj_role.md) - Manage a project's roles - diff --git a/docs/user-guide/commands/argocd_proj_role_list.md b/docs/user-guide/commands/argocd_proj_role_list.md deleted file mode 100644 index 76c793cdbe889..0000000000000 --- a/docs/user-guide/commands/argocd_proj_role_list.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd proj role list - -List all the roles in a project - -``` -argocd proj role list PROJECT [flags] -``` - -### Options - -``` - -h, --help help for list - -o, --output string Output format. One of: json|yaml|wide|name (default "wide") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj role](argocd_proj_role.md) - Manage a project's roles - diff --git a/docs/user-guide/commands/argocd_proj_role_remove-group.md b/docs/user-guide/commands/argocd_proj_role_remove-group.md deleted file mode 100644 index 05c06a411985f..0000000000000 --- a/docs/user-guide/commands/argocd_proj_role_remove-group.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd proj role remove-group - -Remove a group claim from a role within a project - -``` -argocd proj role remove-group PROJECT ROLE-NAME GROUP-CLAIM [flags] -``` - -### Options - -``` - -h, --help help for remove-group -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj role](argocd_proj_role.md) - Manage a project's roles - diff --git a/docs/user-guide/commands/argocd_proj_role_remove-policy.md b/docs/user-guide/commands/argocd_proj_role_remove-policy.md deleted file mode 100644 index dbd1d9fbee6be..0000000000000 --- a/docs/user-guide/commands/argocd_proj_role_remove-policy.md +++ /dev/null @@ -1,41 +0,0 @@ -## argocd proj role remove-policy - -Remove a policy from a role within a project - -``` -argocd proj role remove-policy PROJECT ROLE-NAME [flags] -``` - -### Options - -``` - -a, --action string Action to grant/deny permission on (e.g. get, create, list, update, delete) - -h, --help help for remove-policy - -o, --object string Object within the project to grant/deny access. Use '*' for a wildcard. Will want access to '/' - -p, --permission string Whether to allow or deny access to object with the action. This can only be 'allow' or 'deny' (default "allow") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj role](argocd_proj_role.md) - Manage a project's roles - diff --git a/docs/user-guide/commands/argocd_proj_set.md b/docs/user-guide/commands/argocd_proj_set.md deleted file mode 100644 index 5c212c572948d..0000000000000 --- a/docs/user-guide/commands/argocd_proj_set.md +++ /dev/null @@ -1,44 +0,0 @@ -## argocd proj set - -Set project parameters - -``` -argocd proj set PROJECT [flags] -``` - -### Options - -``` - --description string Project description - -d, --dest stringArray Permitted destination server and namespace (e.g. https://192.168.99.100:8443,default) - -h, --help help for set - --orphaned-resources Enables orphaned resources monitoring - --orphaned-resources-warn Specifies if applications should have a warning condition when orphaned resources detected - --signature-keys strings GnuPG public key IDs for commit signature verification - -s, --src stringArray Permitted source repository URL -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects - diff --git a/docs/user-guide/commands/argocd_proj_windows.md b/docs/user-guide/commands/argocd_proj_windows.md deleted file mode 100644 index 79bbc46025e17..0000000000000 --- a/docs/user-guide/commands/argocd_proj_windows.md +++ /dev/null @@ -1,44 +0,0 @@ -## argocd proj windows - -Manage a project's sync windows - -``` -argocd proj windows [flags] -``` - -### Options - -``` - -h, --help help for windows -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj](argocd_proj.md) - Manage projects -* [argocd proj windows add](argocd_proj_windows_add.md) - Add a sync window to a project -* [argocd proj windows delete](argocd_proj_windows_delete.md) - Delete a sync window from a project. Requires ID which can be found by running "argocd proj windows list PROJECT" -* [argocd proj windows disable-manual-sync](argocd_proj_windows_disable-manual-sync.md) - Disable manual sync for a sync window -* [argocd proj windows enable-manual-sync](argocd_proj_windows_enable-manual-sync.md) - Enable manual sync for a sync window -* [argocd proj windows list](argocd_proj_windows_list.md) - List project sync windows -* [argocd proj windows update](argocd_proj_windows_update.md) - Update a project sync window - diff --git a/docs/user-guide/commands/argocd_proj_windows_add.md b/docs/user-guide/commands/argocd_proj_windows_add.md deleted file mode 100644 index b4e7bb7433df5..0000000000000 --- a/docs/user-guide/commands/argocd_proj_windows_add.md +++ /dev/null @@ -1,45 +0,0 @@ -## argocd proj windows add - -Add a sync window to a project - -``` -argocd proj windows add PROJECT [flags] -``` - -### Options - -``` - --applications strings Applications that the schedule will be applied to. Comma separated, wildcards supported (e.g. --applications prod-\*,website) - --clusters strings Clusters that the schedule will be applied to. Comma separated, wildcards supported (e.g. --clusters prod,staging) - --duration string Sync window duration. (e.g. --duration 1h) - -h, --help help for add - -k, --kind string Sync window kind, either allow or deny - --manual-sync Allow manual syncs for both deny and allow windows - --namespaces strings Namespaces that the schedule will be applied to. Comma separated, wildcards supported (e.g. --namespaces default,\*-prod) - --schedule string Sync window schedule in cron format. (e.g. --schedule "0 22 * * *") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj windows](argocd_proj_windows.md) - Manage a project's sync windows - diff --git a/docs/user-guide/commands/argocd_proj_windows_delete.md b/docs/user-guide/commands/argocd_proj_windows_delete.md deleted file mode 100644 index 66073712f8f9c..0000000000000 --- a/docs/user-guide/commands/argocd_proj_windows_delete.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd proj windows delete - -Delete a sync window from a project. Requires ID which can be found by running "argocd proj windows list PROJECT" - -``` -argocd proj windows delete PROJECT ID [flags] -``` - -### Options - -``` - -h, --help help for delete -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj windows](argocd_proj_windows.md) - Manage a project's sync windows - diff --git a/docs/user-guide/commands/argocd_proj_windows_disable-manual-sync.md b/docs/user-guide/commands/argocd_proj_windows_disable-manual-sync.md deleted file mode 100644 index b041cfc92e37f..0000000000000 --- a/docs/user-guide/commands/argocd_proj_windows_disable-manual-sync.md +++ /dev/null @@ -1,42 +0,0 @@ -## argocd proj windows disable-manual-sync - -Disable manual sync for a sync window - -### Synopsis - -Disable manual sync for a sync window. Requires ID which can be found by running "argocd proj windows list PROJECT" - -``` -argocd proj windows disable-manual-sync PROJECT ID [flags] -``` - -### Options - -``` - -h, --help help for disable-manual-sync -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj windows](argocd_proj_windows.md) - Manage a project's sync windows - diff --git a/docs/user-guide/commands/argocd_proj_windows_enable-manual-sync.md b/docs/user-guide/commands/argocd_proj_windows_enable-manual-sync.md deleted file mode 100644 index e73b1f1e19a13..0000000000000 --- a/docs/user-guide/commands/argocd_proj_windows_enable-manual-sync.md +++ /dev/null @@ -1,42 +0,0 @@ -## argocd proj windows enable-manual-sync - -Enable manual sync for a sync window - -### Synopsis - -Enable manual sync for a sync window. Requires ID which can be found by running "argocd proj windows list PROJECT" - -``` -argocd proj windows enable-manual-sync PROJECT ID [flags] -``` - -### Options - -``` - -h, --help help for enable-manual-sync -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj windows](argocd_proj_windows.md) - Manage a project's sync windows - diff --git a/docs/user-guide/commands/argocd_proj_windows_list.md b/docs/user-guide/commands/argocd_proj_windows_list.md deleted file mode 100644 index 0e678f1957f30..0000000000000 --- a/docs/user-guide/commands/argocd_proj_windows_list.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd proj windows list - -List project sync windows - -``` -argocd proj windows list PROJECT [flags] -``` - -### Options - -``` - -h, --help help for list - -o, --output string Output format. One of: json|yaml|wide (default "wide") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj windows](argocd_proj_windows.md) - Manage a project's sync windows - diff --git a/docs/user-guide/commands/argocd_proj_windows_update.md b/docs/user-guide/commands/argocd_proj_windows_update.md deleted file mode 100644 index 91a05d86fcac4..0000000000000 --- a/docs/user-guide/commands/argocd_proj_windows_update.md +++ /dev/null @@ -1,47 +0,0 @@ -## argocd proj windows update - -Update a project sync window - -### Synopsis - -Update a project sync window. Requires ID which can be found by running "argocd proj windows list PROJECT" - -``` -argocd proj windows update PROJECT ID [flags] -``` - -### Options - -``` - --applications strings Applications that the schedule will be applied to. Comma separated, wildcards supported (e.g. --applications prod-\*,website) - --clusters strings Clusters that the schedule will be applied to. Comma separated, wildcards supported (e.g. --clusters prod,staging) - --duration string Sync window duration. (e.g. --duration 1h) - -h, --help help for update - --namespaces strings Namespaces that the schedule will be applied to. Comma separated, wildcards supported (e.g. --namespaces default,\*-prod) - --schedule string Sync window schedule in cron format. (e.g. --schedule "0 22 * * *") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd proj windows](argocd_proj_windows.md) - Manage a project's sync windows - diff --git a/docs/user-guide/commands/argocd_relogin.md b/docs/user-guide/commands/argocd_relogin.md deleted file mode 100644 index 0f6cb80cc7208..0000000000000 --- a/docs/user-guide/commands/argocd_relogin.md +++ /dev/null @@ -1,44 +0,0 @@ -## argocd relogin - -Refresh an expired authenticate token - -### Synopsis - -Refresh an expired authenticate token - -``` -argocd relogin [flags] -``` - -### Options - -``` - -h, --help help for relogin - --password string the password of an account to authenticate - --sso-port int port to run local OAuth2 login application (default 8085) -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd](argocd.md) - argocd controls a Argo CD server - diff --git a/docs/user-guide/commands/argocd_repo.md b/docs/user-guide/commands/argocd_repo.md deleted file mode 100644 index 43b47178043ad..0000000000000 --- a/docs/user-guide/commands/argocd_repo.md +++ /dev/null @@ -1,42 +0,0 @@ -## argocd repo - -Manage repository connection parameters - -``` -argocd repo [flags] -``` - -### Options - -``` - -h, --help help for repo -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd](argocd.md) - argocd controls a Argo CD server -* [argocd repo add](argocd_repo_add.md) - Add git repository connection parameters -* [argocd repo get](argocd_repo_get.md) - Get a configured repository by URL -* [argocd repo list](argocd_repo_list.md) - List configured repositories -* [argocd repo rm](argocd_repo_rm.md) - Remove repository credentials - diff --git a/docs/user-guide/commands/argocd_repo_add.md b/docs/user-guide/commands/argocd_repo_add.md deleted file mode 100644 index c3a6f4ef17516..0000000000000 --- a/docs/user-guide/commands/argocd_repo_add.md +++ /dev/null @@ -1,86 +0,0 @@ -## argocd repo add - -Add git repository connection parameters - -``` -argocd repo add REPOURL [flags] -``` - -### Examples - -``` - # Add a Git repository via SSH using a private key for authentication, ignoring the server's host key: - argocd repo add git@git.example.com:repos/repo --insecure-ignore-host-key --ssh-private-key-path ~/id_rsa - - # Add a Git repository via SSH on a non-default port - need to use ssh:// style URLs here - argocd repo add ssh://git@git.example.com:2222/repos/repo --ssh-private-key-path ~/id_rsa - - # Add a private Git repository via HTTPS using username/password and TLS client certificates: - argocd repo add https://git.example.com/repos/repo --username git --password secret --tls-client-cert-path ~/mycert.crt --tls-client-cert-key-path ~/mycert.key - - # Add a private Git repository via HTTPS using username/password without verifying the server's TLS certificate - argocd repo add https://git.example.com/repos/repo --username git --password secret --insecure-skip-server-verification - - # Add a public Helm repository named 'stable' via HTTPS - argocd repo add https://kubernetes-charts.storage.googleapis.com --type helm --name stable - - # Add a private Helm repository named 'stable' via HTTPS - argocd repo add https://kubernetes-charts.storage.googleapis.com --type helm --name stable --username test --password test - - # Add a private Helm OCI-based repository named 'stable' via HTTPS - argocd repo add helm-oci-registry.cn-zhangjiakou.cr.aliyuncs.com --type helm --name stable --enable-oci --username test --password test - - # Add a private Git repository on GitHub.com via GitHub App - argocd repo add https://git.example.com/repos/repo --github-app-id 1 --github-app-installation-id 2 --github-app-private-key-path test.private-key.pem - - # Add a private Git repository on GitHub Enterprise via GitHub App - argocd repo add https://ghe.example.com/repos/repo --github-app-id 1 --github-app-installation-id 2 --github-app-private-key-path test.private-key.pem --github-app-enterprise-base-url https://ghe.example.com/api/v3 - -``` - -### Options - -``` - --enable-lfs enable git-lfs (Large File Support) on this repository - --enable-oci enable helm-oci (Helm OCI-Based Repository) - --github-app-enterprise-base-url string base url to use when using GitHub Enterprise (e.g. https://ghe.example.com/api/v3 - --github-app-id int id of the GitHub Application - --github-app-installation-id int installation id of the GitHub Application - --github-app-private-key-path string private key of the GitHub Application - -h, --help help for add - --insecure-ignore-host-key disables SSH strict host key checking (deprecated, use --insecure-skip-server-verification instead) - --insecure-skip-server-verification disables server certificate and host key checks - --name string name of the repository, mandatory for repositories of type helm - --password string password to the repository - --ssh-private-key-path string path to the private ssh key (e.g. ~/.ssh/id_rsa) - --tls-client-cert-key-path string path to the TLS client cert's key path (must be PEM format) - --tls-client-cert-path string path to the TLS client cert (must be PEM format) - --type string type of the repository, "git" or "helm" (default "git") - --upsert Override an existing repository with the same name even if the spec differs - --username string username to the repository -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd repo](argocd_repo.md) - Manage repository connection parameters - diff --git a/docs/user-guide/commands/argocd_repo_get.md b/docs/user-guide/commands/argocd_repo_get.md deleted file mode 100644 index 34d80f9515b05..0000000000000 --- a/docs/user-guide/commands/argocd_repo_get.md +++ /dev/null @@ -1,40 +0,0 @@ -## argocd repo get - -Get a configured repository by URL - -``` -argocd repo get [flags] -``` - -### Options - -``` - -h, --help help for get - -o, --output string Output format. One of: json|yaml|wide|url (default "wide") - --refresh string Force a cache refresh on connection status -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd repo](argocd_repo.md) - Manage repository connection parameters - diff --git a/docs/user-guide/commands/argocd_repo_list.md b/docs/user-guide/commands/argocd_repo_list.md deleted file mode 100644 index 09db6debb2fa2..0000000000000 --- a/docs/user-guide/commands/argocd_repo_list.md +++ /dev/null @@ -1,40 +0,0 @@ -## argocd repo list - -List configured repositories - -``` -argocd repo list [flags] -``` - -### Options - -``` - -h, --help help for list - -o, --output string Output format. One of: json|yaml|wide|url (default "wide") - --refresh string Force a cache refresh on connection status -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd repo](argocd_repo.md) - Manage repository connection parameters - diff --git a/docs/user-guide/commands/argocd_repo_rm.md b/docs/user-guide/commands/argocd_repo_rm.md deleted file mode 100644 index aaf276ef2aba3..0000000000000 --- a/docs/user-guide/commands/argocd_repo_rm.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd repo rm - -Remove repository credentials - -``` -argocd repo rm REPO [flags] -``` - -### Options - -``` - -h, --help help for rm -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd repo](argocd_repo.md) - Manage repository connection parameters - diff --git a/docs/user-guide/commands/argocd_repocreds.md b/docs/user-guide/commands/argocd_repocreds.md deleted file mode 100644 index ce31bca402ef5..0000000000000 --- a/docs/user-guide/commands/argocd_repocreds.md +++ /dev/null @@ -1,41 +0,0 @@ -## argocd repocreds - -Manage repository connection parameters - -``` -argocd repocreds [flags] -``` - -### Options - -``` - -h, --help help for repocreds -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd](argocd.md) - argocd controls a Argo CD server -* [argocd repocreds add](argocd_repocreds_add.md) - Add git repository connection parameters -* [argocd repocreds list](argocd_repocreds_list.md) - List configured repository credentials -* [argocd repocreds rm](argocd_repocreds_rm.md) - Remove repository credentials - diff --git a/docs/user-guide/commands/argocd_repocreds_add.md b/docs/user-guide/commands/argocd_repocreds_add.md deleted file mode 100644 index 81af0843dc9ae..0000000000000 --- a/docs/user-guide/commands/argocd_repocreds_add.md +++ /dev/null @@ -1,65 +0,0 @@ -## argocd repocreds add - -Add git repository connection parameters - -``` -argocd repocreds add REPOURL [flags] -``` - -### Examples - -``` - # Add credentials with user/pass authentication to use for all repositories under https://git.example.com/repos - argocd repocreds add https://git.example.com/repos/ --username git --password secret - - # Add credentials with SSH private key authentication to use for all repositories under ssh://git@git.example.com/repos - argocd repocreds add ssh://git@git.example.com/repos/ --ssh-private-key-path ~/.ssh/id_rsa - - # Add credentials with GitHub App authentication to use for all repositories under https://github.com/repos - argocd repocreds add https://github.com/repos/ --github-app-id 1 --github-app-installation-id 2 --github-app-private-key-path test.private-key.pem - - # Add credentials with GitHub App authentication to use for all repositories under https://ghe.example.com/repos - argocd repocreds add https://ghe.example.com/repos/ --github-app-id 1 --github-app-installation-id 2 --github-app-private-key-path test.private-key.pem --github-app-enterprise-base-url https://ghe.example.com/api/v3 - -``` - -### Options - -``` - --github-app-enterprise-base-url string base url to use when using GitHub Enterprise (e.g. https://ghe.example.com/api/v3 - --github-app-id int id of the GitHub Application - --github-app-installation-id int installation id of the GitHub Application - --github-app-private-key-path string private key of the GitHub Application - -h, --help help for add - --password string password to the repository - --ssh-private-key-path string path to the private ssh key (e.g. ~/.ssh/id_rsa) - --tls-client-cert-key-path string path to the TLS client cert's key path (must be PEM format) - --tls-client-cert-path string path to the TLS client cert (must be PEM format) - --upsert Override an existing repository with the same name even if the spec differs - --username string username to the repository -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd repocreds](argocd_repocreds.md) - Manage repository connection parameters - diff --git a/docs/user-guide/commands/argocd_repocreds_list.md b/docs/user-guide/commands/argocd_repocreds_list.md deleted file mode 100644 index bbb7c627ec452..0000000000000 --- a/docs/user-guide/commands/argocd_repocreds_list.md +++ /dev/null @@ -1,39 +0,0 @@ -## argocd repocreds list - -List configured repository credentials - -``` -argocd repocreds list [flags] -``` - -### Options - -``` - -h, --help help for list - -o, --output string Output format. One of: json|yaml|wide|url (default "wide") -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd repocreds](argocd_repocreds.md) - Manage repository connection parameters - diff --git a/docs/user-guide/commands/argocd_repocreds_rm.md b/docs/user-guide/commands/argocd_repocreds_rm.md deleted file mode 100644 index 23efd77f15faf..0000000000000 --- a/docs/user-guide/commands/argocd_repocreds_rm.md +++ /dev/null @@ -1,38 +0,0 @@ -## argocd repocreds rm - -Remove repository credentials - -``` -argocd repocreds rm CREDSURL [flags] -``` - -### Options - -``` - -h, --help help for rm -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd repocreds](argocd_repocreds.md) - Manage repository connection parameters - diff --git a/docs/user-guide/commands/argocd_version.md b/docs/user-guide/commands/argocd_version.md deleted file mode 100644 index 3d52ccd8a1ad4..0000000000000 --- a/docs/user-guide/commands/argocd_version.md +++ /dev/null @@ -1,58 +0,0 @@ -## argocd version - -Print version information - -``` -argocd version [flags] -``` - -### Examples - -``` - # Print the full version of client and server to stdout - argocd version - - # Print only full version of the client - no connection to server will be made - argocd version --client - - # Print the full version of client and server in JSON format - argocd version -o json - - # Print only client and server core version strings in YAML format - argocd version --short -o yaml - -``` - -### Options - -``` - --client client version only (no server required) - -h, --help help for version - -o, --output string Output format. One of: json|yaml|wide|short (default "wide") - --short print just the version number -``` - -### Options inherited from parent commands - -``` - --auth-token string Authentication token - --client-crt string Client certificate file - --client-crt-key string Client certificate key file - --config string Path to Argo CD config (default "/home/user/.argocd/config") - --grpc-web Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. - --grpc-web-root-path string Enables gRPC-web protocol. Useful if Argo CD server is behind proxy which does not support HTTP2. Set web root. - -H, --header strings Sets additional header to all requests made by Argo CD CLI. (Can be repeated multiple times to add multiple headers, also supports comma separated headers) - --insecure Skip server certificate and domain verification - --logformat string Set the logging format. One of: text|json (default "text") - --loglevel string Set the logging level. One of: debug|info|warn|error (default "info") - --plaintext Disable TLS - --port-forward Connect to a random argocd-server port using port forwarding - --port-forward-namespace string Namespace name which should be used for port forwarding - --server string Argo CD server address - --server-crt string Server certificate file -``` - -### SEE ALSO - -* [argocd](argocd.md) - argocd controls a Argo CD server - diff --git a/docs/user-guide/compare-options.md b/docs/user-guide/compare-options.md deleted file mode 100644 index 1f46610283942..0000000000000 --- a/docs/user-guide/compare-options.md +++ /dev/null @@ -1,36 +0,0 @@ -# Compare Options - -## Ignoring Resources That Are Extraneous - ->v1.1 - -You may wish to exclude resources from the app's overall sync status under certain circumstances. E.g. if they are generated by a tool. This can be done by adding this annotation on the resource you wish to exclude: - -```yaml -metadata: - annotations: - argocd.argoproj.io/compare-options: IgnoreExtraneous -``` - -![compare option needs pruning](../assets/compare-option-ignore-needs-pruning.png) - -!!! note - This only affects the sync status. If the resource's health is degraded, then the app will also be degraded. - -Kustomize has a feature that allows you to generate config maps ([read more ⧉](https://github.com/kubernetes-sigs/kustomize/blob/master/examples/configGeneration.md)). You can set `generatorOptions` to add this annotation so that your app remains in sync: - -```yaml -configMapGenerator: - - name: my-map - literals: - - foo=bar -generatorOptions: - annotations: - argocd.argoproj.io/compare-options: IgnoreExtraneous -kind: Kustomization -``` - -!!! note - `generatorOptions` adds annotations to both config maps and secrets ([read more ⧉](https://github.com/kubernetes-sigs/kustomize/blob/master/examples/generatorOptions.md)). - -You may wish to combine this with the [`Prune=false` sync option](sync-options.md). diff --git a/docs/user-guide/config-management-plugins.md b/docs/user-guide/config-management-plugins.md deleted file mode 100644 index 2ed6e9abc1247..0000000000000 --- a/docs/user-guide/config-management-plugins.md +++ /dev/null @@ -1,47 +0,0 @@ -# Plugins - -Argo CD allows integrating more config management tools using config management plugins. Following changes are required to configure new plugin: - -* Make sure required binaries are available in `argocd-repo-server` pod. The binaries can be added via volume mounts or using custom image (see [custom_tools](../operator-manual/custom_tools.md)). -* Register a new plugin in `argocd-cm` ConfigMap: - -```yaml -data: - configManagementPlugins: | - - name: pluginName - init: # Optional command to initialize application source directory - command: ["sample command"] - args: ["sample args"] - generate: # Command to generate manifests YAML - command: ["sample command"] - args: ["sample args"] -``` - -The `generate` command must print a valid YAML stream to stdout. Both `init` and `generate` commands are executed inside the application source directory. - - * Create an application and specify required config management plugin name. - -```bash -argocd app create --config-management-plugin -``` - -More config management plugin examples are available in [argocd-example-apps](https://github.com/argoproj/argocd-example-apps/tree/master/plugins). - -## Environment - -Commands have access to - -1. The system environment variables -2. [Standard build environment](build-environment.md) -3. Variables in the application spec: - -> v1.2 - -```yaml -spec: - source: - plugin: - env: - - name: FOO - value: bar -``` diff --git a/docs/user-guide/diffing.md b/docs/user-guide/diffing.md deleted file mode 100644 index 2ba1e1c848624..0000000000000 --- a/docs/user-guide/diffing.md +++ /dev/null @@ -1,119 +0,0 @@ -# Diffing Customization - -It is possible for an application to be `OutOfSync` even immediately after a successful Sync operation. Some reasons for this might be: - -* There is a bug in the manifest, where it contains extra/unknown fields from the actual K8s spec. These extra fields would get dropped when querying Kubernetes for the live state, -resulting in an `OutOfSync` status indicating a missing field was detected. -* The sync was performed (with pruning disabled), and there are resources which need to be deleted. -* A controller or [mutating webhook](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#mutatingadmissionwebhook) is altering the object after it was -submitted to Kubernetes in a manner which contradicts Git. -* A Helm chart is using a template function such as [`randAlphaNum`](https://github.com/helm/charts/blob/master/stable/redis/templates/secret.yaml#L16), -which generates different data every time `helm template` is invoked. -* For Horizontal Pod Autoscaling (HPA) objects, the HPA controller is known to reorder `spec.metrics` - in a specific order. See [kubernetes issue #74099](https://github.com/kubernetes/kubernetes/issues/74099). - To work around this, you can order `spec.metrics` in Git in the same order that the controller - prefers. - -In case it is impossible to fix the upstream issue, Argo CD allows you to optionally ignore differences of problematic resources. -The diffing customization can be configured for single or multiple application resources or at a system level. - -## Application Level Configuration - -Argo CD allows ignoring differences at a specific JSON path, using [RFC6902 JSON patches](https://tools.ietf.org/html/rfc6902). The following sample application is configured to ignore differences in `spec.replicas` for all deployments: - -```yaml -spec: - ignoreDifferences: - - group: apps - kind: Deployment - jsonPointers: - - /spec/replicas -``` - -The above customization could be narrowed to a resource with the specified name and optional namespace: - -```yaml -spec: - ignoreDifferences: - - group: apps - kind: Deployment - name: guestbook - namespace: default - jsonPointers: - - /spec/replicas -``` - -## System-Level Configuration - -The comparison of resources with well-known issues can be customized at a system level. Ignored differences can be configured for a specified group and kind -in `resource.customizations` key of `argocd-cm` ConfigMap. Following is an example of a customization which ignores the `caBundle` field -of a `MutatingWebhookConfiguration` webhooks: - -```yaml -data: - resource.customizations: | - admissionregistration.k8s.io/MutatingWebhookConfiguration: - ignoreDifferences: | - jsonPointers: - - /webhooks/0/clientConfig/caBundle -``` - -The `status` field of `CustomResourceDefinitions` is often stored in Git/Helm manifest and should be ignored during diffing. The `ignoreResourceStatusField` setting simplifies -handling that edge case: - -```yaml -data: - resource.compareoptions: | - # disables status field diffing in specified resource types - # 'crd' - CustomResourceDefinition-s (default) - # 'all' - all resources - # 'none' - disabled - ignoreResourceStatusField: crd -``` - -By default `status` field is ignored during diffing for `CustomResourceDefinition` resource. The behavior can be extended to all resources using `all` value or disabled using `none`. - -## Known Kubernetes types in CRDs (Resource limits, Volume mounts etc) - -Some CRDs are re-using data structures defined in the Kubernetes source base and therefore inheriting custom -JSON/YAML marshaling. Custom marshalers might serialize CRDs in a slightly different format that causes false -positives during drift detection. - -A typical example is the `argoproj.io/Rollout` CRD that re-using `core/v1/PodSpec` data structure. Pod resource requests -might be reformatted by the custom marshaller of `IntOrString` data type: - -from: -```yaml -resources: - requests: - cpu: 100m -``` - -to: -```yaml -resources: - requests: - cpu: 0.1 -``` - -The solution is to specify which CRDs fields are using built-in Kubernetes types in the `resource.customizations` -section of `argocd-cm` ConfigMap: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - resource.customizations: | - argoproj.io/Rollout: - knownTypeFields: - - field: spec.template.spec - type: core/v1/PodSpec -``` - -The list of supported Kubernetes types is available in [diffing_known_types.txt](https://raw.githubusercontent.com/argoproj/argo-cd/master/util/argo/normalizers/diffing_known_types.txt) diff --git a/docs/user-guide/external-url.md b/docs/user-guide/external-url.md deleted file mode 100644 index 173a8724c5fea..0000000000000 --- a/docs/user-guide/external-url.md +++ /dev/null @@ -1,22 +0,0 @@ -# Add external URL - -You can add additional external links to ArgoCD dashboard. For example -links monitoring pages or documentation instead of just ingress hosts or other apps. - -ArgoCD generates a clickable links to external pages for a resource based on per resource annotation. - -Example: -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: my-svc - annotations: - link.argocd.argoproj.io/external-link: http://my-grafana.com/pre-generated-link -``` -![External link](../assets/external-link.png) - -The external link icon will be visible for respective resource on ArgoCD application details page. - -![External link](../assets/external-link-1.png) - diff --git a/docs/user-guide/helm.md b/docs/user-guide/helm.md deleted file mode 100644 index 75661ab3600ce..0000000000000 --- a/docs/user-guide/helm.md +++ /dev/null @@ -1,196 +0,0 @@ -# Helm - -## Values Files - -Helm has the ability to use a different, or even multiple "values.yaml" files to derive its -parameters from. Alternate or multiple values file(s), can be specified using the `--values` -flag. The flag can be repeated to support multiple values files: - -```bash -argocd app set helm-guestbook --values values-production.yaml -``` -!!! note - Values files must be in the same git repository as the Helm chart. The files can be in a different - location in which case it can be accessed using a relative path relative to the root directory of - the Helm chart. - -## Helm Parameters - -Helm has the ability to set parameter values, which override any values in -a `values.yaml`. For example, `service.type` is a common parameter which is exposed in a Helm chart: - -```bash -helm template . --set service.type=LoadBalancer -``` - -Similarly, Argo CD can override values in the `values.yaml` parameters using `argo app set` command, -in the form of `-p PARAM=VALUE`. For example: - -```bash -argocd app set helm-guestbook -p service.type=LoadBalancer -``` - -## Helm Release Name - -By default, the Helm release name is equal to the Application name to which it belongs. Sometimes, especially on a centralised ArgoCD, -you may want to override that name, and it is possible with the `release-name` flag on the cli: - -```bash -argocd app set helm-guestbook --release-name myRelease -``` - - or using the releaseName for yaml: - -```yaml -source: - helm: - releaseName: myRelease -``` - -!!! warning "Important notice on overriding the release name" - Please note that overriding the Helm release name might cause problems when the chart you are deploying is using the `app.kubernetes.io/instance` label. ArgoCD injects this label with the value of the Application name for tracking purposes. So when overriding the release name, the Application name will stop being equal to the release name. Because ArgoCD will overwrite the label with the Application name it might cause some selectors on the resources to stop working. In order to avoid this we can configure ArgoCD to use another label for tracking in the [ArgoCD configmap argocd-cm.yaml](../operator-manual/argocd-cm.yaml) - check the lines describing `application.instanceLabelKey`. - -## Helm Hooks - -> v1.3 or later - -Helm hooks are similar to [Argo CD hooks](resource_hooks.md). In Helm, a hook -is any normal Kubernetes resource annotated with the `helm.sh/hook` annotation. - -Argo CD supports many (most?) Helm hooks by mapping the Helm annotations onto Argo CD's own hook annotations: - -| Helm Annotation | Notes | -|---|---| -| `helm.sh/hook: crd-install` | Supported as equivalent to `argocd.argoproj.io/hook: PreSync`. | -| `helm.sh/hook: pre-delete` | Not supported. In Helm stable there are 3 cases used to clean up CRDs and 3 to clean-up jobs. | -| `helm.sh/hook: pre-rollback` | Not supported. Never used in Helm stable. | -| `helm.sh/hook: pre-install` | Supported as equivalent to `argocd.argoproj.io/hook: PreSync`. | -| `helm.sh/hook: pre-upgrade` | Supported as equivalent to `argocd.argoproj.io/hook: PreSync`. | -| `helm.sh/hook: post-upgrade` | Supported as equivalent to `argocd.argoproj.io/hook: PostSync`. | -| `helm.sh/hook: post-install` | Supported as equivalent to `argocd.argoproj.io/hook: PostSync`. | -| `helm.sh/hook: post-delete` | Not supported. Never used in Helm stable. | -| `helm.sh/hook: post-rollback` | Not supported. Never used in Helm stable. | -| `helm.sh/hook: test-success` | Not supported. No equivalent in Argo CD. | -| `helm.sh/hook: test-failure` | Not supported. No equivalent in Argo CD. | -| `helm.sh/hook-delete-policy` | Supported. See also `argocd.argoproj.io/hook-delete-policy`). | -| `helm.sh/hook-delete-timeout` | No supported. Never used in Helm stable | -| `helm.sh/hook-weight` | Supported as equivalent to `argocd.argoproj.io/sync-wave`. | - -Unsupported hooks are ignored. In Argo CD, hooks are created by using `kubectl apply`, rather than `kubectl create`. This means that if the hook is named and already exists, it will not change unless you have annotated it with `before-hook-creation`. - -!!! warning "'install' vs 'upgrade' vs 'sync'" - Argo CD cannot know if it is running a first-time "install" or an "upgrade" - every operation is a "sync'. This means that, by default, apps that have `pre-install` and `pre-upgrade` will have those hooks run at the same time. - -### Hook Tips - -* Make your hook idempotent. -* Annotate `crd-install` with `hook-weight: "-2"` to make sure it runs to success before any install or upgrade hooks. -* Annotate `pre-install` and `post-install` with `hook-weight: "-1"`. This will make sure it runs to success before any upgrade hooks. -* Annotate `pre-upgrade` and `post-upgrade` with `hook-delete-policy: before-hook-creation` to make sure it runs on every sync. - -Read more about [Argo hooks](resource_hooks.md) and [Helm hooks](https://github.com/helm/helm/blob/dev-v2/docs/charts_hooks.md). - -## Random Data - -Helm templating has the ability to generate random data during chart rendering via the -`randAlphaNum` function. Many helm charts from the [charts repository](https://github.com/helm/charts) -make use of this feature. For example, the following is the secret for the -[redis helm chart](https://github.com/helm/charts/blob/master/stable/redis/templates/secret.yaml): - -```yaml -data: - {{- if .Values.password }} - redis-password: {{ .Values.password | b64enc | quote }} - {{- else }} - redis-password: {{ randAlphaNum 10 | b64enc | quote }} - {{- end }} -``` - -The Argo CD application controller periodically compares Git state against the live state, running -the `helm template ` command to generate the helm manifests. Because the random value is -regenerated every time the comparison is made, any application which makes use of the `randAlphaNum` -function will always be in an `OutOfSync` state. This can be mitigated by explicitly setting a -value, in the values.yaml such that the value is stable between each comparison. For example: - -```bash -argocd app set redis -p password=abc123 -``` - -## Build Environment - -> v1.4 - -Helm apps have access to the [standard build environment](build-environment.md) via substitution as parameters. - -E.g. via the CLI: - -```bash -argocd app create APPNAME \ - --helm-set-string 'app=${ARGOCD_APP_NAME}' -``` - -Or via declarative syntax: - -```yaml - spec: - source: - helm: - parameters: - - name: app - value: $ARGOCD_APP_NAME -``` - -## Helm plugins - -> v1.5 - -Argo CD is un-opinionated on what cloud provider you use and what kind of Helm plugins you are using, that's why there are no plugins delivered with the ArgoCD image. - -But sometimes it happens you would like to use a custom plugin. One of the cases is that you would like to use Google Cloud Storage or Amazon S3 storage to save the Helm charts, for example: https://github.com/hayorov/helm-gcs where you can use `gs://` protocol for Helm chart repository access. - -In order to do that you have to prepare your own ArgoCD image with installed plugins. - -Example `Dockerfile`: - -``` -FROM argoproj/argocd:v1.5.7 - -USER root -RUN apt-get update && \ - apt-get install -y \ - curl && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -USER argocd - -ARG GCS_PLUGIN_VERSION="0.3.5" -ARG GCS_PLUGIN_REPO="https://github.com/hayorov/helm-gcs.git" - -RUN helm plugin install ${GCS_PLUGIN_REPO} --version ${GCS_PLUGIN_VERSION} - -ENV HELM_PLUGINS="/home/argocd/.local/share/helm/plugins/" -``` - -You have to remember about `HELM_PLUGINS` environment property - this is required for plugins to work correctly. - -After that you have to use your custom image for ArgoCD installation. - -## Helm Version - -ArgoCD normally detects which version of Helm to use by looking at the `apiVersion` in Chart.yaml. - -If needed, it is possible to specifically set the Helm version to template with by setting the `helm-version` flag on the cli (either v2 or v3): - -```bash -argocd app set helm-guestbook --helm-version v2 -``` - -Or using declarative syntax: - -```yaml -spec: - source: - helm: - version: v2 -``` diff --git a/docs/user-guide/index.md b/docs/user-guide/index.md deleted file mode 100644 index 8cfc580d3204e..0000000000000 --- a/docs/user-guide/index.md +++ /dev/null @@ -1,6 +0,0 @@ -# Overview - -This guide is for developers who have Argo CD installed for them and are managing applications. - -!!! note - Please make sure you've completed the [getting started guide](../getting_started.md). \ No newline at end of file diff --git a/docs/user-guide/jsonnet.md b/docs/user-guide/jsonnet.md deleted file mode 100644 index 17627e18c280f..0000000000000 --- a/docs/user-guide/jsonnet.md +++ /dev/null @@ -1,34 +0,0 @@ -# Jsonnet - -Any file matching `*.jsonnet` in a directory app is treated as a Jsonnet file. ArgoCD evaluates the Jsonnet and is able to parse a generated object or array. - -## Build Environment - -> v1.4 - -Jsonnet apps have access to the [standard build environment](build-environment.md) via substitution into *TLAs* and *external variables*. -It is also possible to add a shared library (e.g. `vendor` folder) relative to the repository root. - -E.g. via the CLI: - -```bash -argocd app create APPNAME \ - --jsonnet-ext-str 'app=${ARGOCD_APP_NAME}' \ - --jsonnet-tla-str 'ns=${ARGOCD_APP_NAMESPACE}' \ - --jsonnet-libs 'vendor' -``` - -Or by declarative syntax: - -```yaml - directory: - jsonnet: - extVars: - - name: app - value: $ARGOCD_APP_NAME - tlas: - - name: ns - value: $ARGOCD_APP_NAMESPACE - libs: - - vendor -``` diff --git a/docs/user-guide/ksonnet.md b/docs/user-guide/ksonnet.md deleted file mode 100644 index c63fb938598f3..0000000000000 --- a/docs/user-guide/ksonnet.md +++ /dev/null @@ -1,39 +0,0 @@ -# Ksonnet - -!!! tip Warning "Ksonnet is defunct and no longer supported." - -## Environments -Ksonnet has a first class concept of an "environment." To create an application from a ksonnet -app directory, an environment must be specified. For example, the following command creates the -"guestbook-default" app, which points to the `default` environment: - -```bash -argocd app create guestbook-default --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --env default -``` - -## Parameters -Ksonnet parameters all belong to a component. For example, the following are the parameters -available in the guestbook app, all of which belong to the `guestbook-ui` component: - -```bash -$ ks param list -COMPONENT PARAM VALUE -========= ===== ===== -guestbook-ui containerPort 80 -guestbook-ui image "gcr.io/heptio-images/ks-guestbook-demo:0.1" -guestbook-ui name "guestbook-ui" -guestbook-ui replicas 1 -guestbook-ui servicePort 80 -guestbook-ui type "LoadBalancer" -``` - -When overriding ksonnet parameters in Argo CD, the component name should also be specified in the -`argocd app set` command, in the form of `-p COMPONENT=PARAM=VALUE`. For example: - -```bash -argocd app set guestbook-default -p guestbook-ui=image=gcr.io/heptio-images/ks-guestbook-demo:0.1 -``` - -## Build Environment - -We do not support the [standard build environment](build-environment.md) for Ksonnet. diff --git a/docs/user-guide/kustomize.md b/docs/user-guide/kustomize.md deleted file mode 100644 index 6e027468453f2..0000000000000 --- a/docs/user-guide/kustomize.md +++ /dev/null @@ -1,86 +0,0 @@ -# Kustomize - -The following configuration options are available for Kustomize: - -* `namePrefix` is a prefix appended to resources for Kustomize apps -* `nameSuffix` is a suffix appended to resources for Kustomize apps -* `images` is a list of Kustomize image overrides -* `commonLabels` is a string map of an additional labels -* `commonAnnotations` is a string map of an additional annotations - -To use Kustomize with an overlay, point your path to the overlay. - -!!! tip - If you're generating resources, you should read up how to ignore those generated resources using the [`IgnoreExtraneous` compare option](compare-options.md). - -## Private Remote Bases - -If you have remote bases that are either (a) HTTPS and need username/password (b) SSH and need SSH private key, then they'll inherit that from the app's repo. - -This will work if the remote bases uses the same credentials/private key. It will not work if they use different ones. For security reasons your app only ever knows about its own repo (not other team's or users repos), and so you won't be able to access other private repos, even if Argo CD knows about them. - -Read more about [private repos](private-repositories.md). - -## `kustomize build` Options/Parameters - -To provide build options to `kustomize build` add a property to the ArgoCD CM under data: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - kustomize.buildOptions: --load_restrictor none -``` -## Custom Kustomize versions - -Argo CD supports using multiple kustomize versions simultaneously and specifies required version per application. -To add additional versions make sure required versions are [bundled](../operator-manual/custom_tools.md) and then -use `kustomize.version.` fields of `argocd-cm` ConfigMap to register bundled additional versions. - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: argocd-cm - namespace: argocd - labels: - app.kubernetes.io/name: argocd-cm - app.kubernetes.io/part-of: argocd -data: - kustomize.version.v3.5.1: /custom-tools/kustomize_3_5_1 - kustomize.version.v3.5.4: /custom-tools/kustomize_3_5_4 -``` - -Once a new version is configured you can reference it in Application spec as following: - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: guestbook -spec: - source: - repoURL: https://github.com/argoproj/argocd-example-apps.git - targetRevision: HEAD - path: guestbook-kustomize - - kustomize: - version: v3.5.4 -``` - -Additionally application kustomize version can be configured using Parameters tab of Application Details page or using following CLI command: - -``` -argocd app set --kustomize-version v3.5.4 -``` - - -## Build Environment - -Kustomize does not support parameters and therefore cannot support the standard [build environment](build-environment.md). diff --git a/docs/user-guide/orphaned-resources.md b/docs/user-guide/orphaned-resources.md deleted file mode 100644 index 4c61e806ac944..0000000000000 --- a/docs/user-guide/orphaned-resources.md +++ /dev/null @@ -1,20 +0,0 @@ -# Orphaned Resources Monitoring - -Orphaned Kubernetes resource is a top-level namespaced resource which does not belong to any Argo CD Application. The Orphaned Resources Monitoring feature allows detecting -orphaned resources, generate a warning and inspect/remove resources using Argo CD UI. - -The Orphaned Resources monitoring is enabled in [Project](projects.md) settings. Once the feature is enabled each project application which target namespace has orphaned resource -will get a warning condition. The orphaned resources can be located using the application details page: - -![orphaned resources](../assets/orphaned-resources.png) - -Before enabling feature you might consider disabling warning. In this case application users are going to see orphaned resources in the UI but application is won't get a warning condition. - -## Exceptions - -Not every resource in the Kubernetes cluster is controlled by the end user. Following resources are never considered as orphaned: - -* Namespaced resources denied in the project. Usually, such resources are managed by cluster administrators and not supposed to be modified by namespace user. -* `ServiceAccount` with name `default` ( and corresponding auto-generated `ServiceAccountToken` ). -* `Service` with name `kubernetes` in the `default` namespace. -* `ConfigMap` with name `kube-root-ca.crt` in all namespaces. diff --git a/docs/user-guide/parameters.md b/docs/user-guide/parameters.md deleted file mode 100644 index d055a9233b14c..0000000000000 --- a/docs/user-guide/parameters.md +++ /dev/null @@ -1,94 +0,0 @@ -# Parameter Overrides - -Argo CD provides a mechanism to override the parameters of Argo CD applications that leverages config management -tools. This provides flexibility in having most of the application manifests defined in Git, while leaving room -for *some* parts of the k8s manifests determined dynamically, or outside of Git. It also serves as an alternative way of -redeploying an application by changing application parameters via Argo CD, instead of making the -changes to the manifests in Git. - -!!! tip - Many consider this mode of operation as an anti-pattern to GitOps, since the source of - truth becomes a union of the Git repository, and the application overrides. The Argo CD parameter - overrides feature is provided mainly as a convenience to developers and is intended to be used in - dev/test environments, vs. production environments. - -To use parameter overrides, run the `argocd app set -p (COMPONENT=)PARAM=VALUE` command: - -```bash -argocd app set guestbook -p image=example/guestbook:abcd123 -argocd app sync guestbook -``` - -The `PARAM` is expected to be a normal YAML path - -```bash -argocd app set guestbook -p ingress.enabled=true -argocd app set guestbook -p ingress.hosts[0]=guestbook.myclusterurl -``` - -The `argocd app set` [command](./commands/argocd_app_set.md) supports more tool-specific flags such as `--kustomize-image`, `--jsonnet-ext-var-str` etc -flags. You can also specify overrides directly in the source field on application spec. Read more about supported options in corresponded tool [documentation](./application_sources.md). - -## When To Use Overrides? - -The following are situations where parameter overrides would be useful: - -1. A team maintains a "dev" environment, which needs to be continually updated with the latest -version of their guestbook application after every build in the tip of master. To address this use -case, the application would expose a parameter named `image`, whose value used in the `dev` -environment contains a placeholder value (e.g. `example/guestbook:replaceme`). The placeholder value -would be determined externally (outside of Git) such as a build system. Then, as part of the build -pipeline, the parameter value of the `image` would be continually updated to the freshly built image -(e.g. `argocd app set guestbook -p image=example/guestbook:abcd123`). A sync operation -would result in the application being redeployed with the new image. - -2. A repository of Helm manifests is already publicly available (e.g. https://github.com/helm/charts). -Since commit access to the repository is unavailable, it is useful to be able to install charts from -the public repository and customize the deployment with different parameters, without resorting to -forking the repository to make the changes. For example, to install Redis from the Helm chart -repository and customize the the database password, you would run: - -```bash -argocd app create redis --repo https://github.com/helm/charts.git --path stable/redis --dest-server https://kubernetes.default.svc --dest-namespace default -p password=abc123 -``` - -## Store Overrides In Git - -> The following is available from v1.8 or later - -The config management tool specific overrides can be specified in `.argocd-source.yaml` file stored in the source application -directory in the Git repository. - -!!! warn - The `.argocd-source` is a beta feature and subject to change. - -The `.argocd-source.yaml` file is used during manifest generation and overrides -application source fields, such as `kustomize`, `helm` etc. - -Example: - -```yaml -kustomize: - images: - - gcr.io/heptio-images/ks-guestbook-demo:0.2 -``` - -The `.argocd-source` is trying to solve two following main use cases: - -- Provide the unifed way to "override" application parameters in Git and enable the "write back" feature -for projects like [argocd-image-updater](https://github.com/argoproj-labs/argocd-image-updater). -- Support "discovering" applications in the Git repository by projects like [applicationset](https://github.com/argoproj-labs/applicationset) -(see [git files generator](https://github.com/argoproj-labs/applicationset/blob/master/examples/git-files-discovery.yaml)) - -> The following is available from v1.9 or later - -You can also store parameter overrides in an application specific file, if you -are sourcing multiple applications from a single path in your repository. - -The application specific file must be named `.argocd-source-.yaml`, -where `` is the name of the application the overrides are valid for. - -If there exists an non-application specific `.argocd-source.yaml`, parameters -included in that file will be merged first, and then the application specific -parameters are merged, which can also contain overrides to the parameters -stored in the non-application specific file. \ No newline at end of file diff --git a/docs/user-guide/private-repositories.md b/docs/user-guide/private-repositories.md deleted file mode 100644 index 73f0288d1bf6d..0000000000000 --- a/docs/user-guide/private-repositories.md +++ /dev/null @@ -1,401 +0,0 @@ -# Private Repositories - -!!!note - Some Git hosters - notably GitLab and possibly on-premise GitLab instances as well - require you to - specify the `.git` suffix in the repository URL, otherwise they will send a HTTP 301 redirect to the - repository URL suffixed with `.git`. ArgoCD will **not** follow these redirects, so you have to - adapt your repository URL to be suffixed with `.git`. - -## Credentials - -If application manifests are located in private repository then repository credentials have to be configured. Argo CD supports both HTTP and SSH Git credentials. - -### HTTPS Username And Password Credential - -Private repositories that require a username and password typically have a URL that start with `https://` rather than `git@` or `ssh://`. - -Credentials can be configured using Argo CD CLI: - -```bash -argocd repo add https://github.com/argoproj/argocd-example-apps --username --password -``` - -or UI: - -> v1.2 or later - -1. Navigate to `Settings/Repositories` - - ![connect repo overview](../assets/repo-add-overview.png) - -1. Click `Connect Repo using HTTPS` button and enter credentials - - ![connect repo](../assets/repo-add-https.png) - - *Note: username in screenshot is for illustration purposes only , we have no relationship to this GitHub account should it exist.* - -1. Click `Connect` to test the connection and have the repository added - -> earlier than v1.2 - -1. Navigate to `Settings/Repositories` -1. Click `Connect Repo` button and enter HTTP credentials - -![connect repo](../assets/connect-repo.png) - -#### Access Token - -Instead of using username and password you might use access token. Following instructions of your Git hosting service to generate the token: - -* [Github](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line) -* [Gitlab](https://docs.gitlab.com/ee/user/project/deploy_tokens/) -* [Bitbucket](https://confluence.atlassian.com/bitbucketserver/personal-access-tokens-939515499.html) - -Then, connect the repository using any non-empty string as username and the access token value as a password. - -!!!note - For some services, you might have to specify your account name as the username instead of any string. - -### TLS Client Certificates for HTTPS repositories - -> v1.2 and later - -If your repository server requires you to use TLS client certificates for authentication, you can configure ArgoCD repositories to make use of them. For this purpose, `--tls-client-cert-path` and `--tls-client-cert-key-path` switches to the `argocd repo add` command can be used to specify the files on your local system containing client certificate and the corresponding key, respectively: - -``` -argocd repo add https://repo.example.com/repo.git --tls-client-cert-path ~/mycert.crt --tls-client-cert-key-path ~/mycert.key -``` - -Of course, you can also use this in combination with the `--username` and `--password` switches, if your repository server should require this. The options `--tls-client-cert-path` and `--tls-client-cert-key-path` must always be specified together. - -Your TLS client certificate and corresponding key can also be configured using the UI, see instructions for adding Git repos using HTTPS. - -!!! note - Your client certificate and key data must be in PEM format, other formats (such as PKCS12) are not understood. Also make sure that your certificate's key is not password protected, otherwise it cannot be used by ArgoCD. - -!!! note - When pasting TLS client certificate and key in the text areas in the web UI, make sure they contain no unintended line breaks or additional characters. - -### SSH Private Key Credential - -Private repositories that require an SSH private key have a URL that typically start with `git@` or `ssh://` rather than `https://`. - -> v1.2 or later - -You can configure your Git repository using HTTPS either using the CLI or the UI. - -Using the CLI: - -``` -argocd repo add git@github.com:argoproj/argocd-example-apps.git --ssh-private-key-path ~/.ssh/id_rsa -``` - -Using the UI: - -1. Navigate to `Settings/Repositories` - - ![connect repo overview](../assets/repo-add-overview.png) - -1. Click `Connect Repo using SSH` button, enter the URL and paste the SSH private key - - ![connect repo](../assets/repo-add-ssh.png) - -1. Click `Connect` to test the connection and have the repository added - -!!!note - When pasting SSH private key in the UI, make sure there are no unintended line breaks or additional characters in the text area - -!!!note - When your SSH repository is served from a non-standard port, you have to use `ssh://`-style URLs to specify your repository. The scp-style `git@yourgit.com:yourrepo` URLs do **not** support port specification, and will treat any port number as part of the repository's path. - -> earlier than v1.2 - -The Argo CD UI don't support configuring SSH credentials. The SSH credentials can only be configured using the Argo CD CLI: - -``` -argocd repo add git@github.com:argoproj/argocd-example-apps.git --ssh-private-key-path ~/.ssh/id_rsa -``` - -### GitHub App Credential - -Private repositories that are hosted on GitHub.com or GitHub Enterprise can be accessed using credentials from a GitHub Application. Consult the [GitHub documentation](https://docs.github.com/en/developers/apps/about-apps#about-github-apps) on how to create an application. - -!!!note - Ensure your application has at least `Read-only` permissions to the `Contents` of the repository. This is the minimum requirement. - -> previous to v1.9 - -GitHub App credentials are not supported. - -> v1.9 or later - -You can configure access to your Git repository hosted by GitHub.com or GitHub Enterprise using the GitHub App method by either using the CLI or the UI. - -Using the CLI: - -``` -argocd repo add https://github.com/argoproj/argocd-example-apps.git --github-app-id 1 --github-app-installation-id 2 --github-app-private-key-path test.private-key.pem -``` - -Using the UI: - -1. Navigate to `Settings/Repositories` - - ![connect repo overview](../assets/repo-add-overview.png) - -1. Click `Connect Repo using GitHub App` button, enter the URL, App Id, Installation Id, and the app's private key. - - ![connect repo](../assets/repo-add-github-app.png) - -1. Click `Connect` to test the connection and have the repository added - -!!!note - When pasting GitHub App private key in the UI, make sure there are no unintended line breaks or additional characters in the text area - -## Credential templates - -> previous to v1.4 - -Credential templates are available only via declarative setup, see [Repository credentials](../../operator-manual/declarative-setup#repository-credentials) in Operator Manual. - -> v1.4 and later - -You can also set up credentials to serve as templates for connecting repositories, without having to repeat credential configuration. For example, if you setup credential templates for the URL prefix `https://github.com/argoproj`, these credentials will be used for all repositories with this URL as prefix (e.g. `https://github.com/argoproj/argocd-example-apps`) that do not have their own credentials configured. - -To set up a credential template using the Web UI, simply fill in all relevant credential information in the __Connect repo using SSH__ or __Connect repo using HTTPS__ dialogues (as described above), but select __Save as credential template__ instead of __Connect__ to save the credential template. Be sure to only enter the prefix URL (i.e. `https://github.com/argoproj`) instead of the complete repository URL (i.e. `https://github.com/argoproj/argocd-example-apps`) in the field __Repository URL__ - -To manage credential templates using the CLI, use the `repocreds` sub-command, for example `argocd repocreds add https://github.com/argoproj --username youruser --password yourpass` would setup a credential template for the URL prefix `https://github.com/argoproj` using the specified username/password combination. Similar to the `repo` sub-command, you can also list and remove repository credentials using the `argocd repocreds list` and `argocd repocreds rm` commands, respectively. - -In order for ArgoCD to use a credential template for any given repository, the following conditions must be met: - -* The repository must either not be configured at all, or if configured, must not contain any credential information -* The URL configured for a credential template (e.g. `https://github.com/argoproj`) must match as prefix for the repository URL (e.g. `https://github.com/argoproj/argocd-example-apps`). - -!!! note - Repositories that require authentication can be added using CLI or Web UI without specifying credentials only after a matching repository credential has been set up - -!!! note - Matching credential template URL prefixes is done on a _best match_ effort, so the longest (best) match will take precedence. The order of definition is not important, as opposed to pre v1.4 configuration. - -The following is an example CLI session, depicting repository credential set-up: - -```bash -# Try to add a private repository without specifying credentials, will fail -$ argocd repo add https://docker-build/repos/argocd-example-apps -FATA[0000] rpc error: code = Unknown desc = authentication required - -# Setup a credential template for all repos under https://docker-build/repos -$ argocd repocreds add https://docker-build/repos --username test --password test -repository credentials for 'https://docker-build/repos' added - -# Repeat first step, add repo without specifying credentials -# URL for template matches, will succeed -$ argocd repo add https://docker-build/repos/argocd-example-apps -repository 'https://docker-build/repos/argocd-example-apps' added - -# Add another repo under https://docker-build/repos, specifying invalid creds -# Will fail, because it will not use the template (has own creds) -$ argocd repo add https://docker-build/repos/example-apps-part-two --username test --password invalid -FATA[0000] rpc error: code = Unknown desc = authentication required -``` - -## Self-signed & Untrusted TLS Certificates - -> v1.2 or later - -If you are connecting a repository on a HTTPS server using a self-signed certificate, or a certificate signed by a custom Certificate Authority (CA) which are not known to ArgoCD, the repository will not be added due to security reasons. This is indicated by an error message such as `x509: certificate signed by unknown authority`. - -1. You can let ArgoCD connect the repository in an insecure way, without verifying the server's certificate at all. This can be accomplished by using the `--insecure-skip-server-verification` flag when adding the repository with the `argocd` CLI utility. However, this should be done only for non-production setups, as it imposes a serious security issue through possible man-in-the-middle attacks. - -2. You can configure ArgoCD to use a custom certificate for the verification of the server's certificate using the `cert add-tls` command of the `argocd` CLI utility. This is the recommended method and suitable for production use. In order to do so, you will need the server's certificate, or the certificate of the CA used to sign the server's certificate, in PEM format. - -!!! note - For invalid server certificates, such as those without matching server name, or those that are expired, adding a CA certificate will not help. In this case, your only option will be to use the `--insecure-skip-server-verification` flag to connect the repository. You are strongly urged to use a valid certificate on the repository server, or to urge the server's administrator to replace the faulty certificate with a valid one. - -!!! note - TLS certificates are configured on a per-server, not on a per-repository basis. If you connect multiple repositories from the same server, you only have to configure the certificates once for this server. - -!!! note - It can take up to a couple of minutes until the changes performed by the `argocd cert` command are propagated across your cluster, depending on your Kubernetes setup. - -### Managing TLS certificates using the CLI - -You can list all configured TLS certificates by using the `argocd cert list` command using the `--cert-type https` modifier: - -```bash -$ argocd cert list --cert-type https -HOSTNAME TYPE SUBTYPE FINGERPRINT/SUBJECT -docker-build https rsa CN=ArgoCD Test CA -localhost https rsa CN=localhost -``` - -Example for adding a HTTPS repository to ArgoCD without verifying the server's certificate (**Caution:** This is **not** recommended for production use): - -```bash -argocd repo add --insecure-skip-server-verification https://git.example.com/test-repo - -``` - -Example for adding a CA certificate contained in file `~/myca-cert.pem` to properly verify the repository server: - -```bash -argocd cert add-tls git.example.com --from ~/myca-cert.pem -argocd repo add https://git.example.com/test-repo -``` - -You can also add more than one PEM for a server by concatenating them into the input stream. This might be useful if the repository server is about to replace the server certificate, possibly with one signed by a different CA. This way, you can have the old (current) as well as the new (future) certificate co-existing. If you already have the old certificate configured, use the `--upsert` flag and add the old and the new one in a single run: - -```bash -cat cert1.pem cert2.pem | argocd cert add-tls git.example.com --upsert -``` - -!!! note - To replace an existing certificate for a server, use the `--upsert` flag to the `cert add-tls` CLI command. - -Finally, TLS certificates can be removed using the `argocd cert rm` command with the `--cert-type https` modifier: - -```bash -argocd cert rm --cert-type https localhost -``` - -### Managing TLS certificates using the ArgoCD web UI - -It is possible to add and remove TLS certificates using the ArgoCD web UI: - -1. In the navigation pane to the left, click on "Settings" and choose "Certificates" from the settings menu - -1. The following page lists all currently configured certificates and provides you with the option to add either a new TLS certificate or SSH known entries: - - ![manage certificates](../assets/cert-management-overview.png) - -1. Click on "Add TLS certificate", fill in relevant data and click on "Create". Take care to specify only the FQDN of your repository server (not the URL) and that you C&P the complete PEM of your TLS certificate into the text area field, including the `----BEGIN CERTIFICATE----` and `----END CERTIFICATE----` lines: - - ![add tls certificate](../assets/cert-management-add-tls.png) - -1. To remove a certificate, click on the small three-dotted button next to the certificate entry, select "Remove" from the pop-up menu and confirm the removal in the following dialogue. - - ![remove certificate](../assets/cert-management-remove.png) - -### Managing TLS certificates using declarative configuration - -You can also manage TLS certificates in a declarative, self-managed ArgoCD setup. All TLS certificates are stored in the ConfigMap object `argocd-tls-cert-cm`. -Please refer to the [Operator Manual](../../operator-manual/declarative-setup/#repositories-using-self-signed-tls-certificates-or-are-signed-by-custom-ca) for more information. - -> Before v1.2 - -We do not currently have first-class support for this. See [#1513](https://github.com/argoproj/argo-cd/issues/1513). - -As a work-around, you can customize your Argo CD image. See [#1344](https://github.com/argoproj/argo-cd/issues/1344#issuecomment-479811810) - -## Unknown SSH Hosts - -If you are using a privately hosted Git service over SSH, then you have the following options: - -> v1.2 or later - -1. You can let ArgoCD connect the repository in an insecure way, without verifying the server's SSH host key at all. This can be accomplished by using the `--insecure-skip-server-verification` flag when adding the repository with the `argocd` CLI utility. However, this should be done only for non-production setups, as it imposes a serious security issue through possible man-in-the-middle attacks. - -2. You can make the server's SSH public key known to ArgoCD by using the `cert add-ssh` command of the `argocd` CLI utility. This is the recommended method and suitable for production use. In order to do so, you will need the server's SSH public host key, in the `known_hosts` format understood by `ssh`. You can get the server's public SSH host key e.g. by using the `ssh-keyscan` utility. - -!!! note - It can take up to a couple of minutes until the changes performed by the `argocd cert` command are propagated across your cluster, depending on your Kubernetes setup. - -!!! note - When importing SSH known hosts key from a `known_hosts` file, the hostnames or IP addresses in the input data must **not** be hashed. If your `known_hosts` file contains hashed entries, it cannot be used as input source for adding SSH known hosts - neither in the CLI nor in the UI. If you absolutely wish to use hashed known hosts data, the only option will be using declarative setup (see below). Be aware that this will break CLI and UI certificate management, so it is generally not recommended. - -### Managing SSH Known Hosts using the CLI - -You can list all configured SSH known host entries using the `argocd cert list` command with the `--cert-type ssh` modifier: - -```bash -$ argocd cert list --cert-type ssh -HOSTNAME TYPE SUBTYPE FINGERPRINT/SUBJECT -bitbucket.org ssh ssh-rsa SHA256:zzXQOXSRBEiUtuE8AikJYKwbHaxvSc0ojez9YXaGp1A -github.com ssh ssh-rsa SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 -gitlab.com ssh ecdsa-sha2-nistp256 SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw -gitlab.com ssh ssh-ed25519 SHA256:eUXGGm1YGsMAS7vkcx6JOJdOGHPem5gQp4taiCfCLB8 -gitlab.com ssh ssh-rsa SHA256:ROQFvPThGrW4RuWLoL9tq9I9zJ42fK4XywyRtbOz/EQ -ssh.dev.azure.com ssh ssh-rsa SHA256:ohD8VZEXGWo6Ez8GSEJQ9WpafgLFsOfLOtGGQCQo6Og -vs-ssh.visualstudio.com ssh ssh-rsa SHA256:ohD8VZEXGWo6Ez8GSEJQ9WpafgLFsOfLOtGGQCQo6Og -``` - -For adding SSH known host entries, the `argocd cert add-ssh` command can be used. You can either add from a file (using the `--from ` modifier), or by reading `stdin` when the `--batch` modifier was specified. In both cases, input must be in `known_hosts` format as understood by the OpenSSH client. - -Example for adding all available SSH public host keys for a server to ArgoCD, as collected by `ssh-keyscan`: - -```bash -ssh-keyscan server.example.com | argocd cert add-ssh --batch - -``` - -Example for importing an existing `known_hosts` file to ArgoCD: - -```bash -argocd cert add-ssh --batch --from /etc/ssh/ssh_known_hosts -``` - -Finally, SSH known host entries can be removed using the `argocd cert rm` command with the `--cert-type ssh` modifier: - -```bash -argocd cert rm bitbucket.org --cert-type ssh -``` - -If you have multiple SSH known host entries for a given host with different key sub-types (e.g. as for gitlab.com in the example above, there are keys of sub-types `ssh-rsa`, `ssh-ed25519` and `ecdsa-sha2-nistp256`) and you want to only remove one of them, you can further narrow down the selection using the `--cert-sub-type` modifier: - -```bash -argocd cert rm gitlab.com --cert-type ssh --cert-sub-type ssh-ed25519 -``` - -### Managing SSH known hosts data using the ArgoCD web UI - -It is possible to add and remove SSH known hosts entries using the ArgoCD web UI: - -1. In the navigation pane to the left, click on "Settings" and choose "Certificates" from the settings menu - -1. The following page lists all currently configured certificates and provides you with the option to add either a new TLS certificate or SSH known entries: - - ![manage certificates](../assets/cert-management-overview.png) - -1. Click on "Add SSH known hosts" and paste your SSH known hosts data in the following mask. **Important**: Make sure there are no line breaks in the entries (key data) when you paste the data. Afterwards, click on "Create". - - ![manage ssh known hosts](../assets/cert-management-add-ssh.png) - -1. To remove a certificate, click on the small three-dotted button next to the certificate entry, select "Remove" from the pop-up menu and confirm the removal in the following dialogue. - - ![remove certificate](../assets/cert-management-remove.png) - -### Managing SSH known hosts data using declarative setup - -You can also manage SSH known hosts entries in a declarative, self-managed ArgoCD setup. All SSH public host keys are stored in the ConfigMap object `argocd-ssh-known-hosts-cm`. For more details, please refer to the [Operator Manual](../../operator-manual/declarative-setup/#ssh-known-host-public-keys) - -> Before v1.2 - - -(1) You can customize the Argo CD Docker image by adding the host's SSH public key to `/etc/ssh/ssh_known_hosts`. Additional entries to this file can be generated using the `ssh-keyscan` utility (e.g. `ssh-keyscan your-private-git-server.com`. For more information see [example](https://github.com/argoproj/argo-cd/tree/master/examples/known-hosts) which demonstrates how `/etc/ssh/ssh_known_hosts` can be customized. - -!!! note - The `/etc/ssh/ssh_known_hosts` should include Git host on each Argo CD deployment as well as on a computer where `argocd repo add` is executed. After resolving issue - [#1514](https://github.com/argoproj/argo-cd/issues/1514) only `argocd-repo-server` deployment has to be customized. - -(1) Add repository using Argo CD CLI and `--insecure-ignore-host-key` flag: - -```bash -argocd repo add git@github.com:argoproj/argocd-example-apps.git --ssh-private-key-path ~/.ssh/id_rsa --insecure-ignore-host-key -``` - -!!! warning "Don't use in production" - The `--insecure-ignore-host-key` should not be used in production as this is subject to man-in-the-middle attacks. - -!!! warning "This does not work for Kustomize remote bases or custom plugins" - For Kustomize support, see [#827](https://github.com/argoproj/argo-cd/issues/827). - -## Git Submodules - -> v1.4 or later - -Submodules are supported and will be picked up automatically. If the submodule repository requires authentication then the credentials will need to match the credentials of the parent repository. Set ARGOCD_GIT_MODULES_ENABLED=false to disable submodule support - -## Declarative Configuration - -See [declarative setup](../../operator-manual/declarative-setup#Repositories) - diff --git a/docs/user-guide/projects.md b/docs/user-guide/projects.md deleted file mode 100644 index ad9615728127b..0000000000000 --- a/docs/user-guide/projects.md +++ /dev/null @@ -1,213 +0,0 @@ -## Projects - -Projects provide a logical grouping of applications, which is useful when Argo CD is used by multiple -teams. Projects provide the following features: - -* restrict *what* may be deployed (trusted Git source repositories) -* restrict *where* apps may be deployed to (destination clusters and namespaces) -* restrict what kinds of objects may or may not be deployed (e.g. RBAC, CRDs, DaemonSets, NetworkPolicy etc...) -* defining project roles to provide application RBAC (bound to OIDC groups and/or JWT tokens) - -### The Default Project - -Every application belongs to a single project. If unspecified, an application belongs to the -`default` project, which is created automatically and by default, permits deployments from any -source repo, to any cluster, and all resource Kinds. The default project can be modified, but not -deleted. When initially created, it's specification is configured to be the most permissive: - -```yaml -spec: - sourceRepos: - - '*' - destinations: - - namespace: '*' - server: '*' - clusterResourceWhitelist: - - group: '*' - kind: '*' -``` - -### Creating Projects - -Additional projects can be created to give separate teams different levels of access to namespaces. -The following command creates a new project `myproject` which can deploy applications to namespace -`mynamespace` of cluster `https://kubernetes.default.svc`. The permitted Git source repository is -set to `https://github.com/argoproj/argocd-example-apps.git` repository. - -```bash -argocd proj create myproject -d https://kubernetes.default.svc,mynamespace -s https://github.com/argoproj/argocd-example-apps.git -``` - -### Managing Projects - -Permitted source Git repositories are managed using commands: - -```bash -argocd proj add-source -argocd proj remove-source -``` - -Permitted destination clusters and namespaces are managed with the commands (for clusters always provide server, the name is not used for matching): - -```bash -argocd proj add-destination , -argocd proj remove-destination , -``` - -Permitted destination K8s resource kinds are managed with the commands. Note that namespaced-scoped -resources are restricted via a deny list, whereas cluster-scoped resources are restricted via -allow list. - -```bash -argocd proj allow-cluster-resource -argocd proj allow-namespace-resource -argocd proj deny-cluster-resource -argocd proj deny-namespace-resource -``` - -### Assign Application To A Project - -The application project can be changed using `app set` command. In order to change the project of -an app, the user must have permissions to access the new project. - -``` -argocd app set guestbook-default --project myproject -``` - -## Project Roles - -Projects include a feature called roles that enable automated access to a project's applications. -These can be used to give a CI pipeline a restricted set of permissions. For example, a CI system -may only be able to sync a single app (but not change its source or destination). - -Projects can have multiple roles, and those roles can have different access granted to them. These -permissions are called policies, and they are stored within the role as a list of policy strings. -A role's policy can only grant access to that role and are limited to applications within the role's -project. However, the policies have an option for granting wildcard access to any application -within a project. - -In order to create roles in a project and add policies to a role, a user will need permission to -update a project. The following commands can be used to manage a role. - -```bash -argocd proj role list -argocd proj role get -argocd proj role create -argocd proj role delete -argocd proj role add-policy -argocd proj role remove-policy -``` - -Project roles in itself are not useful without generating a token to associate to that role. Argo CD -supports JWT tokens as the means to authenticate to a role. Since the JWT token is -associated with a role's policies, any changes to the role's policies will immediately take effect -for that JWT token. - -The following commands are used to manage the JWT tokens. - -```bash -argocd proj role create-token PROJECT ROLE-NAME -argocd proj role delete-token PROJECT ROLE-NAME ISSUED-AT -``` - -Since the JWT tokens aren't stored in Argo CD, they can only be retrieved when they are created. A -user can leverage them in the cli by either passing them in using the `--auth-token` flag or setting -the ARGOCD_AUTH_TOKEN environment variable. The JWT tokens can be used until they expire or are -revoked. The JWT tokens can created with or without an expiration, but the default on the cli is -creates them without an expirations date. Even if a token has not expired, it cannot be used if -the token has been revoked. - -Below is an example of leveraging a JWT token to access a guestbook application. It makes the -assumption that the user already has a project named myproject and an application called -guestbook-default. - -```bash -PROJ=myproject -APP=guestbook-default -ROLE=get-role -argocd proj role create $PROJ $ROLE -argocd proj role create-token $PROJ $ROLE -e 10m -JWT= -argocd proj role list $PROJ -argocd proj role get $PROJ $ROLE - -# This command will fail because the JWT Token associated with the project role does not have a policy to allow access to the application -argocd app get $APP --auth-token $JWT -# Adding a policy to grant access to the application for the new role -argocd proj role add-policy $PROJ $ROLE --action get --permission allow --object $APP -argocd app get $APP --auth-token $JWT - -# Removing the policy we added and adding one with a wildcard. -argocd proj role remove-policy $PROJ $ROLE -a get -o $APP -argocd proj role add-policy $PROJ $ROLE -a get --permission allow -o '*' -# The wildcard allows us to access the application due to the wildcard. -argocd app get $APP --auth-token $JWT -argocd proj role get $PROJ $ROLE - - -argocd proj role get $PROJ $ROLE -# Revoking the JWT token -argocd proj role delete-token $PROJ $ROLE -# This will fail since the JWT Token was deleted for the project role. -argocd app get $APP --auth-token $JWT -``` - -## Configuring RBAC With Projects - -The project Roles allows configuring RBAC rules scoped to the project. The following sample -project provides read-only permissions on project applications to any member of `my-oidc-group` group. - -*AppProject example:* - -```yaml -apiVersion: argoproj.io/v1alpha1 -kind: AppProject -metadata: - name: my-project - namespace: argocd -spec: - roles: - # A role which provides read-only access to all applications in the project - - name: read-only - description: Read-only privileges to my-project - policies: - - p, proj:my-project:read-only, applications, get, my-project/*, allow - groups: - - my-oidc-group -``` - -You can use `argocd proj role` CLI commands or project details page in the user interface to configure the policy. -Note that each project role policy rule must be scoped to that project only. Use the `argocd-rbac-cm` ConfigMap described in -[RBAC](../operator-manual/rbac.md) documentation if you want to configure cross project RBAC rules. - -## Configuring Global Projects (v1.8) - -Global projects can be configured to provide configurations that other projects can inherit from. - -Projects, which match `matchExpressions` specified in `argocd-cm` ConfigMap, inherit the following fields from the global project: - -* namespaceResourceBlacklist -* namespaceResourceWhitelist -* clusterResourceBlacklist -* clusterResourceWhitelist -* SyncWindows -* SourceRepos -* Destinations - -Configure global projects in `argocd-cm` ConfigMap: -```yaml -data: - globalProjects: |- - - labelSelector: - matchExpressions: - - key: opt - operator: In - values: - - prod - projectName: proj-global-test -kind: ConfigMap -``` - -Valid operators you can use are: In, NotIn, Exists, DoesNotExist. Gt, and Lt. - -projectName: `proj-global-test` should be replaced with your own global project name. diff --git a/docs/user-guide/resource_hooks.md b/docs/user-guide/resource_hooks.md deleted file mode 100644 index bc75874a6fcab..0000000000000 --- a/docs/user-guide/resource_hooks.md +++ /dev/null @@ -1,133 +0,0 @@ -# Resource Hooks -## Overview - -Synchronization can be configured using resource hooks. Hooks are ways to run scripts before, during, -and after a Sync operation. Hooks can also be run if a Sync operation fails at any point. Some use cases for hooks are: - -* Using a `PreSync` hook to perform a database schema migration before deploying a new version of the app. -* Using a `Sync` hook to orchestrate a complex deployment requiring more sophistication than the -Kubernetes rolling update strategy. -* Using a `PostSync` hook to run integration and health checks after a deployment. -* Using a `SyncFail` hook to run clean-up or finalizer logic if a Sync operation fails. _`SyncFail` hooks are only available starting in v1.2_ - -## Usage - -Hooks are simply Kubernetes manifests tracked in the source repository of your Argo CD Application annotated with `argocd.argoproj.io/hook`, e.g.: - -```yaml -apiVersion: batch/v1 -kind: Job -metadata: - generateName: schema-migrate- - annotations: - argocd.argoproj.io/hook: PreSync -``` - -During a Sync operation, Argo CD will apply the resource during the appropriate phase of the -deployment. Hooks can be any type of Kubernetes resource kind, but tend to be Pod, -[Job](https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/) -or [Argo Workflows](https://github.com/argoproj/argo). Multiple hooks can be specified as a comma -separated list. - -The following hooks are defined: - -| Hook | Description | -|------|-------------| -| `PreSync` | Executes prior to the application of the manifests. | -| `Sync` | Executes after all `PreSync` hooks completed and were successful, at the same time as the application of the manifests. | -| `Skip` | Indicates to Argo CD to skip the application of the manifest. | -| `PostSync` | Executes after all `Sync` hooks completed and were successful, a successful application, and all resources in a `Healthy` state. | -| `SyncFail` | Executes when the sync operation fails. _Available starting in v1.2_ | - -### Generate Name - -Named hooks (i.e. ones with `/metadata/name`) will only be created once. If you want a hook to be re-created each time either use `BeforeHookCreation` policy (see below) or `/metadata/generateName`. - -## Selective Sync - -Hooks are not run during [selective sync](selective_sync.md). - -## Hook Deletion Policies - -Hooks can be deleted in an automatic fashion using the annotation: `argocd.argoproj.io/hook-delete-policy`. - -```yaml -apiVersion: batch/v1 -kind: Job -metadata: - generateName: integration-test- - annotations: - argocd.argoproj.io/hook: PostSync - argocd.argoproj.io/hook-delete-policy: HookSucceeded -``` - -The following policies define when the hook will be deleted. - -| Policy | Description | -|--------|-------------| -| `HookSucceeded` | The hook resource is deleted after the hook succeeded (e.g. Job/Workflow completed successfully). | -| `HookFailed` | The hook resource is deleted after the hook failed. | -| `BeforeHookCreation` | Any existing hook resource is deleted before the new one is created (since v1.3). | - -As an alternative to hook deletion policies, both Jobs and Argo Workflows support the -[`ttlSecondsAfterFinished`](https://kubernetes.io/docs/concepts/workloads/controllers/ttlafterfinished/) -field in the spec, which let their respective controllers delete the Job/Workflow after it completes. - -```yaml -spec: - ttlSecondsAfterFinished: 600 -``` - -## Using A Hook To Send A Slack Message - -The following example uses the Slack API to send a a Slack message when sync completes or fails: - -```yaml -apiVersion: batch/v1 -kind: Job -metadata: - generateName: app-slack-notification- - annotations: - argocd.argoproj.io/hook: PostSync - argocd.argoproj.io/hook-delete-policy: HookSucceeded -spec: - template: - spec: - containers: - - name: slack-notification - image: curlimages/curl - command: - - "curl" - - "-X" - - "POST" - - "--data-urlencode" - - "payload={\"channel\": \"#somechannel\", \"username\": \"hello\", \"text\": \"App Sync succeeded\", \"icon_emoji\": \":ghost:\"}" - - "https://hooks.slack.com/services/..." - restartPolicy: Never - backoffLimit: 2 -``` - -```yaml -apiVersion: batch/v1 -kind: Job -metadata: - generateName: app-slack-notification-fail- - annotations: - argocd.argoproj.io/hook: SyncFail - argocd.argoproj.io/hook-delete-policy: HookSucceeded -spec: - template: - spec: - containers: - - name: slack-notification - image: curlimages/curl - command: - - "curl" - - "-X" - - "POST" - - "--data-urlencode" - - "payload={\"channel\": \"#somechannel\", \"username\": \"hello\", \"text\": \"App Sync failed\", \"icon_emoji\": \":ghost:\"}" - - "https://hooks.slack.com/services/..." - restartPolicy: Never - backoffLimit: 2 -``` diff --git a/docs/user-guide/selective_sync.md b/docs/user-guide/selective_sync.md deleted file mode 100644 index d607cc636b1a1..0000000000000 --- a/docs/user-guide/selective_sync.md +++ /dev/null @@ -1,17 +0,0 @@ -# Selective Sync - -A *selective sync* is one where only some resources are sync'd. You can choose which resources from the UI: - -![selective sync](../assets/selective-sync.png) - -When doing so, bear in mind: - -* Your sync is not recorded in the history, and so rollback is not possible. -* Hooks are not run. - -## Selective Sync Option - ->v1.8 - -Turning on selective sync option which will sync only out-of-sync resources. -See [sync options](sync-options.md#selective-sync) documentation for more details. diff --git a/docs/user-guide/status-badge.md b/docs/user-guide/status-badge.md deleted file mode 100644 index 9faba23adb3fa..0000000000000 --- a/docs/user-guide/status-badge.md +++ /dev/null @@ -1,17 +0,0 @@ -# Status Badge - -> v1.2 - -Argo CD can display a badge with health and sync status for any application. The feature is disabled by default because badge image is available to any user without authentication. -The feature can be enabled using `statusbadge.enabled` key of `argocd-cm` ConfigMap (see [argocd-cm.yaml](../operator-manual/argocd-cm.yaml)). - -![healthy and synced](../assets/status-badge-healthy-synced.png) - -To show this badge, use the following URL format `${argoCdBaseUrl}/api/badge?name=${appName}`, e.g. http://localhost:8080/api/badge?name=guestbook. -The URLs for status image are available on application details page: - -1. Navigate to application details page and click on 'Details' button. -1. Scroll down to 'Status Badge' section. -1. Select required template such as URL, Markdown etc. -for the status image URL in markdown, html, etc are available . -1. Copy the text and paste it into your README or website. \ No newline at end of file diff --git a/docs/user-guide/sync-options.md b/docs/user-guide/sync-options.md deleted file mode 100644 index 3561b2885baf8..0000000000000 --- a/docs/user-guide/sync-options.md +++ /dev/null @@ -1,85 +0,0 @@ -# Sync Options - -## No Prune Resources - ->v1.1 - -You may wish to prevent an object from being pruned: - -```yaml -metadata: - annotations: - argocd.argoproj.io/sync-options: Prune=false -``` - -In the UI, the pod will simply appear as out-of-sync: - -![sync option no prune](../assets/sync-option-no-prune.png) - - -The sync-status panel shows that pruning was skipped, and why: - -![sync option no prune](../assets/sync-option-no-prune-sync-status.png) - -The app will be out of sync if Argo CD expects a resource to be pruned. You may wish to use this along with [compare options](compare-options.md). - -## Disable Kubectl Validation - ->v1.2 - -For a certain class of objects, it is necessary to `kubectl apply` them using the `--validate=false` flag. Examples of this are kubernetes types which uses `RawExtension`, such as [ServiceCatalog](https://github.com/kubernetes-incubator/service-catalog/blob/master/pkg/apis/servicecatalog/v1beta1/types.go#L497). You can do using this annotations: - - -```yaml -metadata: - annotations: - argocd.argoproj.io/sync-options: Validate=false -``` - -If you want to exclude a whole class of objects globally, consider setting `resource.customizations` in [system level configuration](../user-guide/diffing.md#system-level-configuration). - -## Skip Dry Run for new custom resources types - ->v1.6 - -When syncing a custom resource which is not yet known to the cluster, there are generally two options: - -1) The CRD manifest is part of the same sync. Then ArgoCD will automatically skip the dry run, the CRD will be applied and the resource can be created. -2) In some cases the CRD is not part of the sync, but it could be created in another way, e.g. by a controller in the cluster. An example is [gatekeeper](https://github.com/open-policy-agent/gatekeeper), -which creates CRDs in response to user defined `ConstraintTemplates`. ArgoCD cannot find the CRD in the sync and will fail with the error `the server could not find the requested resource`. - -To skip the dry run for missing resource types, use the following annotation: - -```yaml -metadata: - annotations: - argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true -``` - -The dry run will still be executed if the CRD is already present in the cluster. - -## Selective Sync - -Currently when syncing using auto sync ArgoCD applies every object in the application. -For applications containing thousands of objects this takes quite a long time and puts undue pressure on the api server. -Turning on selective sync option which will sync only out-of-sync resources. - -You can add this option by following ways - -1) Add `ApplyOutOfSync=true` in manifest - -Example: - -```yaml -syncPolicy: - syncOptions: - - ApplyOutOfSyncOnly=true -``` - -2) Set sync option via argocd cli - -Example: - -```bash -$ argocd app set guestbook --sync-option ApplyOutOfSyncOnly=true -``` \ No newline at end of file diff --git a/docs/user-guide/sync-waves.md b/docs/user-guide/sync-waves.md deleted file mode 100644 index ad6ce87856a6e..0000000000000 --- a/docs/user-guide/sync-waves.md +++ /dev/null @@ -1,50 +0,0 @@ -# Sync Phases and Waves - ->v1.1 - - - -Argo CD executes a sync operation in a number of steps. At a high-level, there are three phases *pre-sync*, *sync* and *post-sync*. - -Within each phase you can have one or more waves, that allows you to ensure certain resources are healthy before subsequent resources are synced. - -## How Do I Configure Phases? - -Pre-sync and post-sync can only contain hooks. Apply the hook annotation: - -```yaml -metadata: - annotations: - argocd.argoproj.io/hook: PreSync -``` - -[Read more about hooks](resource_hooks.md). - -## How Do I Configure Waves? - -Specify the wave using the following annotation: - -```yaml -metadata: - annotations: - argocd.argoproj.io/sync-wave: "5" -``` - -Hooks and resources are assigned to wave zero by default. The wave can be negative, so you can create a wave that runs before all other resources. - -## How Does It Work? - -When Argo CD starts a sync, it orders the resources in the following precedence: - -* The phase -* The wave they are in (lower values first) -* By kind (e.g. namespaces first) -* By name - -It then determines the number of the next wave to apply. This is the first number where any resource is out-of-sync or unhealthy. - -It applies resources in that wave. - -It repeats this process until all phases and waves are in-sync and healthy. - -Because an application can have resources that are unhealthy in the first wave, it may be that the app can never get to healthy. diff --git a/docs/user-guide/tool_detection.md b/docs/user-guide/tool_detection.md deleted file mode 100644 index bd98e5a91730e..0000000000000 --- a/docs/user-guide/tool_detection.md +++ /dev/null @@ -1,38 +0,0 @@ -# Tool Detection - -The tool used to build an application is detected as follows: - -If a specific tool is explicitly configured, then that tool is selected to create your application's manifests. - -The tool can be explicitly specified in the Application custom resource like this: -``` -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - ... -spec: - ... - source: - ... - - # Tool -> plain directory - directory: - recurse: true -... -``` - -You also can select the tool in the Application creation wizard in the web user interface. The default is 'Directory'. Press the dropdown button beneath the tool name if you want to choose a different one. - - -If not, then the tool is detected implicitly as follows: - -* **Ksonnet** if there are two files, one named `app.yaml` and one named `components/params.libsonnet`. -* **Helm** if there's a file matching `Chart.yaml`. -* **Kustomize** if there's a `kustomization.yaml`, `kustomization.yml`, or `Kustomization` - -Otherwise it is assumed to be a plain **directory** application. - -## References - -* [reposerver/repository/repository.go/GetAppSourceType](https://github.com/argoproj/argo-cd/blob/master/reposerver/repository/repository.go#L286) -* [server/repository/repository.go/listAppTypes](https://github.com/argoproj/argo-cd/blob/master/server/repository/repository.go#L97) diff --git a/docs/user-guide/tracking_strategies.md b/docs/user-guide/tracking_strategies.md deleted file mode 100644 index d3175f4e9541d..0000000000000 --- a/docs/user-guide/tracking_strategies.md +++ /dev/null @@ -1,65 +0,0 @@ -# Tracking and Deployment Strategies - -An Argo CD application spec provides several different ways of tracking Kubernetes resource manifests. - -In all tracking strategies, the app has the option to sync automatically. If [auto-sync](auto_sync.md) -is configured, the new resources manifests will be applied automatically -- as soon as a difference -is detected. - -!!! note - In all tracking strategies, any [parameter overrides](parameters.md) take precedence over the Git state. - -## Helm - -For Helm, all versions are [Semantic Versions](https://semver.org/). As a result, you can either version ranges: - -| Use Case | How | Examples | -|-|-|-| -| Pin to a version (e.g. in production) | Use the version number | `1.2.0` | -| Track patches (e.g. in pre-production) | Use a range | `1.2.*` or `>=1.2.0 <1.3.0` | -| Track minor releases (e.g. in QA) | Use a range | `1.*` or `>=1.0.0 <2.0.0` | -| Use the latest (e.g. in local development) | Use star range | `*` or `>=0.0.0` | - -[Read about version ranges](https://www.telerik.com/blogs/the-mystical-magical-semver-ranges-used-by-npm-bower) - -## Git - -For Git, all versions are Git references: - -| Use Case | How | Notes | -|-|-|-| -| Pin to a version (e.g. in production) | Either (a) tag the commit with (e.g. `v1.2.0`) and use that tag, or (b) using commit SHA. | See [commit pinning](#commit-pinning). | -| Track patches (e.g. in pre-production) | Tag/re-tag the commit, e.g. (e.g. `v1.2`) and use that tag. | See [tag tracking](#tag-tracking) | -| Track minor releases (e.g. in QA) | Re-tag the commit as (e.g. `v1`) and use that tag. | See [tag tracking](#tag-tracking) | -| Use the latest (e.g. in local development) | Use `HEAD` or `master` (assuming `master` is your master branch). | See [HEAD / Branch Tracking](#head-branch-tracking) | - - -### HEAD / Branch Tracking - -If a branch name, or a symbolic reference (like HEAD) is specified, Argo CD will continually compare -live state against the resource manifests defined at the tip of the specified branch or the -resolved commit of the symbolic reference. - -To redeploy an app, makes a changes to your manifests, commit/push to the branch/symbolic reference. They will then detected by Argo CD. - -### Tag Tracking - -If a tag is specified, the manifests at the specified Git tag will be used to perform the sync -comparison. This provides some advantages over branch tracking in that a tag is generally considered -more stable, and less frequently updated, with some manual judgement of what constitutes a tag. - -To redeploy an app, the user uses Git to change the meaning of a tag by retagging it to a -different commit SHA. Argo CD will detect the new meaning of the tag when performing the -comparison/sync. - -### Commit Pinning - -If a Git commit SHA is specified, the app is effectively pinned to the manifests defined at -the specified commit. This is the most restrictive of the techniques and is typically used to -control production environments. - -Since commit SHAs cannot change meaning, the only way to change the live state of an app -which is pinned to a commit, is by updating the tracking revision in the application to a different -commit containing the new manifests. Note that [parameter overrides](parameters.md) can still be set -on an app which is pinned to a revision. - diff --git a/mkdocs.yml b/mkdocs.yml index f8d3f346d55d6..168a14ba0ddac 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -9,7 +9,6 @@ theme: text: 'Work Sans' logo: 'assets/logo.png' favicon: 'assets/favicon.png' - # language: en-custom custom_dir: overrides extra_javascript: - assets/versions.js @@ -18,6 +17,7 @@ extra_css: google_analytics: - 'UA-105170809-2' - 'auto' + markdown_extensions: - codehilite - admonition @@ -25,98 +25,100 @@ markdown_extensions: permalink: true nav: - Overview: index.md - - understand_the_basics.md - - core_concepts.md - - getting_started.md - - Operator Manual: - - operator-manual/index.md - - operator-manual/architecture.md - - operator-manual/declarative-setup.md - - operator-manual/ingress.md - - User Management: - - operator-manual/user-management/index.md - - operator-manual/user-management/auth0.md - - operator-manual/user-management/microsoft.md - - operator-manual/user-management/okta.md - - operator-manual/user-management/onelogin.md - - operator-manual/user-management/keycloak.md - - operator-manual/user-management/openunison.md - - operator-manual/user-management/google.md - - operator-manual/rbac.md - - operator-manual/security.md - - operator-manual/cluster-bootstrapping.md - - operator-manual/secret-management.md - - operator-manual/high_availability.md - - operator-manual/disaster_recovery.md - - operator-manual/webhook.md - - operator-manual/health.md - - operator-manual/custom_tools.md - - operator-manual/custom-styles.md - - operator-manual/metrics.md - - operator-manual/notifications.md - - operator-manual/troubleshooting.md - - Server Configuration Parameters: - - operator-manual/server-commands/argocd-server.md - - operator-manual/server-commands/argocd-application-controller.md - - operator-manual/server-commands/argocd-repo-server.md - - operator-manual/server-commands/argocd-dex.md - - argocd-util Tools: operator-manual/server-commands/argocd-util.md + - Concepts & Terminology: basics/terminology.md + - Getting started: + - Server installation: getting_started/install.md + - CLI installation: getting_started/install_cli.md + - First steps: getting_started/first_steps.md + - Basics: + - Applications: + - Overview: basics/apps/index.md + - Source: basics/apps/source.md + - Destination: basics/apps/destination.md + - State: basics/apps/state.md + - Managing Applications: basics/apps/manage.md + - Clusters: + - Overview: basics/clusters/index.md + - Internal: basics/clusters/internal.md + - External clusters: basics/clusters/external.md + - Managing clusters: basics/clusters/manage.md + - Repositories: + - Overview: basics/repos/index.md + - Authentication: basics/repos/auth.md + - Managing Repositories: basics/repos/manage.md + - Repos: basics/repositories.md + - Projects: + - Overview: basics/projects/index.md + - Settings: basics/projects/settings.md + - Roles: basics/projects/roles.md + - Syncing: + - Overview: syncing/index.md + - Sync states: syncing/states.md + - Sync policy: syncing/policy.md + - Sync options: syncing/options.md + - Sync waves: syncing/waves.md + - Sync windows: syncing/windows.md + - Tracking strategies: syncing/tracking.md + - Application health: syncing/health.md + - Diffing behavior: syncing/diffing.md + - GnuPG commit verification: syncing/gnupg.md + - Git refresh webhooks: syncing/git_webhooks.md + - Resource Hooks: syncing/hooks.md + - Tools: + - Overview: tools/index.md + - Helm: tools/helm.md + - Kustomize: tools/kustomize.md + - JSonnet: tools/jsonnet.md + - Third-party tools: tools/plugins.md + - Access control & RBAC: + - Overview: rbac/index.md + - Operations & Maintenance: + - Architectural Overview: operations/index.md + - Backup & Restore: operations/backup_restore.md + - Scaling Up: operations/scaling.md + - Metrics: operations/metrics.md + - Ingress configuration: + - Overview: operations/ingress/index.md + - Ambassador: operations/ingress/ambassador.md + - AWS ALB and ELB: operations/ingress/aws.md + - Contour: operations/ingress/contour.md + - Nginx: operations/ingress/nginx.md + - Traefik: operations/ingress/traefik.md + - Local users: operations/users.md + - Security: operations/security.md + - Single Sign On (SSO): operations/sso/overview.md - Upgrading: - - operator-manual/upgrading/overview.md - - operator-manual/upgrading/1.7-1.8.md - - operator-manual/upgrading/1.6-1.7.md - - operator-manual/upgrading/1.5-1.6.md - - operator-manual/upgrading/1.4-1.5.md - - operator-manual/upgrading/1.3-1.4.md - - operator-manual/upgrading/1.2-1.3.md - - operator-manual/upgrading/1.1-1.2.md - - operator-manual/upgrading/1.0-1.1.md - - User Guide: - - user-guide/index.md - - user-guide/application_sources.md - - user-guide/kustomize.md - - user-guide/helm.md - - user-guide/ksonnet.md - - user-guide/jsonnet.md - - user-guide/config-management-plugins.md - - user-guide/tool_detection.md - - user-guide/projects.md - - user-guide/private-repositories.md - - GnuPG verification: user-guide/gpg-verification.md - - user-guide/auto_sync.md - - user-guide/diffing.md - - user-guide/orphaned-resources.md - - user-guide/compare-options.md - - user-guide/sync-options.md - - user-guide/parameters.md - - user-guide/build-environment.md - - user-guide/tracking_strategies.md - - user-guide/resource_hooks.md - - user-guide/selective_sync.md - - user-guide/sync-waves.md - - user-guide/sync_windows.md - - user-guide/ci_automation.md - - user-guide/app_deletion.md - - user-guide/best_practices.md - - user-guide/status-badge.md - - user-guide/external-url.md - - Command Reference: user-guide/commands/argocd.md - - Developer Guide: - - developer-guide/index.md - - developer-guide/contributing.md - - developer-guide/running-locally.md - - developer-guide/debugging-remote-environment.md - - developer-guide/api-docs.md - - developer-guide/test-e2e.md - - developer-guide/dependencies.md - - developer-guide/ci.md - - developer-guide/releasing.md - - developer-guide/site.md - - developer-guide/static-code-analysis.md - - developer-guide/faq.md - - faq.md - - security_considerations.md - - Support: SUPPORT.md - - roadmap.md + - Upgrading Argo CD: operations/upgrading/index.md + - Upgrade guides: + - 1.7 to 1.8: operations/upgrading/1_7-1_8.md + - 1.6 to 1.7: operations/upgrading/1_6-1_7.md + - 1.5 to 1.6: operations/upgrading/1_5-1_6.md + - 1.4 to 1.5: operations/upgrading/1_4-1_5.md + - 1.3 to 1.4: operations/upgrading/1_3-1_4.md + - 1.2 to 1.3: operations/upgrading/1_2-1_3.md + - 1.1 to 1.2: operations/upgrading/1_1-1_2.md + - Troubleshooting: + - Performance: troubleshooting/performance.md + - Common Issues: troubleshooting/common-issues.md + - Reference: + - Custom Resource Definitions: + - Application CRD: reference/crd/application.md + - AppProject CRD: reference/crd/appproject.md + - Configuration: + - argocd-cm: reference/config/argocd-cm.md + - argocd-secret: reference/config/argocd-secret.md + - argocd-ssh-known-hosts-cm: reference/config/argocd-ssh-known-hosts-cm.md + - argocd-tls-certs-cm: reference/config/argocd-tls-certs-cm.md + - argocd-gpg-keys-cm: reference/config/argocd-gpg-keys-cm.md + - cluster-secret: reference/config/cluster-secret.md + - CLI usage: + - argocd: reference/cli/argocd.md + - argocd-util: reference/cli/argocd-util.md + - Server workload parametrization: + - argocd-server: reference/server/argocd-server.md + - argocd-repo-server: reference/server/argocd-repo-server.md + - argocd-application-controller: reference/server/argocd-application-controller.md + - FAQ: faq.md + - Community: community.md - Releases ⧉: https://github.com/argoproj/argo-cd/releases - Blog ⧉: https://blog.argoproj.io/