CLI开发工具云原生【免费下载链接】kustomizeCustomization of kubernetes YAML configurations项目地址https://gitcode.com/gh_mirrors/ku/kustomize点击查看免费下载sortOptions是 kustomize v5.0.0 提供的 Kustomization 顶层字段用于控制kustomize build最终输出资源Resources的排列顺序。它取代了已弃用的--reorder命令行标志是官方认可的排序方式。读完本文你将掌握fifo与legacy两种排序策略的完整配置语法、优先级规则、内置默认顺序表以及如何在 base/overlay 场景中正确使用它。sortOptions 字段概述sortOptions字段用于对 kustomize 输出的资源进行排序位于kustomization.yaml的顶层。它在 api/types/kustomization.go 中被定义为Kustomization结构体的一个可选指针字段// SortOptions change the order that kustomize outputs resources. SortOptions *SortOptions json:sortOptions,omitempty yaml:sortOptions,omitempty对应的数据结构定义在 api/types/sortoptions.go 中// SortOptions defines the order that kustomize outputs resources. type SortOptions struct { // Order selects the ordering strategy. Order SortOrder json:order,omitempty yaml:order,omitempty // LegacySortOptions tweaks the sorting for the legacy sort ordering // strategy. LegacySortOptions *LegacySortOptions json:legacySortOptions,omitempty yaml:legacySortOptions,omitempty } // SortOrder defines different ordering strategies. type SortOrder string const LegacySortOrder SortOrder legacy const FIFOSortOrder SortOrder fifo // LegacySortOptions define various options for tweaking the legacy ordering // strategy. type LegacySortOptions struct { // OrderFirst selects the resource kinds to order first. OrderFirst []string json:orderFirst yaml:orderFirst // OrderLast selects the resource kinds to order last. OrderLast []string json:orderLast yaml:orderLast }基础语法如下kind: Kustomization sortOptions: order: legacy | fifo # legacy 是默认值目前支持两种排序策略legacy与fifo。使用注意事项IMPORTANT仅顶层 Kustomization 生效目前该字段只在顶层 Kustomization即kustomize build直接作用的那个目录中被尊重。位于构建链下游的 Kustomization例如通过resources字段引入的 base 中的sortOptions中的同名字段会被忽略。这一点由测试用例 TestChildKustomizationSortOrder 验证overlay 中设置order: fifobase 中设置order: legacy最终输出按 overlay 的 fifo 顺序排列。官方推荐方式该字段是排序资源的官方认可方式应取代已弃用的--reorderCLI 标志使用。配置优先级kustomization 文件优先于 CLI 标志在 api/krusty/kustomizer.go 的runTransformers相关逻辑中排序策略的优先级被明确实现为三条分支Case 1kustomization 文件优先如果 Kustomization 中设置了SortOptions则直接使用它构建builtins.SortOrderTransformerPlugin并执行Transform。若 CLI 同时传入了--reorder会打印警告Warning: Sorting order is set both in kustomization.yaml (sortOptions) and in a CLI flag (--reorder). Using the kustomization file over the CLI flag.Case 2回退到 CLI 或默认值如果文件中未设置sortOptions且--reorder为legacy或未指定则使用LegacySortOrder的默认排序。若--reorder为none且文件中未设置则不进行重排。--reorderCLI 标志在 kustomize/commands/build/build.go 中被标记为弃用err : cmd.Flags().MarkDeprecated(flagReorderOutputName, use the new sortOptions field in kustomization.yaml instead.)其合法值定义在 api/krusty/options.golegacy、none、unspecified。FIFO 排序保持加载顺序在fifo顺序下kustomize不改变资源的顺序。资源按照它们在resources字段中被加载的顺序原样输出。kind: Kustomization sortOptions: order: fifo从实现角度看在 api/internal/builtins/SortOrderTransformer.go 的Transform方法中只有legacy顺序会执行实际的排序逻辑fifo顺序下排序逻辑被跳过资源维持原顺序。测试用例 TestFIFOOrdering 验证了这一点一组乱序资源在fifo配置下输出与输入完全一致。参数校验fifo 与 legacySortOptions 不能共存如果你在fifo顺序下仍然设置了legacySortOptionskustomize 会报错。这一点由 SortOrderTransformer.go 的validate方法保证并在测试 TestInvalidLegacySortOptionsWithFIFOOrder 中验证错误信息为the field sortOptions.legacySortOptions is set but the selected sort order is fifo, not legacy同理如果设置了legacySortOptions却没有指定order也会报错见 TestInvalidLegacySortOptionsWithoutOrderKeythe field sortOptions.order must be one of [fifo, legacy]Legacy 排序基于优先级列表的确定性排序legacy排序是 kustomize 的默认顺序当sortOptions.order字段未指定时即使用该策略。legacy排序使用两张优先级列表orderFirst列表应最先出现在输出中的资源类型。orderLast列表应最后出现在输出中的资源类型。不在列表中的资源位于中间按它们的apiVersion和kind字段排序。核心实现原理在 api/internal/builtins/SortOrderTransformer.go 的newLegacyIDSorter中两张列表被换算为每个 Kind 的整数权重var typeOrders func() map[string]int { m : map[string]int{} for i, n : range options.OrderFirst { m[n] -len(options.OrderFirst) i } for i, n : range options.OrderLast { m[n] 1 i } return m }()orderFirst中的资源权重为负数-len(orderFirst) i因此必定排在最前且列表内部的先后顺序也被保留i 越大权重越大。orderLast中的资源权重为正数1 i因此必定排在最后同样保留列表内部顺序。未出现在任何列表中的 Kind 权重为 0落在中间区域。随后Less方法SortOrderTransformer.go先按 GVKGroup/Version/Kind比较权重权重相同时再通过legacyGVKSortString与legacyResIDSortString的字符串拼接做稳定排序缺失的 Group/Version/Kind 分别用~G/~V/~K占位缺失的 Namespace/Name 用~X/~N占位分隔符为_与|。排序完成后通过m.Clear()与m.Append(r)按新顺序重建资源映射。示例 1使用 orderFirst / orderLast 自定义顺序下面的配置让Namespace对象最先输出、Deployment对象最后输出kind: Kustomization sortOptions: order: legacy legacySortOptions: orderFirst: - Namespace orderLast: - Deployment该行为由测试 TestCustomOrdering 验证将ValidatingWebhookConfiguration放入orderFirst、Namespace与Deployment放入orderLast后输出顺序完全遵循自定义列表。示例 2默认 Legacy 排序如果指定legacy顺序但不提供任何列表参数kustomize 会回退到引入该功能之前一直使用的内置列表定义在 SortOrderTransformer.go注释明确标注 DO NOT CHANGE!即不得修改。由于legacy本身就是默认顺序以下两种配置完全等价kind: Kustomization sortOptions: order: legacy等价于kind: Kustomization sortOptions: order: legacy legacySortOptions: orderFirst: - Namespace - ResourceQuota - StorageClass - CustomResourceDefinition - ServiceAccount - PodSecurityPolicy - Role - ClusterRole - RoleBinding - ClusterRoleBinding - ConfigMap - Secret - Endpoints - Service - LimitRange - PriorityClass - PersistentVolume - PersistentVolumeClaim - Deployment - StatefulSet - CronJob - PodDisruptionBudget orderLast: - MutatingWebhookConfiguration - ValidatingWebhookConfiguration内置默认顺序的逻辑依据在 SortOrderTransformer.go 的注释中有说明默认顺序基于 GVK 结构体的排列——把无依赖的集群级基础资源如 Namespace、StorageClass 等放在前面把依赖数量较多的资源如 ValidatingWebhookConfiguration放在最后。源码注释同时坦承并引用 kubernetes-sigs/kustomize 的 issue #3913这最初是尝试按资源应用顺序输出但由于并非所有类型都能预先知晓这一目标后来被证明不可行因此该列表仅作为向后兼容的固定顺序保留。这一默认行为由测试 TestDefaultLegacyOrdering 与 TestKustomizationSortOrderNotSet 验证即使完全不设置sortOptions或--reorder输出也会按默认 legacy 顺序排列。实战建议与完整验证结合 api/krusty/sortordertransformer_test.go 中的测试矩阵可以总结出以下实战要点场景配置方式结果保持资源原始加载顺序sortOptions.order: fifo输出与输入顺序一致使用 kustomize 默认排序不设置sortOptions或order: legacy按内置 orderFirst/orderLast 默认表排序自定义优先/置后类型order: legacylegacySortOptions.orderFirst/orderLast按自定义列表排序未列出的类型按 apiVersion/kind 排在中间overlay 与 base 都设置了 sortOptions顶层overlay生效子 Kustomization 中的设置被忽略TestChildKustomizationSortOrder文件与 CLI 同时设置文件中设置 --reorder文件优先并输出弃用警告TestCLIAndKustomizationSet此外需注意SortOrderTransformer目前不能通过transformers字段以独立 transformer 配置的方式加载——测试 TestSortOrderGivenAsTransformer 验证了这样做会报错unable to load builtin SortOrderTransformer.builtin.[noGrp]。它只能通过 Kustomization 顶层的sortOptions字段启用。如果需要查看该功能的完整参考实现可依次阅读字段定义api/types/sortoptions.go结构体接入api/types/kustomization.go排序算法与默认列表api/internal/builtins/SortOrderTransformer.go构建管线接线与优先级逻辑api/krusty/kustomizer.go行为验证测试api/krusty/sortordertransformer_test.go弃用的 CLI 标志kustomize/commands/build/build.go赞分享CLI开发工具云原生【免费下载链接】kustomizeCustomization of kubernetes YAML configurations项目地址https://gitcode.com/gh_mirrors/ku/kustomize点击查看免费下载相关推荐Erduo Skills为AI Agent赋能的终极技能库一站式解决信息获取与内容处理难题Erduo Skills为AI Agent赋能的终极技能库一站式解决信息获取与内容处理难题 Erduo Skills耳朵技能库是一个为AI Agent打CLI开发工具云原生Kustomize resources 字段完全指南声明资源文件、Kustomization 目录与远程引用Kustomize resources 字段完全指南声明资源文件、Kustomization 目录与远程引用 resources 是 KustomizatioCLI开发工具云原生使用 Checkov 扫描 Kustomize kustomization 的完整指南使用 Checkov 扫描 Kustomize kustomization 的完整指南 Checkov 内置的 Kustomize 框架能够在构建阶段自动检测仓应用安全静态分析供应链安全云原生上一篇Barba.js 页面切换性能优化终极指南7个关键指标与最佳实践下一篇如何将VNote笔记转化为Anki记忆卡片完整导出与使用指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
CriPakTools实战:CPK解包打包与TOC解析完全指南 简介:这是一份面向游戏资源解包与修改爱好者的CriPakTools定制版本,日期标记为2019年9月20日,与“SAOLEI”标识对应,主要用于读取、解包和打包CriPak/CPK格式游戏数据文件,适合游戏模组制作、资源分析与逆向调试场景。… · 2026/9/23 23:47:30
热词“cua”的走红密码:从拟声词到全网传播的底层逻辑 这段时间刷短视频,“cua”这个词出现的频率明显高了。弹幕里、评论区、直播间、游戏剪辑的卡点处,甚至身边同事的微信回复里,都能看到它的身影。它没有明确的字典定义,听上去更像一个从嘴巴里自然窜出来的声音——干脆、短促、带着… · 2026/9/23 23:47:18
用Python+pyecharts打造电影票房与评分可视化看板 简介:一份基于Python与pyecharts的国内上映电影票房评分可视化分析项目源码,面向Python初学者、课程设计与期末大作业人群,可快速实现从数据采集、清洗到多维度可视化展示的完整流程。项目覆盖豆瓣、猫眼、时光网等数据源,围绕电影… · 2026/9/23 23:47:18
PHPStan 错误标识符 new.interface 详解:为什么接口不能被实例化,以及如何修复 开发工具代码质量静态分析 【免费下载链接】phpstan PHP Static Analysis Tool - discover bugs in your code without running it! 项目地址: https://gitcode.com/gh_mirrors/ph/phpstan 点击查看 免费下载 导读
new.interface 是 PHPStan 静态分析工具报告的错… · 2026/9/24 0:28:24
ogg文件无法播放?解码器、VLC、FFmpeg三招彻底搞定 1. 先说清楚:ogg 到底是什么文件,为什么双击会翻车你有没有遇到过这种情况:朋友发来一个音乐文件,后缀是 .ogg,你双击下去,系统弹窗提示“Windows Media Player 无法播放此文件”,或者干脆没有任… · 2026/9/24 0:27:34
SAOP学习笔记:用结构化笔记搞定复杂长篇的设定考据 SAOP,全称 Sword Art Online Progressive,国内一般译作《刀剑神域:进击篇》,是川原砾从2012年开始推出的轻小说企划。很多人第一次听到这个名字,会以为是主线的平行世界或者番外,事实上它更像是一套“补完计… · 2026/9/24 0:27:34
读懂国际标准书号ISBN:结构、校验位与出版应用 我最早接触“国际标准书号ISBN”这七个字,是很多年前帮一位朋友整理一摞旧书稿件。当时他把出版社退回的样书翻来覆去地看,指着封底那串印着条码和数字的编号问我:“这个号到底代表啥?是不是有了它,我的书就算正式出版… · 2026/9/24 0:27:28
Axure流程图自定义元件库建设与实战方法论 1. 为什么现在还要花时间学Axure画流程图?——一个老UE设计师的坦白你可能刚在招聘网站上看到“熟悉Axure,能输出高保真原型及业务流程图”这条要求,心里嘀咕:Figma不是更火?ProcessOn画流程图不是更轻量?甚… · 2026/9/24 0:27:28
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44