diff --git a/README.md b/README.md index e3e76ff..005dcea 100644 --- a/README.md +++ b/README.md @@ -17,26 +17,45 @@ ## 3 K8S配置 ```go type Config struct { - Addr string // 地址 - Debug bool // 调试信息 - Token string // token信息 - Namespaces []string // 命名空间列表 - DeploymentPrefix string // 前缀 - TLSClientConfigInsecure bool // 是否开启tls + // Addr k8s API Server 地址 + Addr string + // Debug 是否开启debug模式 + Debug bool + // Token k8s API Server 请求token + Token string + // Token k8s API Server 请求token file + // 本地运行时需要将 tokenFile 参数显式的设置为 "" + TokenFile string + // Namespaces 需要进行查询和监听的 Namespace 列表 + Namespaces []string + // DeploymentPrefix 命名前缀 + DeploymentPrefix string + // TLSClientConfigInsecure 是否启用 TLS + TLSClientConfigInsecure bool } ``` ## 4 默认配置 * host: KUBERNETES_SERVICE_HOST 环境变量 * port: KUBERNETES_SERVICE_PORT 环境变量 -* token: /var/run/secrets/kubernetes.io/serviceaccount/token 文件路径 +* token: /var/run/secrets/kubernetes.io/serviceaccount/token 文件中值 +* tokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token 文件路径 ## 5 根据K8S信息,调用gRPC ### 5.1 K8S配置 ```toml [k8s] -addr="" -token="" +# k8s API Server 地址 +addr="https://$API_SERVER_ADDR" +# Debug 是否开启debug模式 +debug = true +# Token k8s API Server 请求token +token="$API_SERVER_TOKEN" +# Token k8s API Server 请求token file +# 本地运行时:需要显式设置 tokenFile = "" +# 集群模式下运行时:需要 tokenFile = "/var/run/secrets/kubernetes.io/serviceaccount/token" 或释掉 tokenFile 这个 key +tokenFile = "" +# Namespaces 需要进行查询和监听的 Namespace 列表 namespaces=["default"] [grpc.test] diff --git a/config.go b/config.go index 06bc736..ee854f3 100644 --- a/config.go +++ b/config.go @@ -9,15 +9,24 @@ import ( "k8s.io/client-go/rest" ) -// Config ... +// Config 定义了ek8s组件配置结构 type Config struct { - Addr string - Debug bool - Token string - Namespaces []string - DeploymentPrefix string // 命名前缀 + // Addr k8s API Server 地址 + Addr string + // Debug 是否开启debug模式 + Debug bool + // Token k8s API Server 请求token + Token string + // Token k8s API Server 请求token file + // 本地运行时:一定需要显式设置 tokenFile = "" + // 集群模式下运行时:需要 tokenFile = "/var/run/secrets/kubernetes.io/serviceaccount/token" 或释掉 tokenFile 这个 key + TokenFile string + // Namespaces 需要进行查询和监听的 Namespace 列表 + Namespaces []string + // DeploymentPrefix 命名前缀 + DeploymentPrefix string + // TLSClientConfigInsecure 是否启用 TLS TLSClientConfigInsecure bool - tokenFile string } // DefaultConfig 返回默认配置,默认采用集群内模式 @@ -27,7 +36,9 @@ func DefaultConfig() *Config { Token: inClusterToken(), Namespaces: []string{inClusterNamespace()}, TLSClientConfigInsecure: true, - tokenFile: tokenFile, + // NOTICE, 如配置文件中"tokenFile"这个key不存在,则TokenFile值为tokenFile常量 + // 如key存在,无论这个值是否为空,则TokenFile值都为该key的值 + TokenFile: tokenFile, } } @@ -37,7 +48,7 @@ func (c *Config) toRestConfig() *rest.Config { cfg := &rest.Config{ Host: c.Addr, BearerToken: c.Token, - BearerTokenFile: c.tokenFile, + BearerTokenFile: c.TokenFile, TLSClientConfig: rest.TLSClientConfig{ Insecure: c.TLSClientConfigInsecure, }, diff --git a/examples/kubegrpc/config.toml b/examples/kubegrpc/config.toml index 83b0245..d621daf 100644 --- a/examples/kubegrpc/config.toml +++ b/examples/kubegrpc/config.toml @@ -1,4 +1,15 @@ [k8s] +# k8s API Server 地址 +addr="https://$API_SERVER_ADDR" +# Debug 是否开启debug模式 +debug = true +# Token k8s API Server 请求token +token="$API_SERVER_TOKEN" +# Token k8s API Server 请求token file +# 本地运行时:需要 tokenFile = "" +# 集群模式下运行时:需要 tokenFile = "/var/run/secrets/kubernetes.io/serviceaccount/token" 或释掉 tokenFile 这个 key +tokenFile = "" +# Namespaces 需要进行查询和监听的 Namespace 列表 namespaces=["default"] [grpc.test] diff --git a/examples/kubegrpc/main.go b/examples/kubegrpc/main.go index a30413e..45b94e6 100644 --- a/examples/kubegrpc/main.go +++ b/examples/kubegrpc/main.go @@ -22,9 +22,7 @@ func main() { func invokerGrpc() error { // 构建k8s registry,并注册为grpc resolver - registry.Load("registry").Build( - registry.WithClient(ek8s.Load("k8s").Build()), - ) + registry.DefaultContainer().Build(registry.WithClient(ek8s.Load("k8s").Build())) // 构建gRPC.ClientConn组件 grpcConn := egrpc.Load("grpc.test").Build() // 构建gRPC Client组件 diff --git a/options.go b/options.go index 02017e9..dae9907 100644 --- a/options.go +++ b/options.go @@ -21,6 +21,12 @@ func WithToken(token string) Option { } } +func WithTokenFile(tokenFile string) Option { + return func(c *Container) { + c.config.TokenFile = tokenFile + } +} + func WithNamespaces(namespaces []string) Option { return func(c *Container) { c.config.Namespaces = namespaces