Move Kubernetes API calls into kube-utils program

This reduces the size of the 'weaver' binary.
This commit is contained in:
Bryan Boreham committed 2021-01-19 17:22:47 +00:00
1 parent 164175160a
commit ad621c807e
3 files changed
+30 -35

No files matched your search

+19
View File
@@ -314,6 +314,8 @@ func main() {
justReclaim bool
justCheck bool
justSetNodeStatus bool
justVersion bool
justUID bool
peerName string
nodeName string
logLevel string
@@ -323,6 +325,8 @@ func main() {
flag.BoolVar(&runReclaimDaemon, "run-reclaim-daemon", false, "run background process that reclaim IP space from dead peers ")
flag.BoolVar(&justCheck, "check-peer-new", false, "return success if peer name is not stored in annotation")
flag.BoolVar(&justSetNodeStatus, "set-node-status", false, "set NodeNetworkUnavailable to false")
flag.BoolVar(&justVersion, "print-k8s-version", false, "print the Kubernetes version and exit")
flag.BoolVar(&justUID, "print-uid", false, "print a UID for this installation and exit")
flag.StringVar(&peerName, "peer-name", "unknown", "name of this Weave Net peer")
flag.StringVar(&nodeName, "node-name", "unknown", "name of this Kubernetes node")
flag.StringVar(&logLevel, "log-level", "info", "logging level (debug, info, warning, error)")
@@ -371,6 +375,21 @@ func main() {
}
return
}
if justVersion {
k8sVersion, err := c.Discovery().ServerVersion()
if err != nil {
common.Log.Fatalf("[kube-peers] Could not get Kubernetes version: %v", err)
}
fmt.Println(k8sVersion.String())
}
if justUID {
// use UID of `weave-net` configmap as unique ID of the Kubernetes cluster
cm, err := c.CoreV1().ConfigMaps(configMapNamespace).Get(context.Background(), configMapName, api.GetOptions{})
if err != nil {
common.Log.Fatalf("Unable to fetch ConfigMap %s/%s to infer unique cluster ID", configMapNamespace, configMapName)
}
fmt.Println(cm.ObjectMeta.UID)
}
if runReclaimDaemon {
// Handle SIGINT and SIGTERM
ch := make(chan os.Signal, 1)
+4
View File
@@ -118,6 +118,10 @@ fi
# weaver is running as the DB can only be opened by one process at a time
/usr/bin/weaveutil set-db-flag "$DB_PREFIX" peer-reclaim ok
# couple more variables
WEAVE_KUBERNETES_VERSION=$(/home/weave/kube-utils -print-k8s-version)
WEAVE_KUBERNETES_UID=$(/home/weave/kube-utils -print-uid)
post_start_actions() {
# Wait for weave process to become responsive
while true ; do
+7 -35
View File
@@ -10,9 +10,6 @@ import (
checkpoint "github.com/weaveworks/go-checkpoint"
weave "github.com/weaveworks/weave/router"
api "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
)
var checker *checkpoint.Checker
@@ -20,9 +17,7 @@ var newVersion atomic.Value
var success atomic.Value
const (
updateCheckPeriod = 6 * time.Hour
configMapName = "weave-net"
configMapNamespace = "kube-system"
updateCheckPeriod = 6 * time.Hour
)
func checkForUpdates(dockerVersion string, router *weave.NetworkRouter, clusterSize uint) {
@@ -88,36 +83,13 @@ func checkpointFlags(router *weave.NetworkRouter) []checkpoint.Flag {
return flags
}
// checkpoint Kubernetes specific details
// checkpoint Kubernetes specific details, passed in from launch script
func checkpointKubernetes(ctx context.Context, flags map[string]string, clusterSize uint) {
// checks if weaver is running in Kubernetes
host := os.Getenv("KUBERNETES_SERVICE_HOST")
if len(host) == 0 {
return
version := os.Getenv("WEAVE_KUBERNETES_VERSION")
if len(version) == 0 {
return // not running under Kubernetes
}
config, err := rest.InClusterConfig()
if err != nil {
Log.Printf("Could not get Kubernetes in-cluster config: %v", err)
return
}
c, err := kubernetes.NewForConfig(config)
if err != nil {
Log.Printf("Could not make Kubernetes client: %v", err)
return
}
k8sVersion, err := c.Discovery().ServerVersion()
if err != nil {
Log.Printf("Could not get Kubernetes version: %v", err)
return
}
flags["kubernetes-version"] = k8sVersion.String()
// use UID of `weave-net` configmap as unique ID of the Kubenerets cluster
cm, err := c.CoreV1().ConfigMaps(configMapNamespace).Get(ctx, configMapName, api.GetOptions{})
if err != nil {
Log.Printf("Unable to fetch ConfigMap %s/%s to infer unique cluster ID", configMapNamespace, configMapName)
return
}
flags["kubernetes-cluster-uid"] = string(cm.ObjectMeta.UID)
flags["kubernetes-version"] = version
flags["kubernetes-cluster-uid"] = string(os.Getenv("WEAVE_KUBERNETES_UID"))
flags["kubernetes-cluster-size"] = fmt.Sprint(clusterSize)
}