Argo CD `argocd app get-resource` 命令详解:获取应用内资源的实时 Kubernetes Manifest
Argo CDargocd app get-resource命令详解获取应用内资源的实时 Kubernetes Manifest【免费下载链接】argo-cdDeclarative Continuous Deployment for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ar/argo-cdargocd app get-resource是 Argo CD CLI 中用于获取应用内某个资源的实时 Kubernetes Manifest的核心调试命令。本指南完整讲解该命令的语法、全部参数、常见实战用法按名称精确获取、按 Kind 批量获取、字段过滤、隐藏 managedFields 等并结合当前仓库中命令注册与 gRPC 服务端实现app_resources.go、application.go剖析其底层工作流程帮助你在排障与运维场景中快速定位应用资源的最新状态。命令功能与适用场景在 Argo CD 的应用管理模型中Application只是声明式的期望状态target manifest真正运行在目标集群中的是实时资源live resource。当应用出现OutOfSync、Degraded或资源行为异常时你往往需要直接查看集群中实际存在的资源对象而get-resource正是为此设计它可以精确获取指定APPNAME中某一个具体资源的实时 Manifest也可以只按--kind批量列出该应用下所有同类资源支持以wide默认表格、yaml、json三种格式输出支持--filter-fields只显示你关心的字段避免被完整 Manifest 淹没支持--show-managed-fields展示 Kubernetes 的metadata.managedFieldsServer-Side Apply 追踪信息。命令语法argocd app get-resource APPNAME [flags]APPNAME为必填位置参数即 Application 名称所有资源定位信息Kind、名称、分组等通过 flags 提供。实战示例以下示例均来自命令内置的Example帮助文本与 app_resources.go 中注册的内容一致# 按名称获取 my-app 中名为 my-app-pod 的 Pod默认 wide表格格式 argocd app get-resource my-app --kind Pod --resource-name my-app-pod # 以 yaml 格式获取该 Pod argocd app get-resource my-app --kind Pod --resource-name my-app-pod -o yaml # 以 json 格式获取该 Pod argocd app get-resource my-app --kind Pod --resource-name my-app-pod -o json # 获取应用内所有 Pod 的详细信息不指定 resource-name argocd app get-resource my-app --kind Pod # 获取该 Pod 并包含 metadata.managedFields argocd app get-resource my-app --kind Pod --resource-name my-app-pod --show-managed-fields # 只显示 status.podIP 一个字段 argocd app get-resource my-app --kind Pod --filter-fields status.podIP # 同时显示 status.podIP 和 status.hostIP 两个字段 argocd app get-resource my-app --kind Pod --resource-name my-app-pod --filter-fields status.podIP,status.hostIP示例要点解读不指定--resource-name时命令会列出该应用下指定--kind的全部资源此时 wide 格式的表头会额外多出RESOURCE NAME列用于区分不同资源。--filter-fields用逗号分隔多个点分路径字段如status.podIP,status.hostIP与--resource-name可自由组合第 4 条示例即二者的组合用法。默认隐藏metadata.managedFields需要查看时显式加--show-managed-fields。参数详解get-resource 专属参数参数简写类型默认值说明--app-namespace-Nstring空Application 所在的命名空间用于非默认命名空间中的 Application--filter-fields无strings空逗号分隔的字段列表仅显示指定字段不提供则输出整个 Manifest--group无string空资源的 API Group如apps用于精确区分同名同 Kind 的资源--kind无string空资源的 Kind如Pod必填-o, --output-ostringwide输出格式wide、yaml或json--project无string空资源所属 Project指定后可在资源不存在时返回 not found 而非 permission denied--resource-name无string空资源名称不指定则输出该 Kind 下所有资源的详情--show-managed-fields无boolfalse是否在输出 Manifest 中展示 managedFields-h, --help-h--查看帮助其中--kind在命令注册阶段通过command.MarkFlagRequired(kind)强制为必填见 app_resources.go漏填会直接报错退出。从父命令继承的通用参数get-resource作为argocd app的子命令自动继承 CLI 全局参数用于连接与认证 Argo CD Server常见的有参数说明--argocd-context指定 Argo CD Server 上下文名称--auth-token认证令牌也可通过环境变量ARGOCD_AUTH_TOKEN提供--configArgo CD CLI 配置文件路径默认/home/user/.config/argocd/config--core直接连接 Kubernetes API而不经由 Argo CD API Server--grpc-web/--grpc-web-root-path当 Server 位于不支持 HTTP2 的代理之后时启用 gRPC-web 协议-H, --header为所有请求附加额外 Header可多次指定也支持逗号分隔--http-retry-max建立 HTTP 连接的最大重试次数--insecure跳过 Server 证书与域名校验--kube-context指定使用的 kube-context--logformat/--loglevel日志格式json/text与级别debug/info/warn/error--plaintext禁用 TLS--port-forward/--port-forward-namespace通过端口转发连接随机 argocd-server 端口--prompts-enabled强制启用/禁用交互式提示--serverArgo CD Server 地址此外还包括一批用于自定义组件名称解析的选项如--controller-name、--repo-server-name、--server-name、--redis-name、--redis-haproxy-name、--redis-compress它们通常用于非默认安装如通过 Helm Chart 部署且名称 label 与默认值不同的场景。特别地--redis-compress必须与 Application controller 侧的 Redis 压缩配置保持一致否则可能触发缓存读取失败——Server 端getAppResources在缓存未命中时甚至会打印提示Ensure that the Redis compression setting on the Application controller and CLI is same见 application.go。底层工作原理get-resource虽然只是一个 CLI 命令但它背后是一条完整的CLI → gRPC API → 目标集群链路。理解这条链路有助于排查为什么输出和我预期不一致的问题。第一步命令注册与参数校验命令在 app.go 中以NewApplicationGetResourceCommand(clientOpts)注册到argocd app之下。运行时要求恰好传入一个位置参数APPNAME否则打印帮助并退出见 app_resources.go。第二步解析应用限定名通过argo.ParseFromQualifiedName(args[0], appNamespace)解析应用名称与命名空间支持namespace/name形式的限定名未显式指定时使用--app-namespace缺省为默认命名空间。第三步拉取资源树并逐个获取 ManifestCLI 先调用 gRPC 接口ResourceTree拿到整个应用的资源树tree.Nodes然后遍历节点做三重过滤if (resourceName ! r.Name ! resourceName) || (group ! r.Group ! group) || r.Kind ! kind { continue }也就是说先用ResourceTree在应用范围内粗筛出候选节点再对每个候选节点单独调用GetResource获取实时 Manifest见 app_resources.go。这正是不指定 resource-name 时可列出该 Kind 下所有资源的实现基础。第四步服务端实时读取与敏感信息处理服务端实现位于 application.gogetAppLiveResource先做RBAC 权限校验rbac.ActionGet并从缓存的应用资源树中定位节点若资源不属于该应用返回InvalidArgumentxxx not found as part of application xxx。通过kubectl.GetResource直接向目标集群发起请求读取实时对象。调用replaceSecretValues当对象是v1.Secret且 Group 为空时用diff.HideSecretData隐藏 Secret 数据避免敏感信息经 API 泄露见 application.go。这意味着get-resource输出中的 Secret 内容是经过脱敏处理的。序列化为 JSON 字符串后封装进ApplicationResourceResponse.Manifest返回给 CLI。第五步CLI 端格式化输出CLI 拿到 Manifest 后反序列化为unstructured.Unstructured然后默认移除metadata.managedFieldsunstructured.RemoveNestedField(obj.Object, metadata, managedFields)除非指定了--show-managed-fields按需执行字段过滤filterFieldsFromObject会把指定点分路径如status.podIP从原对象中摘取出来重建一个新对象对位于对象列表内的字段例如容器的 envextractNestedItem/extractItemsFromList会递归深入列表逐项提取见 app_resources.go按输出格式渲染yaml/json直接输出完整序列化 Manifest多个对象之间用---分隔wide默认通过printManifestAsTable将嵌套字段递归展平为FIELD/VALUE或FIELD/RESOURCE NAME/VALUE形式的对齐表格数组元素用[索引]标记见 app_resources.go。配套命令与延伸阅读get-resource属于argocd app资源运维命令族详见 argocd app 命令参考与它同族的还有argocd app resources APPNAME列出应用的一级资源或树形资源层级--output tree/treedetailed并支持--orphaned只列出孤儿资源实现见 app_resources.goargocd app patch-resource APPNAME对应用内资源执行 JSON/merge/strategic-merge 补丁argocd app delete-resource APPNAME删除应用内资源支持--force与--orphan。三者共享相同的资源定位参数风格--kind/--group/--namespace/--resource-name便于在定位到问题资源后立即进行后续操作。日常排障建议的组合用法是先用argocd app get-resource APP --kind Kind --resource-name Name -o yaml查看实时状态确认与期望清单的差异后再决定是同步、打补丁还是删除重建。小结argocd app get-resource是 Argo CD 排障工具箱中查看实时资源真相的关键入口。掌握它的核心能力可以概括为三点按 Kind 批量或按名称精确获取实时 Manifest、用--filter-fields精准聚焦关键字段、用三种输出格式适配不同消费场景终端阅读 / 脚本解析 / 文件比对。配合对其资源树预筛选 gRPC 逐资源拉取 服务端脱敏链路的理解你就能在任何 Argo CD 应用中快速、安全地拿到最权威的集群侧资源状态。【免费下载链接】argo-cdDeclarative Continuous Deployment for Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ar/argo-cd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

