登录
首页 >  Golang >  Go问答

Kubernetes测试:未为v1alpha1.JivaVolume类型注册任何种类

来源:stackoverflow

时间:2024-02-19 19:21:24 277浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《Kubernetes测试:未为v1alpha1.JivaVolume类型注册任何种类》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

如何在golang的k8s测试中注册crd? 我正在通过以下方式创建假客户端:

k8sfake.newsimpleclientset(
    &jivapv1,
    &jv1,
)}},

我知道我可以通过在 kubernetes 中应用图表来注册 crd,但在 golang 中没有找到这样做的好方法。

我正在使用 viaplha1.jivavolume 接口,该接口抛出错误,表明没有为 viaplha1.jivavolume 类型注册任何类型。这是一个简短的代码部分,我在其中创建了 jivavolume 类型的假 persisten 卷对象。

var jv1 = v1alpha1.JivaVolume{
    TypeMeta: metav1.TypeMeta{},
    ObjectMeta: metav1.ObjectMeta{
        Name:      "pvc-1",
        Namespace: "openebs",
        Labels:    map[string]string{"nodeID": "worker-node-1"},
    },
...
...

如何在 fakeclient 中注册该类型?或者如何在 fakeclient() 中注册 crd?


正确答案


您必须将新的控制器 api 添加到方案中,请检查此示例。

import (
        "context"
        "testing"
    
        cachev1alpha1 "github.com/some-operatorapi/pkg/apis/cache/v1alpha1"
        "k8s.io/apimachinery/pkg/runtime"
        "sigs.k8s.io/controller-runtime/pkg/client"
        "sigs.k8s.io/controller-runtime/pkg/client/fake"
    )
    
    func TestCachedController(t *testing.T) {
        ...
        // A Cached object with metadata and spec.
        cached := &cachev1alpha1.Cached{
            ObjectMeta: metav1.ObjectMeta{
                Name:      "memcached",
                Namespace: "memcached-operator",
                Labels: map[string]string{
                    "label-key": "label-value",
                },
            },
        }
    
        // Objects to track in the fake client.
        Objs := []runtime.Object{}
        Objs = append(Objs, cached)
        scheme := runtime.NewScheme()
        _ = cachev1alpha1.AddToScheme(scheme)
        cl:=  fake.NewClientBuilder().WithScheme(scheme).WithRuntimeObjects(Objs...).Build()
    
        // List Memcached objects filtering by labels
        opt := client.MatchingLabels(map[string]string{"label-key": "label-value"})
        memcachedList := &cachev1alpha1.MemcachedList{}
        err := cl.List(context.TODO(), memcachedList, opt)
        if err != nil {
            t.Fatalf("list memcached: (%v)", err)
        }
        ...
    }

以上就是《Kubernetes测试:未为v1alpha1.JivaVolume类型注册任何种类》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>