027 Project 27: Kubernetes Event Watcher
027 Build a Kubernetes Event Watcher
Watch cluster events in real time.
Full main.go
package main
import (
"context"
"fmt"
"os"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
)
func main() {
cfg, err := clientcmd.BuildConfigFromFlags("", os.Getenv("HOME")+"/.kube/config")
if err != nil {
panic(err)
}
cli, err := kubernetes.NewForConfig(cfg)
if err != nil {
panic(err)
}
w, err := cli.CoreV1().Events("").Watch(context.Background(), metav1.ListOptions{})
if err != nil {
panic(err)
}
defer w.Stop()
for e := range w.ResultChan() {
fmt.Printf("%T\n", e.Object)
}
}Step-by-Step Explanation
- Build Kubernetes client config from kubeconfig.
- Scope operations by namespace or resource type.
- Query or watch API objects.
- Extract actionable status fields.
- Return output and exit codes suitable for scripts and CI.
Code Anatomy
- Setup phase creates client and context.
- Query/watch phase pulls cluster state.
- Presentation phase prints concise operational results.
Learning Goals
- Use
client-gosafely and predictably. - Convert API objects into operator-facing insights.
- Build automation-friendly cluster checks.