【问题标题】:Get a secret with k8s.io library使用 k8s.io 库获取秘密
【发布时间】:2022-07-27 02:35:37
【问题描述】:

我对 Go 和 Kubernetes 库 k8s.io (https://github.com/kubernetes/client-go) 完全陌生,并试图弄清楚如何获得特定的秘密。

我有一种观察者,可以观察Secrets 的变化。 我正在遍历特定命名空间中的 Secretlist。那行得通,我也可以通过while循环过滤它们。但我不知道如何在不同的命名空间中获取和搜索 Secret,它应该在此循环中可用。

我需要命名空间“my-namespace”中名为 XXX 的秘密 (我知道以下行不存在,它应该只概述我正在寻找的想法)我来自 Ruby,所以我搜索了这样的内容:

var myKubeSecret = kubernetes.V1().Secrets("my-namespace").Find("XXX")

像上面那个函数一样存在吗?

这就是我所拥有的:这会在命名空间“默认”中观察我的所有秘密。哪个有效。该示例取自执行类似我正在搜索的代码的代码,我现在尝试修改。:

import (

    v1 "k8s.io/api/core/v1"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    kubeinformers "k8s.io/client-go/informers"
    "k8s.io/client-go/kubernetes"
    "k8s.io/client-go/tools/cache"
    "k8s.io/client-go/tools/clientcmd"
    "sigs.k8s.io/yaml"
)
// a lot of code
// ....
// ...
// ..
// .

if data, err := ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace"); err == nil {
        fmt.Println("data",data)
    }
    // listen for new secrets
    factory := kubeinformers.NewSharedInformerFactoryWithOptions(clientsetCore, 0, kubeinformers.WithNamespace(namespace()))
    informer := factory.Core().V1().Secrets().Informer()
    secrets := factory.Core().V1().Secrets().Lister()

var myKubeSecret string // will hold my secret

informer.AddEventHandler(cache.ResourceEventHandlerFuncs{
  AddFunc: func(new interface{}) {
    // get the secret
    var cpSecret = new.(*v1.Secret).DeepCopy()
        if mySecret.GetName() == "argocd-credentials" {
                var cpData = *&cpSecret.Data
                for k, v := range cpData {
                    clusterIP = kubeConfig.Clusters[0].Cluster.Server

                    fmt.Println("cpData k:", k, "v:", v)
                    switch k {
                    case "authToken":
                        fmt.Println("authToken:", v)

                    // ### HERE SHOULD BE THE VALUE OF A
                    // ### SECRET NAMED XXX in ns my-namespace 
                    myKubeSecret = // ### should a bearerToken string
                    }
                }
            }
      }
}

我希望你能明白..

如果有的话,请告诉我需要哪个import libray。

【问题讨论】:

    标签: go kubernetes kubernetes-go-client


    【解决方案1】:

    您无法从与您发出请求的名称空间不同的名称空间中读取密钥。

    【讨论】:

      猜你喜欢
      • 2018-04-28
      • 1970-01-01
      • 2021-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2022-08-08
      相关资源
      最近更新 更多