首页 > 解决方案 > 添加标签无法通过动态资源和客户端运行

问题描述

我正在使用 client-go 通过解析 yaml 文件来创建资源,单击 code

但是通过非结构化接口为资源设置标签不起作用,该怎么做?

    func (u *Unstructured) SetLabels(labels map[string]string) {
        if labels == nil {
            RemoveNestedField(u.Object, "metadata", "labels")
            return
        }
        u.setNestedMap(labels, "metadata", "labels")
    }

我的代码是这样的:

    func ApplyUnstructured(ctx context.Context, dynamicClient dynamic.Interface, restMapper meta.RESTMapper, unstructuredObj unstructured.Unstructured, serverSide bool) (*unstructured.Unstructured, error) {
        if len(unstructuredObj.GetName()) == 0 {           
            metadata, _ := meta.Accessor(unstructuredObj)      
            generateName := metadata.GetGenerateName()      
            if len(generateName) > 0 {       
                return nil, fmt.Errorf("from %s: cannot use generate name with >apply", generateName)      
            }      
        }         
    ....
    // !!!! set labels not work !!!!!!!        
                unstructuredObj.SetLabels(map[string]string {        
         "jobid":"test",          
    } )

标签: kubernetesclient-go

解决方案


推荐阅读