HAOJX

k8s reconcile中client如何使用patch

字数统计: 157阅读时长: 1 min
2021/11/25 Share

example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
func (r *MemcachedReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
...

dep := &v1.Deployment{}
err := r.Get(ctx, request.NamespacedName, dep)

...

// A merge patch will preserve other fields modified at runtime.
patch := client.MergeFrom(dep.DeepCopy())
dep.Spec.Selector.MatchLabels["is_running"] = "true"
err := r.Patch(ctx, dep, patch)
patch:=client.MergeFrom(d.deploy.DeepCopy())
d.apply()
err:=d.Patch(ctx,d.deploy,patch)
if err != nil {
fmt.Println("merge deploy error:",err)
return err
}

就是想mergefrom这个资源 使用他的deepcopy方法 这个是没有变更之前的

之后做了变更了

就可以用patch方法来patch他 他有三个参数 第一个是ctx 第二个是变更之后的资源 第三个是变更之前的资源

CATALOG