为了账号安全,请及时绑定邮箱和手机立即绑定

如何获取集群内 go Kubernetes 客户端的当前命名空间

如何获取集群内 go Kubernetes 客户端的当前命名空间

Go
紫衣仙女 2023-05-08 15:59:42
如何使用 kubernetes client-go API 获取部署/服务的当前名称空间?它似乎不在客户端对象或配置中。
查看完整描述

3 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

使用

ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace")

有效但很丑陋,当所需的实现存在Namespace()inClusterClientConfig. 但是你如何从 开始得到那个对象 rest.InClusterConfig()呢?它只能通过包外部实例化NewNonInteractiveDeferredLoadingClientConfig

我看到kubernetes #63707看起来相关但已被放弃。


查看完整回答
反对 回复 2023-05-08
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

您始终可以为每个命名空间设置上下文,然后从 kubeconfig 中读取您当前所在的上下文:

使用以下代码找出您所在的名称空间:

namespace, _, err := kubeconfig.Namespace()
    if err != nil { 
               panic(err)
    }

这将返回您所在的名称空间。

查看完整回答
反对 回复 2023-05-08
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

在您的部署配置中添加此环境变量。

 - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace

这是使用kubernetes downward api


查看完整回答
反对 回复 2023-05-08
  • 3 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信