Skip to content
This repository was archived by the owner on Jun 20, 2024. It is now read-only.

Commit f9239c9

Browse files
authored
Merge pull request #3885 from weaveworks/move-k8s-checkpoint
Move Kubernetes API calls into kube-utils program
2 parents 1641751 + ad621c8 commit f9239c9

File tree

3 files changed

+30
-35
lines changed

3 files changed

+30
-35
lines changed

prog/kube-utils/main.go

+19
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,8 @@ func main() {
314314
justReclaim bool
315315
justCheck bool
316316
justSetNodeStatus bool
317+
justVersion bool
318+
justUID bool
317319
peerName string
318320
nodeName string
319321
logLevel string
@@ -323,6 +325,8 @@ func main() {
323325
flag.BoolVar(&runReclaimDaemon, "run-reclaim-daemon", false, "run background process that reclaim IP space from dead peers ")
324326
flag.BoolVar(&justCheck, "check-peer-new", false, "return success if peer name is not stored in annotation")
325327
flag.BoolVar(&justSetNodeStatus, "set-node-status", false, "set NodeNetworkUnavailable to false")
328+
flag.BoolVar(&justVersion, "print-k8s-version", false, "print the Kubernetes version and exit")
329+
flag.BoolVar(&justUID, "print-uid", false, "print a UID for this installation and exit")
326330
flag.StringVar(&peerName, "peer-name", "unknown", "name of this Weave Net peer")
327331
flag.StringVar(&nodeName, "node-name", "unknown", "name of this Kubernetes node")
328332
flag.StringVar(&logLevel, "log-level", "info", "logging level (debug, info, warning, error)")
@@ -371,6 +375,21 @@ func main() {
371375
}
372376
return
373377
}
378+
if justVersion {
379+
k8sVersion, err := c.Discovery().ServerVersion()
380+
if err != nil {
381+
common.Log.Fatalf("[kube-peers] Could not get Kubernetes version: %v", err)
382+
}
383+
fmt.Println(k8sVersion.String())
384+
}
385+
if justUID {
386+
// use UID of `weave-net` configmap as unique ID of the Kubernetes cluster
387+
cm, err := c.CoreV1().ConfigMaps(configMapNamespace).Get(context.Background(), configMapName, api.GetOptions{})
388+
if err != nil {
389+
common.Log.Fatalf("Unable to fetch ConfigMap %s/%s to infer unique cluster ID", configMapNamespace, configMapName)
390+
}
391+
fmt.Println(cm.ObjectMeta.UID)
392+
}
374393
if runReclaimDaemon {
375394
// Handle SIGINT and SIGTERM
376395
ch := make(chan os.Signal, 1)

prog/weave-kube/launch.sh

+4
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ fi
118118
# weaver is running as the DB can only be opened by one process at a time
119119
/usr/bin/weaveutil set-db-flag "$DB_PREFIX" peer-reclaim ok
120120

121+
# couple more variables
122+
WEAVE_KUBERNETES_VERSION=$(/home/weave/kube-utils -print-k8s-version)
123+
WEAVE_KUBERNETES_UID=$(/home/weave/kube-utils -print-uid)
124+
121125
post_start_actions() {
122126
# Wait for weave process to become responsive
123127
while true ; do

prog/weaver/checkpoint.go

+7-35
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,14 @@ import (
1010

1111
checkpoint "github.com/weaveworks/go-checkpoint"
1212
weave "github.com/weaveworks/weave/router"
13-
api "k8s.io/apimachinery/pkg/apis/meta/v1"
14-
"k8s.io/client-go/kubernetes"
15-
"k8s.io/client-go/rest"
1613
)
1714

1815
var checker *checkpoint.Checker
1916
var newVersion atomic.Value
2017
var success atomic.Value
2118

2219
const (
23-
updateCheckPeriod = 6 * time.Hour
24-
configMapName = "weave-net"
25-
configMapNamespace = "kube-system"
20+
updateCheckPeriod = 6 * time.Hour
2621
)
2722

2823
func checkForUpdates(dockerVersion string, router *weave.NetworkRouter, clusterSize uint) {
@@ -88,36 +83,13 @@ func checkpointFlags(router *weave.NetworkRouter) []checkpoint.Flag {
8883
return flags
8984
}
9085

91-
// checkpoint Kubernetes specific details
86+
// checkpoint Kubernetes specific details, passed in from launch script
9287
func checkpointKubernetes(ctx context.Context, flags map[string]string, clusterSize uint) {
93-
// checks if weaver is running in Kubernetes
94-
host := os.Getenv("KUBERNETES_SERVICE_HOST")
95-
if len(host) == 0 {
96-
return
88+
version := os.Getenv("WEAVE_KUBERNETES_VERSION")
89+
if len(version) == 0 {
90+
return // not running under Kubernetes
9791
}
98-
config, err := rest.InClusterConfig()
99-
if err != nil {
100-
Log.Printf("Could not get Kubernetes in-cluster config: %v", err)
101-
return
102-
}
103-
c, err := kubernetes.NewForConfig(config)
104-
if err != nil {
105-
Log.Printf("Could not make Kubernetes client: %v", err)
106-
return
107-
}
108-
k8sVersion, err := c.Discovery().ServerVersion()
109-
if err != nil {
110-
Log.Printf("Could not get Kubernetes version: %v", err)
111-
return
112-
}
113-
flags["kubernetes-version"] = k8sVersion.String()
114-
115-
// use UID of `weave-net` configmap as unique ID of the Kubenerets cluster
116-
cm, err := c.CoreV1().ConfigMaps(configMapNamespace).Get(ctx, configMapName, api.GetOptions{})
117-
if err != nil {
118-
Log.Printf("Unable to fetch ConfigMap %s/%s to infer unique cluster ID", configMapNamespace, configMapName)
119-
return
120-
}
121-
flags["kubernetes-cluster-uid"] = string(cm.ObjectMeta.UID)
92+
flags["kubernetes-version"] = version
93+
flags["kubernetes-cluster-uid"] = string(os.Getenv("WEAVE_KUBERNETES_UID"))
12294
flags["kubernetes-cluster-size"] = fmt.Sprint(clusterSize)
12395
}

0 commit comments

Comments
 (0)