mailgun / groupcache

Clone of golang/groupcache with TTL and Item Removal support
Apache License 2.0
484 stars 72 forks source link

Peer pods autodiscovery within kubernetes cluster #48

Open udhos opened 2 years ago

udhos commented 2 years ago

Hi,

I am experimenting with a simple standalone package to automatically keep pod peers up-to-date within a kubernetes cluster:

https://github.com/udhos/kubegroup

Recipe currently looks like this:

groupcachePort := ":5000"

// 1. get my groupcache URL
myURL, errURL = kubegroup.FindMyURL(groupcachePort)

// 2. spawn groupcache peering server
pool := groupcache.NewHTTPPool(myURL)
server := &http.Server{Addr: groupcachePort, Handler: pool}
go func() {
    log.Printf("groupcache server: listening on %s", groupcachePort)
    err := server.ListenAndServe()
    log.Printf("groupcache server: exited: %v", err)
}()

// 3. spawn peering autodiscovery
go kubegroup.UpdatePeers(pool, groupcachePort)

// 4. create groupcache groups, etc: groupOne := groupcache.NewGroup()

Does it look reasonable!?

thrawn01 commented 2 years ago

It does look reasonable! We did something similar with https://github.com/mailgun/gubernator/blob/master/kubernetes.go