1、JsonPatch创建数组

 imagePullPolicy4 := "44"
   patch := []byte(fmt.Sprintf(`
[
  {
    "op": "add",
    "path": "/spec/sysctlInit/command",
    "value": ["%s"]
  }
]
   `, imagePullPolicy4))

   if err := kubeCli.Patch(context.Background(), &v1alpha1.MyReconciler{
      ObjectMeta: metav1.ObjectMeta{
         Namespace: namespace,
         Name:      name,
      }}, client.RawPatch(ctypes.JSONPatchType, patch)); err != nil {
      return err
   }

2、JsonPatch为数组添加元素

imagePullPolicy5 := "55"
   patch := []byte(fmt.Sprintf(`
[
  {
    "op": "add",
    "path": "/spec/sysctlInit/command/-",
    "value": "%s"
  }
]
   `, imagePullPolicy5))
   if err := kubeCli.Patch(context.Background(), &v1alpha1.MyReconciler{
      ObjectMeta: metav1.ObjectMeta{
         Namespace: namespace,
         Name:      name,
      }}, client.RawPatch(ctypes.JSONPatchType, patch)); err != nil {
      return err
   }

3、JsonPacth创建对象

imagePullPolicy := "44"
patch := []byte(fmt.Sprintf(`
   [
      {    
         "op": "add",
         "path": "/spec/sysctlInit",
         "value": {
             "imagePullPolicy": "%s",
             "enabled": true
         }
      }
   ]
`, imagePullPolicy))
if err := kubeCli.Patch(context.Background(), &v1alpha1.MyReconciler{
   ObjectMeta: metav1.ObjectMeta{
      Namespace: namespace,
      Name:      name,
   }}, client.RawPatch(ctypes.JSONPatchType, patch)); err != nil {
   return err
}

4、StrategicPatch

notCrpatch := []byte(`{"metadata":{"annotations":{"version": "v2"}}}`)
if err := kubeCli.Patch(context.Background(), &v1alpha1.MyReconciler{
   ObjectMeta: metav1.ObjectMeta{
      Namespace: namespace,
      Name:      name,
   }}, client.RawPatch(ctypes.StrategicMergePatchType, notCrpatch)); err != nil {
   return err
}

5、kubectl进行json patch

# 修改terminationGracePeriodSeconds:
kubectl patch app lt81-05-jyd0725app2-dev-dev2 -n lt81-05-dev --type json -p '[{"op":"replace","path":"/spec/components/0/properties/terminationGracePeriodSeconds","value":33}]'

# 新增系统环境变量:
kubectl patch app lt81-05-jyd0725app2-dev-dev2 -n lt81-05-dev --type json -p '[{"op":"add","path":"/spec/components/0/properties/env/-","value":{"name":"aaa","value":"bbb"}}]'

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