我一直很好奇 “Helm 执行资源的顺序是什么?”

单纯看 Chart 里面的内容完全看不出来,例如:​​wordpress​

Helm 执行资源的顺序是什么?_chart


直到今天才去搜了搜,发现下面的内容:

​helm-install-in-certain-order​

通过上面这篇内容,找到了 Helm2 和 Helm3 的执行和卸载顺序:

在 Helm3 中的执行顺序定义代码如下:

// InstallOrder is the order in which manifests should be installed (by Kind).
//
// Those occurring earlier in the list get installed before those occurring later in the list.
var InstallOrder KindSortOrder = []string{
"Namespace",
"NetworkPolicy",
"ResourceQuota",
"LimitRange",
"PodSecurityPolicy",
"PodDisruptionBudget",
"Secret",
"ConfigMap",
"StorageClass",
"PersistentVolume",
"PersistentVolumeClaim",
"ServiceAccount",
"CustomResourceDefinition",
"ClusterRole",
"ClusterRoleList",
"ClusterRoleBinding",
"ClusterRoleBindingList",
"Role",
"RoleList",
"RoleBinding",
"RoleBindingList",
"Service",
"DaemonSet",
"Pod",
"ReplicationController",
"ReplicaSet",
"Deployment",
"HorizontalPodAutoscaler",
"StatefulSet",
"Job",
"CronJob",
"Ingress",
"APIService",
}

Helm 不是按照文件的某个顺序来执行的,而是根据文件内容的 ​​Kind​​,按照定义的顺序执行的,上面的执行顺序基本上和类型间的使用(依赖)顺序有一定关联。

想要控制某些顺序时可以看看 ​​Chart Hooks​​。