- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有什么方法可以将 kubeconfig 的 bytearray
传递给 k8s 客户端的 &genericclioptions
吗?
https://pkg.go.dev/k8s.io/cli-runtime/pkg/genericclioptions
目前,genericclioptionsits
默认情况下从文件的 env/path 获取它,但我需要将其显式传递为 bytearray
作为参数,而不是引用文件或环境,有办法做到吗?
我尝试了以下方法,但不起作用:
package main
import (
"bytes"
"github.com/spf13/pflag"
"k8s.io/cli-runtime/pkg/genericclioptions"
)
func main() {
kubeconfigData := []byte("my_kubeconfig")
// create a new flag set and bind the kubeconfig flag
flags := pflag.NewFlagSet("default", pflag.ExitOnError)
kubeconfigFlag := flags.String("kubeconfig", "", "absolute path to the kubeconfig file")
flags.Parse([]string{})
// set the kubeconfig flag to the data in the byte array
*kubeconfigFlag = "-"
configOverrides := &genericclioptions.ConfigOverrides{ClusterDefaults: genericclioptions.NewClusterDefaults()}
configLoader := genericclioptions.NewConfigFlags(false).WithOverrideFlags(configOverrides)
configLoader.KubeConfig = bytes.NewBuffer(kubeconfigData)
// ...
}
有什么想法吗?
第二个TRY我还尝试了以下版本,但出现错误:加载配置文件时出错,有什么想法吗?
func main() {
// read the kubeconfig file into a byte array
kubeconfig, err := ioutil.ReadFile("./kubeconfig--pln.yaml")
if err != nil {
panic(err)
}
// create a ConfigFlags object with the kubeconfig byte array
flags := genericclioptions.NewConfigFlags(false)
*flags.KubeConfig = string(kubeconfig)
dc, err := flags.ToDiscoveryClient()
if err != nil {
fmt.Println(err)
}
fmt.Println(dc)
res, err := dc.ServerPreferredNamespacedResources()
if err != nil {
fmt.Println(res)
}
// use the flags object to create a clientset or other Kubernetes API object
// ...
}
最佳答案
您发布的代码试图将 kubeconfig 标志设置为字符串值“-”而不是字节数组。要将 kubeconfig 作为字节数组传递,您需要将 ConfigLoader 的 KubeConfig 字段设置为从字节数组创建的 bytes.Buffer。
这是代码的更新版本:
package main
import (
"bytes"
"github.com/spf13/pflag"
"k8s.io/cli-runtime/pkg/genericclioptions"
)
func main() {
kubeconfigData := []byte("my_kubeconfig")
configOverrides := &genericclioptions.ConfigOverrides{ClusterDefaults: genericclioptions.NewClusterDefaults()}
configLoader := genericclioptions.NewConfigFlags(false).WithOverrideFlags(configOverrides)
configLoader.KubeConfig = bytes.NewBuffer(kubeconfigData)
// ...
}
关于azure - K8S 提供 kubeconfig 作为字节数组 genericclioptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75684722/
有什么方法可以将 kubeconfig 的 bytearray 传递给 k8s 客户端的 &genericclioptions 吗? https://pkg.go.dev/k8s.io/cli-run
有什么方法可以将 kubeconfig 的 bytearray 传递给 k8s 客户端的 &genericclioptions 吗? https://pkg.go.dev/k8s.io/cli-run
我是一名优秀的程序员,十分优秀!