尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Kustomize 本地配置(Local Configuration)深入指南:用 config.kubernetes.io/local-config 注解隔离构建期资源
CLI开发工具云原生【免费下载链接】kustomizeCustomization of kubernetes YAML configurations项目地址https://gitcode.com/gh_mirrors/ku/kustomize点击查看免费下载config.kubernetes.io/local-config是 Kustomize 及整个 KRMKubernetes Resource Model工具生态共享的 well-known 注解之一。它为 Kustomize 构建过程提供了一种只参与构建、不进入集群的资源机制被标记的资源会被 kustomize 正常读取、参与名称引用name reference与各类转换但在最终渲染输出中被丢弃。读完本文你将掌握该注解的精确语义、底层丢弃时机在转换完成之后并能熟练使用它作为 Replacement 数据源、跨对象名称引用锚点以及 KRM Function 的共享配置载体。什么是 local-config注解语义与判定规则在 Kustomize 中一个资源只要携带值为true的config.kubernetes.io/local-config注解就被判定为 local-config 资源apiVersion: v1 kind: ConfigMap metadata: name: settings annotations: config.kubernetes.io/local-config: true data: region: us-east-1判定规则非常明确注解值为true→ 资源为 local-config参与构建但在输出中被省略注解值为false或完全省略该注解 → 资源正常保留在输出中。源码级判定依据从源码结构看判定逻辑集中在 api/resource/factory.go 的DropLocalNodes方法中。该方法遍历每个节点的 metadata 注解只有当注解存在且值不等于false时才丢弃节点localConfig, exist : md.ObjectMeta.Annotations[konfig.IgnoredByKustomizeAnnotation] if !exist || localConfig false { result append(result, node) }注解常量定义在 api/konfig/general.goIgnoredByKustomizeAnnotation config.kubernetes.io/local-config此外Factory结构体提供IncludeLocalConfigs开关见 api/resource/factory.go当该开关为true时local-config 资源也会被保留——这为工具链上层按需包含本地配置提供了扩展点。对应测试覆盖了注解值为空、true、false等不同情形的行为见 api/resource/factory_test.go。为什么有用构建期配置与运行时资源同库管理Local-config 资源的价值在于你可以在同一份资源清单中把构建期配置和打算 apply 到集群的资源放在一起管理而无需把它们拆到独立的文件树中。它们具备以下特性参与名称引用name references可以被namePrefix/nameSuffix等转换机制传播可以被 transformers、generators、KRM functions 消费永远不会出现在最终输出中不会到达集群。关键实现细节转换完成之后才丢弃Local-config 资源并不会在读取阶段被立即删除而是先完整参与整个转换流水线在所有转换transformers完成后才被丢弃。这一行为由 api/internal/target/kusttarget.go 的IgnoreLocal方法实现——它调用DropLocalNodes并对累加器求交集从而把本地资源从最终结果中移除。对应的端到端测试 api/krusty/localconfig_test.goTestSKipLocalConfigAfterTransform明确验证了这一设计一个标记为 local-config 的Pod先作为 ReplacementTransformer 的 source 参与转换把spec复制到目标Deployment中然后自身从输出中消失最终渲染结果只包含补丁后的Deployment。这正是本地资源可以作为转换输入的权威证据。实战场景一作为 Replacement 的数据源最常见的用法是把 local-config 资源当作Replacement的纯数据载体source 对象只负责携带值通过replacements把字段复制进一个或多个目标资源后即被丢弃绝不进入集群。apiVersion: v1 kind: ConfigMap metadata: name: image-source annotations: config.kubernetes.io/local-config: true data: image: registry.example.com/app:v1.2.3 --- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - deployment.yaml replacements: - source: kind: ConfigMap name: image-source fieldPath: data.image targets: - select: kind: Deployment name: app fieldPaths: - spec.template.spec.containers.0.image渲染输出中只包含被打补丁的DeploymentConfigMap被丢弃。Replacement 的完整字段语义source、targets、fieldPaths、options等可参考 site/content/en/docs/Reference/API/Kustomization File/replacements.md。实战场景二作为跨对象的名称引用锚点当多个资源共享同一个名称片段时例如一个主机名同时出现在Ingress、Secret以及Deployment的环境变量中可以用一个 local-config 资源作为规范名称锚点。构建时对整体施加的namePrefix会通过 kustomize 的名称引用机制传播到每一处引用而锚点本身在输出中被移除。完整的端到端验证示例仓库中的 api/krusty/namereference_test.goTestIssue4884_UseLocalConfigAsNameRefSource给出了完整可运行的示例定义两个自定义类型IngressHost与IngressSecret并声明它们的名称引用关系通过configurations指向自定义的 nameref 配置见测试中的kustomize-nameref.yamlIngress的spec/rules/host、spec/tls/hosts、Deployment的 env 值、spec/tls/secretName等都引用这两个类型两个锚点资源都携带config.kubernetes.io/local-config: true注解施加namePrefix: prefix-后期望输出中Ingress的 host 变为prefix-test.fakedomain.comDeployment环境变量值变为prefix-test.fakedomain.comsecretName变为prefix-test-secret两个 local-config 锚点资源不出现在输出中。这证明 local-config 资源完整参与了名称引用解析——前缀在锚点上生效并通过引用机制传播到所有引用方同时锚点自身被剔除。实战场景三作为 KRM Functions 的共享配置在transformers:或generators:中声明的 KRM function其本身也是一个 KRM 资源。把它标记为 local-config可以让函数定义保留在 kustomization 中、可被 overlay 打补丁同时不会把函数 spec 输出到集群apiVersion: example.com/v1 kind: ValidatingTransformer metadata: name: enforce-labels annotations: config.kubernetes.io/local-config: true config.kubernetes.io/function: | container: image: registry.example.com/fn-enforce-labels:v1 spec: required: - app.kubernetes.io/name源码佐证函数的自动本地化从源码结构看api/internal/plugins/fnplugin/fnplugin.go 在处理 KRM function 时会主动注入config.kubernetes.io/local-config注解为trueerr injectAnnotation(functionConfig, config.kubernetes.io/local-config, true)也就是说KRM function 的配置在底层默认就被视为 local-config 处理这与文档描述一致函数定义参与构建、不进入输出。与 KRM 生态的一致性config.kubernetes.io/local-config是 KRM 工具生态共享的 well-known 注解。在 kyaml 层kyaml/kio/filters/local.go 提供了通用的IsLocalConfig过滤器支持includeLocalConfig与excludeNonLocalConfig两个开关用于在更底层的 I/O 流水线中按该注解筛选资源——例如在kustomize build之外的其他 KRM 工具中复用同一套语义。小结注解值行为config.kubernetes.io/local-config: true参与构建与转换从最终输出中省略config.kubernetes.io/local-config: false正常保留在输出中省略注解正常保留在输出中Local-config 机制的核心设计是**先全程参与后统一剔除**本地资源在名称引用、Replacement、函数等环节均与普通资源同等参与只在全部转换完成后由IgnoreLocal一次性丢弃。这使得构建期配置可以与运行时资源同库维护同时保证集群中永远看不到这些中间载体。官方对 well-known 注解的权威定义与 Manifest 注解的完整参考可进一步查阅仓库文档中对应的 Concepts 目录与cmd/config/docs/api-conventions/下的相关说明。赞分享CLI开发工具云原生【免费下载链接】kustomizeCustomization of kubernetes YAML configurations项目地址https://gitcode.com/gh_mirrors/ku/kustomize点击查看免费下载相关推荐XSStrike终极指南10个关键技巧防御XSS攻击XSStrike终极指南10个关键技巧防御XSS攻击 XSStrike是一款功能强大的跨站脚本XSS检测套件集成了四个手写解析器、智能 payloadCLI开发工具云原生7种JavaScript SDK网络请求方案对比Image Beacon vs JSONP vs sendBeacon7种JavaScript SDK网络请求方案对比Image Beacon vs JSONP vs sendBeacon 在现代Web开发中JavaScripDIY-Multiprotocol-TX-Module硬件故障诊断与维修终极指南DIY Multiprotocol TX Module硬件故障诊断与维修终极指南 DIY Multiprotocol TX Module是一款功能强大的2.4G嵌入式物联网上一篇构建智能法律助手Hermes Agent法律文档分析与建议下一篇开源项目PyWB入门指南及常见问题解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

