github.com/argoproj/argo-cd/v2@v2.10.9/docs/operator-manual/upgrading/2.4-2.5.md (about)

     1  # v2.4 to 2.5
     2  
     3  ## Known Issues
     4  
     5  ### Broken `project` filter before 2.5.15
     6  
     7  Argo CD 2.4.0 introduced a breaking API change, renaming the `project` filter to `projects`.
     8  
     9  #### Impact to API clients
    10  
    11  A similar issue applies to other API clients which communicate with the Argo CD API server via its REST API. If the
    12  client uses the `project` field to filter projects, the filter will not be applied. **The failing project filter could
    13  have detrimental consequences if, for example, you rely on it to list Applications to be deleted.**
    14  
    15  #### Impact to CLI clients
    16  
    17  CLI clients older that v2.4.0 rely on client-side filtering and are not impacted by this bug.
    18  
    19  #### How to fix the problem
    20  
    21  Upgrade to Argo CD >=2.4.27, >=2.5.15, or >=2.6.6. This version of Argo CD will accept both `project` and `projects` as
    22  valid filters.
    23  
    24  ### Broken matrix-nested git files generator in 2.5.14
    25  
    26  Argo CD 2.5.14 introduced a bug in the matrix-nested git files generator. The bug only applies when the git files
    27  generator is the second generator nested under a matrix. For example:
    28  
    29  ```yaml
    30  apiVersion: argoproj.io/v1alpha1
    31  kind: ApplicationSet
    32  metadata:
    33    name: guestbook
    34  spec:
    35    generators:
    36    - matrix:
    37        generators:
    38          - clusters: {}
    39          - git:
    40              repoURL: https://git.example.com/org/repo.git
    41              revision: HEAD
    42              files:
    43                - path: "defaults/*.yaml"
    44    template:
    45      # ...
    46  ```
    47  
    48  The nested git files generator will produce no parameters, causing the matrix generator to also produce no parameters.
    49  This will cause the ApplicationSet to produce no Applications. If the ApplicationSet controller is
    50  [configured with the ability to delete applications](https://argo-cd.readthedocs.io/en/latest/operator-manual/applicationset/Controlling-Resource-Modification/),
    51  it will delete all Applications which were previously created by the ApplicationSet.
    52  
    53  To avoid this issue, upgrade directly to >=2.5.15 or >= 2.6.6.
    54  
    55  ## Configure RBAC to account for new `applicationsets` resource
    56  
    57  2.5 introduces a new `applicationsets` [RBAC resource](https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/#rbac-resources-and-actions).
    58  
    59  When you upgrade to 2.5, RBAC policies with `*` in the resource field and `create`, `update`, `delete`, `get`, or `*` in the action field will automatically grant the `applicationsets` privilege.
    60  
    61  To avoid granting the new privilege, replace the existing policy with a list of new policies explicitly listing the old resources.
    62  
    63  ### Example
    64  
    65  Old:
    66  
    67  ```csv
    68  p, role:org-admin, *, create, *, allow
    69  ```
    70  
    71  New:
    72  
    73  ```csv
    74  p, role:org-admin, clusters,     create, *, allow
    75  p, role:org-admin, projects,     create, *, allow
    76  p, role:org-admin, applications, create, *, allow
    77  p, role:org-admin, repositories, create, *, allow
    78  p, role:org-admin, certificates, create, *, allow
    79  p, role:org-admin, accounts,     create, *, allow
    80  p, role:org-admin, gpgkeys,      create, *, allow
    81  p, role:org-admin, exec,         create, *, allow
    82  ```
    83  
    84  (Note that `applicationsets` is missing from the list, to preserve pre-2.5 permissions.)
    85  
    86  ## argocd-cm plugins (CMPs) are deprecated
    87  
    88  Starting with Argo CD v2.5, installing config management plugins (CMPs) via the `argocd-cm` ConfigMap is deprecated.
    89  ~~Support will be removed in v2.6.~~ Support will be removed in v2.7.
    90  
    91  You can continue to use the plugins by [installing them as sidecars](https://argo-cd.readthedocs.io/en/stable/user-guide/config-management-plugins/)
    92  on the repo-server Deployment.
    93  
    94  Sidecar plugins are significantly more secure. Plugin code runs in its own container with an almost completely-isolated
    95  filesystem. If an attacker compromises a plugin, the attacker's ability to cause harm is significantly mitigated.
    96  
    97  To determine whether argocd-cm plugins are still in use, scan your argocd-repo-server and argocd-server logs for the 
    98  following message:
    99  
   100  > argocd-cm plugins are deprecated, and support will be removed in v2.6. Upgrade your plugin to be installed via sidecar. https://argo-cd.readthedocs.io/en/stable/user-guide/config-management-plugins/
   101  
   102  **NOTE:** removal of argocd-cm plugin support was delayed to v2.7. Update your logs scan to use `v2.7` instead of `v2.6`.
   103  
   104  If you run `argocd app list` as admin, the list of Applications using deprecated plugins will be logged as a warning.
   105  
   106  ## Dex server TLS configuration
   107  
   108  In order to secure the communications between the dex server and the Argo CD API server, TLS is now enabled by default on the dex server.
   109  
   110  By default, without configuration, the dex server will generate a self-signed certificate upon startup. However, we recommend that users
   111  configure their own TLS certificate using the `argocd-dex-server-tls` secret. Please refer to the [TLS configuration guide](../tls.md#configuring-tls-to-argocd-dex-server) for more information.
   112  
   113  ## Invalid users.session.duration values now fall back to 24h
   114  
   115  Before v2.5, an invalid `users.session.duration` value in argocd-cm would 1) log a warning and 2) result in user sessions having no duration limit.
   116  
   117  Starting with v2.5, invalid duration values will fall back to the default value of 24 hours with a warning.
   118  
   119  ## Out-of-bounds symlinks now blocked at fetch
   120  
   121  There have been several path traversal and identification vulnerabilities disclosed in the past related to symlinks. To help prevent any further vulnerabilities, we now scan all repositories and Helm charts for **out of bounds symlinks** at the time they are fetched and block further processing if they are found.
   122  
   123  An out-of-bounds symlink is defined as any symlink that leaves the root of the Git repository or Helm chart, even if the final target is within the root.
   124  
   125  If an out of bounds symlink is found, a warning will be printed to the repo server console and an error will be shown in the UI or CLI.
   126  
   127  Below is an example directory structure showing valid symlinks and invalid symlinks.
   128  
   129  ```
   130  chart
   131  ├── Chart.yaml
   132  ├── values
   133  │   └── values.yaml
   134  ├── bad-link.yaml   -> ../out-of-bounds.yaml       # Blocked
   135  ├── bad-link-2.yaml -> ../chart/values/values.yaml # Blocked because it leaves the root
   136  ├── bad-link-3.yaml -> /absolute/link.yaml         # Blocked
   137  └── good-link.yaml  -> values/values.yaml          # OK
   138  ```
   139  
   140  If you rely on out of bounds symlinks, this check can be disabled one of three ways:
   141  
   142  1. The `--allow-oob-symlinks` argument on the repo server.
   143  2. The `reposerver.allow.oob.symlinks` key if you are using `argocd-cmd-params-cm`
   144  3. Directly setting `ARGOCD_REPO_SERVER_ALLOW_OOB_SYMLINKS` environment variable on the repo server.
   145  
   146  It is **strongly recommended** to leave this check enabled. Disabling the check will not allow _all_ out-of-bounds symlinks. Those will still be blocked for things like values files in Helm charts, but symlinks which are not explicitly blocked by other checks will be allowed.
   147  
   148  ## Deprecated client-side manifest diffs
   149  
   150  When using `argocd app diff --local`, code from the repo server is run on the user's machine in order to locally generate manifests for comparing against the live manifests of an app. However, this requires that the necessary tools (Helm, Kustomize, etc) are installed with the correct versions. Even worse, it does not support Config Management Plugins (CMPs) whatsoever.
   151  
   152  In order to support CMPs and reduce local requirements, we have implemented *server-side generation* of local manifests via the `--server-side-generate` argument. For example, `argocd app diff --local repoDir --server-side-generate` will upload the contents of `repoDir` to the repo server and run your manifest generation pipeline against it, the same as it would for a Git repo.
   153  
   154  In ~~v2.6~~ v2.7, the `--server-side-generate` argument will become the default, ~~and client-side generation will be removed~~ and client-side generation will be supported as an alternative.
   155  
   156  !!! warning
   157      The semantics of *where* Argo will start generating manifests within a repo has changed between client-side and server-side generation. With client-side generation, the application's path (`spec.source.path`) was ignored and the value of `--local-repo-root` was effectively used (by default `/` relative to `--local`).
   158      
   159      For example, given an application that has an application path of `/manifests`, you would have had to run `argocd app diff --local yourRepo/manifests`. This behavior did not match the repo server's process of downloading the full repo/chart and then beginning generation in the path specified in the application manifest.
   160  
   161      When switching to server-side generation, `--local` should point to the root of your repo *without* including your `spec.source.path`. This is especially important to keep in mind when `--server-side-generate` becomes the default in v2.7. Existing scripts utilizing `diff --local` may break in v2.7 if `spec.source.path` was not `/`.
   162      
   163  ## Upgraded Kustomize Version
   164  
   165  The bundled Kustomize version has been upgraded from 4.4.1 to 4.5.7.
   166  
   167  ## Upgraded Helm Version
   168  
   169  Note that bundled Helm version has been upgraded from 3.9.0 to 3.10.1.
   170  
   171  ## Upgraded HAProxy version
   172  
   173  The HAProxy version in the HA manifests has been upgraded from 2.0.25 to 2.6.2. To read about the changes/improvements,
   174  see the HAProxy major release announcements ([2.1.0](https://www.mail-archive.com/haproxy@formilux.org/msg35491.html),
   175  [2.2.0](https://www.mail-archive.com/haproxy@formilux.org/msg37852.html),
   176  [2.3.0](https://www.mail-archive.com/haproxy@formilux.org/msg38812.html),
   177  [2.4.0](https://www.mail-archive.com/haproxy@formilux.org/msg40499.html),
   178  [2.5.0](https://www.mail-archive.com/haproxy@formilux.org/msg41508.html), and
   179  [2.6.0](https://www.mail-archive.com/haproxy@formilux.org/msg42371.html).
   180  
   181  ## Logs RBAC enforcement will remain opt-in
   182  
   183  This note is just for clarity. No action is required.
   184  
   185  We [expected](../upgrading/2.3-2.4.md#enable-logs-rbac-enforcement) to enable logs RBAC enforcement by default in 2.5.
   186  We have decided not to do that in the 2.x series due to disruption for users of [Project Roles](../../user-guide/projects.md#project-roles).
   187  
   188  ## `argocd app create` for old CLI versions fails with API version >=2.5.16
   189  
   190  Starting with Argo CD 2.5.16, the API returns `PermissionDenied` instead of `NotFound` for Application `GET` requests if
   191  the Application does not exist.
   192  
   193  The Argo CD CLI before versions starting with version 2.5.0-rc1 and before versions 2.5.16 and 2.6.7 does a `GET` 
   194  request before the `POST` request in `argocd app create`. The command does not gracefully handle the `PermissionDenied` 
   195  response and will therefore fail to create/update the Application.
   196  
   197  To solve the issue, upgrade the CLI to at least 2.5.16, or 2.6.7.
   198  
   199  CLIs older than 2.5.0-rc1 are unaffected.
   200  
   201  ## Golang upgrade in 2.5.20
   202  
   203  In 2.5.20, we upgrade the Golang version used to build Argo CD from 1.18 to 1.19. If you use Argo CD as a library, you
   204  may need to upgrade your Go version.