import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/apimachinery/announced" "k8s.io/kubernetes/pkg/apimachinery/registered" "k8s.io/kubernetes/pkg/client/unversioned" "k8s.io/kubernetes/pkg/controller/framework" "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/util" ) func main() { // create a client to interact with the Kubernetes API server c, err := unversioned.New(&unversioned.Config{ ... }) if err != nil { panic(err) } // create a new event object event := &api.Event { Type: "Normal", Reason: "DeploymentCreated", Message: "Deployment myapp created successfully!", FirstSeen: metav1.Now(), LastSeen: metav1.Now(), InvolvedObject: api.ObjectReference { Kind: "Deployment", Namespace: "default", Name: "myapp", }, } // create a new watch for deployment events waitFn := framework.WaitForCacheSync(util.NeverStop) _, controller := framework.NewInformer( c.Events("default"), &api.Event{}, resyncPeriod, framework.ResourceEventHandlerFuncs { UpdateFunc: func(oldObj, newObj interface{}) {}, DeleteFunc: func(obj interface{}) {}, AddFunc: func(obj interface{}) { e, _ := obj.(*api.Event) if e != nil && e.InvolvedObject != nil && e.InvolvedObject.Kind == "Deployment" && e.InvolvedObject.Name == "myapp" && e.Reason == "DeploymentCreated" { // handle the DeploymentCreated event fmt.Println("Received DeploymentCreated event!") } }, }, ) // start watching for events go controller.Run(waitFn) select {} }In this example, we first create a new Kubernetes client using the `unversioned.New` function, passing in the necessary configuration for connecting to the Kubernetes API server. We then create a new `api.Event` object with information about the new deployment we want to track. We then create a new watch for deployment events using the `framework.NewInformer` function, which takes a Kubernetes client and an object type to watch for. We then define an event handler function that checks for the presence of the `DeploymentCreated` event for our particular deployment, and handles it accordingly. Finally, we start the controller with `controller.Run` and wait indefinitely using a `select{}` block. The package library for this code example is `k8s.io/kubernetes/pkg/client/unversioned`.