func(r *SysctlReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { l := log.FromContext(ctx) l.V(0).Info("demo start") var sysctlCall systemv1.Sysctl if err := r.Get(ctx, req.NamespacedName, &sysctlCall); err != nil { l.Error(err, "unable to fetch sysctlCall") return ctrl.Result{}, client.IgnoreNotFound(err) }
l.V(0).Info("r.Get returns value", "sysctlCall", sysctlCall) if strings.EqualFold(sysctlCall.Spec.SysctlCall, "Y") { var whoami []byte var cmd *exec.Cmd var err error
cmd = exec.Command("whoami") if whoami, err = cmd.Output(); err != nil { fmt.Println(err) os.Exit(1) } l.V(0).Info("sysctl called", "bash/whoami", string(whoami)) } else { l.V(0).Info("sysctl not called") } l.V(0).Info("demo end") // your logic here return ctrl.Result{}, nil }
system_v1_sysctl.yaml
1 2 3 4 5 6 7
apiVersion:system.demo.org/v1 kind:Sysctl metadata: name:sysctl-sample spec: # Add fields here sysctl_call:Y