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

  1. Build Kubernetes client config from kubeconfig.
  2. Scope operations by namespace or resource type.
  3. Query or watch API objects.
  4. Extract actionable status fields.
  5. 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-go safely and predictably.
  • Convert API objects into operator-facing insights.
  • Build automation-friendly cluster checks.