上市公司新闻文本分类:从数据清洗到TF-IDF模型实战

上市公司新闻文本分类:从数据清洗到TF-IDF模型实战

简介:这份源码面向具备一定Python基础的金融数据分析学习者与量化研究者,提供一套完整的上市公司新闻文本分析与分类预测方案,解决财经新闻自动抓取、特征提取与模型分类的实践问题。资源包共21个文件,以17个Python源代码文件为核…

📅 2026/9/23 14:07:31
视频压缩编码保姆级教程:搞定这5个高频面试题

视频压缩编码保姆级教程:搞定这5个高频面试题

视频压缩编码保姆级教程:搞定这5个高频面试题 配环境卡了三天?FFmpeg 装不上,libx264 编译报错,Python 库版本冲突。这种崩溃感我太懂了。…

📅 2026/9/23 14:07:31
大语言模型技术发展与应用场景探索研究

大语言模型技术发展与应用场景探索研究

刚接触一个新领域,最怕的就是迷失在海量的外国文献里,读了很多篇还是理不清脉络。我曾经也以为“研究现状”只能靠逐篇阅读、手动总结,直到发现了一些能生成“知识图谱”的神器。它们能让你像开了上帝视角一样,瞬间看清一个领域的…

📅 2026/9/23 14:07:31
MORE NEWS

