utils/sort.go
func DependencyOrder(disco discovery.OpenAPISchemaInterface, mapper meta.RESTMapper, list []*unstructured.Unstructured) (sort.Interface, error) {
	sortKeys := make([]int, len(list))
	for i, item := range list {
		var err error
		sortKeys[i], err = depTier(disco, mapper, item.GetObjectKind())
		if err != nil {
			return nil, err
		}
	}
	log.Debugf("sortKeys is %v", sortKeys)
	return &mappedSort{sortKeys: sortKeys, items: list}, nil
}
func DependencyOrder(disco discovery.OpenAPISchemaInterface, mapper meta.RESTMapper, list []*unstructured.Unstructured) (sort.Interface, error) {
	sortKeys := make([]int, len(list))
	for i, item := range list {
		var err error
		sortKeys[i], err = depTier(disco, mapper, item.GetObjectKind())
		if err != nil {
			return nil, err
		}
	}
	log.Debugf("sortKeys is %v", sortKeys)
	return &mappedSort{sortKeys: sortKeys, items: list}, nil
}
// DependencyOrder is a `sort.Interface` that *best-effort* sorts the
// objects so that known dependencies appear earlier in the list.  The
// idea is to prevent *some* of the "crash-restart" loops when
// creating inter-dependent resources.