HAOJX

fake-client的用法

字数统计: 230阅读时长: 1 min
2021/12/01 Share

下面是个例子

他是用在测试中的 就是创建出一个假的client 而不是用真实环境中的client

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package main

import (
"context"
"fmt"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/fake"
"log"
)

func NewPod(ns, name string) *v1.Pod {
pod := &v1.Pod{}
pod.Namespace = ns
pod.Name = name
return pod
}

type podctl struct {
client kubernetes.Interface
}

func newPodctl(client kubernetes.Interface) *podctl {
return &podctl{client: client}
}

func (p *podctl) addPod(pod *v1.Pod) error {
_, err := p.client.CoreV1().Pods(pod.Namespace).Create(context.Background(), pod, metav1.CreateOptions{})
if err != nil {
log.Fatal(err)
}
return err
}
func main() {
client := fake.NewSimpleClientset()
podctl := newPodctl(client)
err := podctl.addPod(NewPod("default", "abc"))
if err != nil {
log.Fatal(err)
}

//yan zheng
pod, err := client.CoreV1().Pods("default").Get(context.Background(), "abc", metav1.GetOptions{})
fmt.Println(err)
fmt.Println(pod)
}

用fakeclient创建出来的client如果想要和真实的client是一个类型的话 , 那么就把client的类型设置成

kubernetes.Interface 即可

CATALOG