更多资讯

📰

机械设计课程设计说明书写作规范与工程表达要点

简介:本资源是一份完整的机械设计课程设计说明书,面向高校机械类专业本科生及课程设计初学者,聚焦蜗轮蜗杆减速器这一典型传动装置的设计全流程实践。内容覆盖参数选择(总传动比i35、蜗杆头数z₁1、卷筒直径D350mm等)、…

📰

Mermaid Live Editor 快速入门:3 种方式在浏览器里编辑和预览 Mermaid 图表

Mermaid Live Editor 快速入门:3 种方式在浏览器里编辑和预览 Mermaid 图表 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me…

📰

YOLOv8实验室防护服穿戴检测:数据集、训练、部署与避坑指南

简介:基于YOLOv8的实验室防护服穿戴规范检测项目,面向计算机视觉、人工智能等专业的毕业设计或课程设计场景,用于自动识别实验室人员是否按规定穿着防护服,为安全监管提供智能化辅助。资源内含完整可运行的Python源码、可视化交互…

📰

缺陷检测实战:Defect Eye代码包与Mask R-CNN解析

简介:缺陷检测是工业视觉与质量控制中的核心任务,也是智能质检落地时最常见的算法场景之一,这套资源围绕“Defect Eye”提供了Python实现的完整检测方案,包含从数据准备、模型推理到结果评估的闭环代码,面向计算机视觉…

📰

qqp面试必问:5个最佳实践让你告别只会背八股文

qqp面试必问:5个最佳实践让你告别只会背八股文 看了一堆教程还是不会写项目?别慌,这病我有。 很多刚转行或者自学的朋友,陷入一个死循环:看视频点头如捣蒜,自己动手写代码就抓瞎。面试时被问一句 qqp 相关的底层逻辑,脑子一片空白。…

📰

重新模糊增强:隐式扩散模型Python实现与避坑指南

简介:本资源面向计算机相关专业的毕业设计、期末大作业与课程实训场景,提供一套基于隐式扩散的重新模糊增强方法完整Python实现,帮助学习者理解扩散模型在图像去模糊与质量增强中的落地方式。压缩包共96个文件、约60.2MB,以59个Py…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