Argo CD 2.4 已发布,带来重大变化!!
关注公众号并添加到“星标⭐”,防止错过消息
后台回复【资料包】获取学习资料
Argo CD 2.4 已发布,带来了一些重大更改,请阅读下面的这些更改以确保顺利升级。
https://blog.argoproj.io/argo-cd-v2-4-release-candidate-d1a0eef6b908
删除 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
资源。例如:
p, role:org-admin, *, create, my-proj/*, allow
要继续允许所有非exec
资源,请枚举它们而不是使用*
. 您可以将上面的示例替换为以下内容:
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 中的以下重大更改旨在帮助插件作者保持其实现的安全。
如果您使用配置管理插件,请务必仔细阅读以下三个部分。
更新插件以使用新前缀的环境变量
配置管理插件接受来自应用程序清单的用户定义变量。例如:
apiVersion: argoproj.io/v1alpha1
kind: Application
spec:
source:
plugin:
env:
- name: FOO
value: bar
在 2.4 之前,这些环境变量被注入到插件中配置的init
和generate
命令中。由于许多插件使用第三方工具,其行为可通过环境变量(例如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-cm
ConfigMap 中),它会在/tmp
挂载卷。在 2.4 之前,该卷需要与 repo-server 主容器挂载的临时卷相同。
从 Argo CD 2.4 开始,每个 sidecar 插件都应该挂载自己的临时卷。这有助于降低目录遍历攻击的风险。例如:
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
按照说明进行操作,升级过程应该会很顺利。
推荐阅读
还怕记不住 Kubectl 命令?K9s 太强大了揭秘 Longhorn 为 3.5万 个 K8s 节点提供存储
CloudTTY:下一代云原生开源 Cloud Shell
如何优雅保护 Kubernetes 中的 Secrets
新一代更强大的镜像构建工具 Earthly
使用 eBPF 增强 Kubernetes集群可观察性?
懵了,构建一个 Docker 镜像花 60 分钟?
必知必会的 Kubectl 命令总结
Portainer 增强 Docker Desktop 管理远程环境
一个集群被删的故事
用轻量级工具 Drone 完成小团队的 CI/CDArgo CD 现严重漏洞,黑客可能拔掉你的底裤优雅的跨 Namespace 同步 Secret 和 ConfigMap?Nomad 会替代 Kubernetes 吗?两者如何选择?