STM32嵌入式AI编程:硬件语义校验与四阶落地实践

STM32嵌入式AI编程:硬件语义校验与四阶落地实践

1. 这不是“用AI写个Hello World”,而是让AI真正嵌进STM32的血液里“嵌入式软件AI编程”这八个字,最近在工程师群里刷屏得厉害,但多数人点开一看,发现只是拿Copilot补几行GPIO初始化代码,或者让ChatGPT生成个串口收发框…

2026/9/14 0:05:29 阅读更多 →
汽车电子培训怎么选?AUTOSAR与CANoe实战能力是核心

汽车电子培训怎么选?AUTOSAR与CANoe实战能力是核心

1. 为什么“汽车电子培训机构推荐”这个标题背后藏着一场职业转型的硬仗最近三个月,我陆续接待了47位来咨询汽车电子培训的朋友,有刚毕业的自动化专业学生,有干了八年传统线束设计想转智能座舱的工程师,也有从燃油车4S店技术主管跳…

2026/9/14 0:05:29 阅读更多 →
MARS488替代ADIS16375全流程:从硬件适配到软件移植的实操指南

MARS488替代ADIS16375全流程:从硬件适配到软件移植的实操指南

做替代选型这件事,最怕的不是芯片本身有问题,而是你拿新芯片直接焊上去,发现飞控输出的姿态开始漂,却分不清是驱动没写好、减震没做好,还是芯片性能本身就差。最近我同时接了无人机和AGV两个项目,都在做MAR…

