v2.4 至 2.5¶
已知问题¶
2.5.15 之前已损坏的 project
过滤器¶
Argo CD 2.4.0 引入了一个突破性的 API 更改,将 "项目 "过滤器更名为 "项目"。
对应用程序接口客户的影响¶
类似的问题也适用于通过 REST API 与 Argo CD API 服务器通信的其他 API 客户端。 如果客户端使用 "项目 "字段来过滤项目,则过滤器将不会被引用。 项目过滤器失效可能会产生有害后果,例如,如果您依赖它来列出要删除的应用程序。
对 CLI 客户的影响¶
v2.4.0 以上版本的 CLI 客户端依靠客户端过滤,不受此错误的影响。
如何解决问题¶
升级到 Argo CD >=2.4.27、>=2.5.15 或 >=2.6.6。此版本的 Argo CD 将同时接受 project
和 projects
作为有效过滤器。
2.5.14 中被破解的矩阵嵌套 git 文件生成器¶
Argo CD 2.5.14 在矩阵嵌套的 git 文件生成器中引入了一个错误。 该错误仅适用于 git 文件生成器是嵌套在矩阵下的第二个生成器的情况。 例如:
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: guestbook
spec:
generators:
- matrix:
generators:
- clusters: {}
- git:
repoURL: https://git.example.com/org/repo.git
revision: HEAD
files:
- path: "defaults/*.yaml"
template:
# ...
嵌套的 git 文件生成器将不生成参数,从而导致矩阵生成器也不生成参数。 这将导致 ApplicationSet 不生成应用程序。如果 ApplicationSet 控制器配置了删除应用程序的功能,它将删除 ApplicationSet 以前创建的所有应用程序。
要避免此问题,请直接升级到 >=2.5.15 或 >= 2.6.6。
配置 RBAC 以核算新的 ApplicationSet 资源¶
2.5 引入了新的 "Applicationsets"RBAC 资源。
升级到 2.5 后,资源字段中包含 ""和操作字段中包含 "创建"、"更新"、"删除"、"获取 "或 ""的 RBAC 策略将自动授予 "Applicationsets "权限。
为避免授予新特权,请用明确列出旧资源的新策略列表替换现有策略。
示例¶
旧的:
p, role:org-admin, *, create, *, allow
新:
p, role:org-admin, clusters, create, *, allow
p, role:org-admin, projects, create, *, allow
p, role:org-admin, applications, create, *, allow
p, role:org-admin, repositories, create, *, allow
p, role:org-admin, certificates, create, *, allow
p, role:org-admin, accounts, create, *, allow
p, role:org-admin, gpgkeys, create, *, allow
p, role:org-admin, exec, create, *, allow
(请注意,为了保留 2.5 版之前的权限,列表中缺少了 applicationsets
)。
argocd-cm 插件(CMP)已被弃用¶
从 Argo CD v2.5 开始,通过 argocd-cm
ConfigMap 安装配置管理插件 (CMP) 已被弃用。~~将在 v2.6.~~ 中移除支持。
您可以通过在 repo-server Deployment 上 将插件安装为 sidecars,继续使用这些插件。
Sidecar 插件的安全性大大提高。 插件代码运行在自己的容器中,文件系统几乎完全隔离。 如果攻击者入侵插件,其造成危害的能力将大大降低。
要确定 argocd-cm 插件是否仍在使用,请扫描 argocd-repo-server 和 argocd-server logging,查看是否有以下信息:
> argocd-cm 插件已被弃用,将在 v2.6 中取消支持。请升级您的插件,以便通过 sidecar 安装。https://argo-cd.readthedocs.io/en/stable/user-guide/config-management-plugins/
NOTE: argocd-cm 插件支持的移除被延迟至 v2.7。 更新您的 logging 扫描,以使用 v2.7
代替 v2.6
。
如果以管理员身份运行 argocd app list
,使用已停用插件的应用程序列表将被记录为警告。
Dex 服务器 TLS 配置¶
为了确保 dex 服务器和 Argo CD API 服务器之间的通信安全,现在 dex 服务器默认启用了 TLS。
默认情况下,无需配置,dex 服务器将在启动时生成自签名证书。 不过,我们建议用户使用 argocd-dex-server-tls
secret 配置自己的 TLS 证书。 请参阅 TLS 配置指南 了解更多信息。
Invalid users.session.duration values now fall back to 24h¶
在 v2.5 之前,如果 argocd-cm 中的 users.session.duration
值无效,1)会记录警告,2)会导致用户会话没有持续时间限制。
从 v2.5 版开始,无效的持续时间值将退回到默认值 24 小时,并发出警告。
现在在获取时阻止越界符号链接¶
过去曾披露过几个与 symlinks 相关的路径遍历和识别漏洞。 为帮助防止出现更多漏洞,我们现在会在获取所有软件源和 helm chart 时扫描它们是否存在越界 symlinks,如果发现,则会阻止进一步处理。
越界符号链接是指任何离开 Git 仓库或 Helm chart 根目录的符号链接,即使最终目标位于根目录内。
如果发现越界符号链接,将在软件包服务器控制台打印警告,并在用户界面或 CLI 中显示错误。
下面是一个目录结构示例,显示了有效的符号链接和无效的符号链接。
chart
├── Chart.yaml
├── values
│ └── values.yaml
├── bad-link.yaml -> ../out-of-bounds.yaml # Blocked
├── bad-link-2.yaml -> ../chart/values/values.yaml # Blocked because it leaves the root
├── bad-link-3.yaml -> /absolute/link.yaml # Blocked
└── good-link.yaml -> values/values.yaml # OK
如果使用越界符号链接,可以通过三种方法之一禁用该检查:
1.版本服务器上的 --allow-oob-symlinks
参数。
2.如果使用 argocd-cmd-params-cm
则引用 reposerver.allow.oob.symlinks
密钥。
3.在 repo 服务器上直接设置 ARGOCD_REPO_SERVER_ALLOW_OOB_SYMLINKS
环境变量。
强烈建议***启用该检查。 禁用该检查将不允许_所有_越界符号链接。 Helm chart 中的 Values 文件等仍会被阻止,但其他检查未明确阻止的符号链接将被允许。
过时的客户端配置清单 Diff¶
使用 argocd app diff --local
时,会在用户机器上运行来自版本库服务器的代码,以便在本地生成配置清单,与应用程序的实时配置清单进行比较。 不过,这需要安装正确版本的必要工具(Helm、kustomize 等)。 更糟糕的是,它完全不支持配置管理插件(CMP)。
为了支持 CMP 并减少本地需求,我们通过 --server-side-generate
参数实现了本地配置清单的服务器端生成。 例如,argocd app diff --local repoDir --server-side-generate
将把 repoDir
中的内容上传到 repo 服务器,并对其运行配置清单生成管道,就像对 Git repo 一样。
在 ~~~v2.6~~v2.7 中,"--服务器端生成 "参数将成为默认参数,~~~客户端生成将被移除~~~客户端生成将作为替代选项得到支持。
警告 Argo 在客户端和服务器端生成清单时,从哪个位置开始生成清单的语义发生了变化。 在客户端生成清单时,应用程序的路径 (spec.source.path
)被忽略,而--local-repo-root
的值被引用(默认情况下/
相对于--local
)。
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.
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 `/`.
升级版 kustomize¶
捆绑的 kustomize 版本已从 4.4.1 升级到 4.5.7。
Helm 升级版本¶
请注意,捆绑的 Helm 版本已从 3.9.0 升级到 3.10.1。
升级了 HAProxy 版本¶
HA 配置清单中的 HAProxy 版本已从 2.0.25 升级到 2.6.2。要了解有关更改/改进,请参阅 HAProxy 主要发布清单(2.1.0、2.2.0、2.3.0、2.4.0、2.5.0 和 2.6.0)。
logging RBAC 的执行仍将是选择性的¶
本说明仅供参考,无需采取行动。
我们预计在 2.5 中默认启用 logging RBAC 强制执行。由于对项目角色用户造成干扰,我们决定不在 2.x 系列中这样做。
旧 CLI 版本的 argocd 应用程序创建
在应用程序接口版本 >=2.5.16 时失败¶
从 Argo CD 2.5.16 开始,如果应用程序不存在,API 会对应用程序的 GET
请求返回 PermissionDenied
而不是 NotFound
。
Argo CD CLI 从版本 2.5.0-rc1 开始到版本 2.5.16 和 2.6.7 之前的版本会在 argocd app create
中的 POST
请求之前执行 GET
请求。 该命令无法优雅地处理 PermissionDenied
响应,因此将无法创建/更新应用程序。
要解决问题,请将 CLI 升级到至少 2.5.16 或 2.6.7。
早于 2.5.0-rc1 的 CLI 不受影响。
2.5.20 中的 Golang 升级¶
在 2.5.20 中,我们将用于构建 Argo CD 的 Golang 版本从 1.18 升级到了 1.19。如果将 Argo CD 作为库使用,可能需要升级 Go 版本。