Argo CD 2.4 已发布,带来重大变化!!

2023-03-19 17:17:23 浏览数 (2)

删除 Helm 2 、Ksonnet 支持

Argo CD 2.4 删除了 Helm 2 和 Ksonnet 支持。如果您使用 Ksonnet,请将清单转换为受支持的配置管理工具

https://argo-cd.readthedocs.io/en/stable/user-guide/application_sources/

如果您使用 Helm 2,请在升级到 Argo CD 2.4 之前遵循迁移指南

https://helm.sh/docs/topics/v2_v3_migration/

更新 RBAC 以处理 Web 终端

Argo CD 2.4 引入了一个新的 Web 终端功能。该功能使用户在正在运行的应用程序容器中启动 shell。只需使用 Application Details 页面找到所需的 Kubernetes Pod,单击它并选择 Terminal 选项卡。shell 会自动启动,使您能够执行命令,有助于排除应用程序状态的故障。

如果使用 RBAC 通配符,升级到 2.4 时,可能会无意中为不应该访问它的用户启用此特性。

Argo CD RBAC 配置中的第三列是“资源”列。

https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/

如果该列中有通配符*,则会自动包含exec资源。例如:

代码语言:javascript复制
p, role:org-admin, *, create, my-proj/*, allow

要继续允许所有非exec资源,请枚举它们而不是使用*. 您可以将上面的示例替换为以下内容:

代码语言:javascript复制
p, role: org-admin, clusters, create, my-proj/*, allow
p, role: org-admin, projects, create, my-proj/*, allow
p, role: org-admin, applications, create, my-proj/*, allow
p, role: org-admin, repositories, create, my-proj/*, allow
p, role: org-admin, certificates, create, my-proj/*, allow
p, role: org-admin, accounts, create, my-proj/*, allow
p, role: org-admin, gpgkeys, create, my-proj/*, allow

OpenTelemetry Tracing 集成

新功能允许发出更丰富的遥测数据,从而更容易识别性能瓶颈。新功能可用于 argocd-server 和 argocd-repo-server 组件,可以使用 --otlp-address 标志启用。

Power PC 和 IBM Z 支持

支持的架构列表已扩展,现在包括 IBM Z (s390x) 和 PowerPC (ppc64le)。从 v2.4 版本开始,官方 quay.io 存储库将包含 amd64、arm64、ppc64le 和 s390x 架构的镜像。

使用新服务帐户测试存储库服务器

作为一项安全性增强,Argo CD 2.4 的安装清单包括一个用于 repository-server Deployment 的专用 Service Account。

https://argo-cd.readthedocs.io/en/stable/operator-manual/architecture/#repository-server

如果您的设置依赖于使用default服务帐户的存储库服务器,则升级到 Argo CD 2.4 可能会导致问题。可能需要将default服务帐户迁移到argocd-repo-server服务帐户。

更新插件的配置

配置管理插件的引入允许定制 Argo CD!

https://argo-cd.readthedocs.io/en/stable/user-guide/config-management-plugins/

插件系统是为灵活性而设计的,插件必须在 Argo CD 架构中获得一定程度的信任。

https://argo-cd.readthedocs.io/en/stable/operator-manual/architecture/

这也意味着 Argo CD 无法验证或保证外部插件是安全的!仔细设计您的自定义插件,并始终在安装任何第三方插件之前对其进行审核。

2.4 中的以下重大更改旨在帮助插件作者保持其实现的安全。

如果您使用配置管理插件,请务必仔细阅读以下三个部分。

更新插件以使用新前缀的环境变量

配置管理插件接受来自应用程序清单的用户定义变量。例如:

代码语言:javascript复制
apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
  source:
    plugin:
      env:
        - name: FOO
          value: bar

在 2.4 之前,这些环境变量被注入到插件中配置的initgenerate命令中。由于许多插件使用第三方工具,其行为可通过环境变量(例如git)进行配置,我们不希望允许用户设置任意环境变量。

从 Argo CD 2.4 开始,所有用户提供的环境变量都在发送到插件命令之前加上ARGOCD_ENV_前缀。插件作者仍然可以选择删除前缀 ( export FOO=$ARGOCD_ENV_FOO),必须明确设定。

如果编写了依赖于用户提供环境变量的自定义配置管理插件,请在升级到 2.4 之前更新您的插件逻辑以处理新前缀

如果使用第三方插件,请确保该插件与 Argo CD 2.4 兼容。如果项目没有明确宣传对 2.4 的支持,请打开一个问题以验证他们是否添加了支持。

注意:如果您不需要新的 2.4 功能,则可以安全地使用 2.3.x 系列,直到您的所有插件都支持 2.4。我们将继续发布 2.3.x 的安全补丁,直到发布 2.6.0。

确认 sidecar 插件环境变量已在 sidecar 容器上设置

如果您使用作为 sidecar 的方式安装插件(而不是在argocd-cm ConfigMap 中),2.4 中的错误修复可能会阻止插件接收其必需的环境变量。

https://github.com/argoproj/argo-cd/pull/9566

在 2.4 之前,主 repo-server 容器的环境变量被发送到插件的命令,优先于 sidecar 设置的环境变量。

从 2.4 开始,除了标准构建环境变量和用户提供的变量:

https://argo-cd.readthedocs.io/en/stable/user-guide/build-environment/

必须直接在 sidecar 容器上设置,以便被配置的插件命令获取。

在升级到 Argo CD 2.4 之前,请检查 Sidecar 插件的配置以查看它们需要哪些环境变量。如果其中任何一个设置在主 repo-server 容器而不是 sidecar 容器上,您可能还需要在 sidecar 容器上设置环境变量。

替换插件 sidecar 中 /tmp 卷

如果您使用 sidecar 方式安装的插件(而不是在argocd-cmConfigMap 中),它会在/tmp挂载卷。在 2.4 之前,该卷需要与 repo-server 主容器挂载的临时卷相同。

从 Argo CD 2.4 开始,每个 sidecar 插件都应该挂载自己的临时卷。这有助于降低目录遍历攻击的风险。例如:

代码语言:javascript复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: argocd-repo-server
spec:
  template:
    spec:
      containers:
      - name: your-plugin-name
        volumeMounts:
        - mountPath: /tmp
          name: your-plugin-name-tmp
      volumes:
        # Add this volume.
        - name: your-plugin-name-tmp
          emptyDir: {}

通过启用日志 RBAC 强制为 2.5 做准备

Argo CD 2.5 将包括更细粒度的 RBAC 日志访问控制。您可以选择在 2.4 中启用日志 RBAC 控制以使 2.4 到 2.5 的升级过程更快、更容易。

https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/upgrading/2.3-2.4.md#enable-logs-rbac-enforcement

结论

上述变化也列在 2.3 到 2.4 升级指南中。

https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/upgrading/2.3-2.4.md

如果您从旧版本升级,请在跳过版本之前阅读其他升级指南

https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/upgrading/overview.md

按照说明进行操作,升级过程应该会很顺利。

- END -

0 人点赞