Kubeedge-解析获取Token(keadm gettoken)

什么是keadm gettoken

leads gettoken一般用于我们接入cloudcore的token的值的获取。

如何获取token

通过解析keadm gettoken源码,我们发现,其实keadm gettoken本质上就是查询下了kubeedge namespace 下的name为tokensecret 的Secret的tokendata的值

https://github.com/kubeedge/kubeedge/blob/4ab8abe101e1037415d2c641feef642ab73a1d47/keadm/cmd/keadm/app/cmd/cloud/gettoken.go#L63

这是一个Kubeedge 获取token的最简单的抽象:

package main

import (
"context"
"fmt"
metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
)

func main() {
config, err := clientcmd.BuildConfigFromFlags("", "/Users/joohwan/k8sipconfig/K8sconfigfile")
if err != nil {
panic(err)
}

clientset, err := kubernetes.NewForConfig(config)
secret, err := clientset.CoreV1().Secrets("kubeedge").Get(context.Background(), "tokensecret", metaV1.GetOptions{})
if err != nil {
panic(err)
}
fmt.Printf("Kubeedge JOIN TOKEN:%s", secret.Data["tokendata"])
}