2026/9/14 0:04:28 阅读更多 →

最新新闻

大模型知识表征与逻辑推理机制解析

大模型知识表征与逻辑推理机制解析

1. 大模型知识表征的本质特征大语言模型通过海量文本训练形成的知识表征,本质上是一种高维空间中的分布式表示。这种表示方式与人类大脑的神经表征有相似之处,但存在几个关键差异点:首先,模型的知识存储是隐式的。当我们询问GPT-4…

2026/9/14 0:56:54 阅读更多 →
pyfem弹塑性有限元实现:本构积分与收敛问题解析

pyfem弹塑性有限元实现:本构积分与收敛问题解析

简介:PyFEM 是一套基于 Python 的弹塑性有限元计算程序包,面向力学分析、结构仿真和数值计算学习者,主要解决材料在载荷下的线弹性及塑性变形建模问题,可应用于土木、机械与航空航天等工程场景。压缩包共 88 个文件,包…

2026/9/14 0:56:54 阅读更多 →
STM32 VS Code开发环境搭建:ARM GNU工具链+CMake+OpenOCD调试闭环

STM32 VS Code开发环境搭建:ARM GNU工具链+CMake+OpenOCD调试闭环

1. 为什么STM32开发者正在集体“逃离”Keil,转向VS Code?你手头那块STM32F103C8T6最小系统板,是不是还躺在抽屉里吃灰?不是它不行,而是你用的开发环境——Keil MDK或IAR——正在悄悄拖慢你的节奏。我见过太多工程师&am…

