【发布时间】:2021-03-29 17:37:54
【问题描述】:
我正在编写一个控制器来监视 kubernetes service 对象,并在它们包含特定标签时创建 trafficsplits。
由于原生 kubernetes go 客户端不支持 trafficsplit 对象,我不得不想办法扩展客户端,使其能够识别自定义资源。 我发现这个 guide 很有帮助,让我可以像这样解决这个问题 -
import (
"splitClientV1alpha1 "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/split/clientset/versioned/typed/split/v1alpha1"
"k8s.io/client-go/kubernetes"
...
)
// getting ./kube/config from file
kubehome := filepath.Join(homedir.HomeDir(), ".kube", "config")
// Building the config from file
kubeConfig, err = clientcmd.BuildConfigFromFlags("", kubehome)
if err != nil {
return fmt.Errorf("error loading kubernetes configuration: %w", err)
}
// Creating the native client object
kubeClient, err := kubernetes.NewForConfig(kubeConfig)
if err != nil {
return fmt.Errorf("error creating kubernetes client: %w", err)
}
// Creating another clientset exclusively for the custom resource
splitClient, err := splitClientV1alpha1.NewForConfig(kubeConfig)
if err != nil {
return fmt.Errorf("error creating split client: %s", err)
}
我觉得必须有一种方法可以使用 trafficsplit 模式扩展 kubeClient 对象,而不是像我一样创建一个单独的客户端。有什么方法可以实现吗?
【问题讨论】:
标签: go kubernetes client-go kubernetes-custom-resources