2026/9/14 0:56:54 阅读更多 →
鼎阳SDS7404A H10示波器:10-bit高分辨率与4GHz带宽的工程实践指南

鼎阳SDS7404A H10示波器:10-bit高分辨率与4GHz带宽的工程实践指南

1. 项目概述:这台示波器不是“测电压的盒子”,而是信号世界的显微镜与时间标尺 鼎阳 SDS7404A H10 数字示波器,光看型号就藏着三重关键信息:SDS 是鼎阳科技(Siglent)的示波器产品线代号,7404A 表…

2026/9/14 0:56:54 阅读更多 →
TensorFlow人脸识别全链路实现:从预处理到ArcFace部署

TensorFlow人脸识别全链路实现:从预处理到ArcFace部署

简介:本资源是一套基于Python与TensorFlow框架实现的完整人脸识别系统源代码,面向计算机科学、人工智能及电子工程等专业的高年级本科生、研究生与技术爱好者,适用于课程设计、实验开发与科研原型构建。代码经过充分测试,可直接运…

2026/9/14 0:55:54 阅读更多 →
AI数字人格构建:从内容账号到可生长的拟人化阿凡达

AI数字人格构建:从内容账号到可生长的拟人化阿凡达

1. 项目概述:这不是电影续集,而是一场真实发生的内容进化实验“阿凡达的进击之路”——这六个字乍看像在聊詹姆斯卡梅隆的科幻IP,但实际指向的,是过去三年里中文互联网内容生态中一个悄然成型、却极具代表性的演化现象&#xff1a…

2026/9/14 0:55:54 阅读更多 →

日新闻

AI音乐侵权案中的测试工程与版权保护技术

AI音乐侵权案中的测试工程与版权保护技术

1. 项目概述:当测试工程师遇上AI音乐侵权案去年夏天,我作为技术顾问参与了一起特殊的著作权纠纷案——某音乐平台AI作曲功能被指控批量侵权。这起案件的特殊性在于:原告方并非传统音乐人,而是一家拥有百万级曲库的数字音乐发行商&…

2026/9/14 0:00:26 阅读更多 →
嵌入式面试I2C与SPI深度解析:从协议到量产调试

嵌入式面试I2C与SPI深度解析:从协议到量产调试

1. 这份“高频知识点洞察”到底是什么,又为什么值得你花时间细读? 如果你最近在刷嵌入式开发岗位的招聘JD,或者正坐在工位上改第7版简历,又或者刚被面试官一句“讲讲I2C和SPI的区别”问得手心冒汗——那你不是一个人。过去两年我带…

2026/9/14 0:00:26 阅读更多 →
51单片机开环控制磁阻传感器的硬件匹配与代码实现

51单片机开环控制磁阻传感器的硬件匹配与代码实现

简介:本资源是一份面向嵌入式初学者与单片机课程实践者的51单片机开关磁阻电机(SRM)开环控制教学方案,聚焦磁阻位置检测、固定时序驱动与基础状态可视化。资源包含1个C语言主程序文件(zhuang600.c)实现电机…

2026/9/14 0:00:26 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/13 0:00:24 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/14 0:52:26 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/14 0:06:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/13 16:51:11 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/12 18:29:34 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/12 19:02:44 阅读更多 →