语境

我有一个构建为Docker映像的Java应用程序。

该映像已部署在k8s集群中。

在Java应用程序中,我想连接到api服务器并将某些内容保存在Secrets中。

如何使用K8S Java客户端做到这一点?

当前尝试

k8s official document说:


  在Pod内,推荐的连接API的方法是:
  
  
  在pod的sidecar容器中运行kubectl代理,或在容器中作为后台进程运行。这会将Kubernetes API代理到Pod的localhost接口,以便Pod的任何容器中的其他进程都可以访问它。
  使用Go客户端库,并使用rest.InClusterConfig()和kubernetes.NewForConfig()函数创建客户端。它们处理对apiserver的定位和身份验证。
  


但是我找不到类似的功能,也没有在Java客户端中找到类似的例子。

最佳答案

假设您的Pod具有自动安装的serviceAccount-除非您另外指定,否则默认为默认值-ClientBuilder.cluster()方法从环境读取API URL,从已知位置读取群集CA,类似地来自同一位置的ServiceAccount令牌。

然后,虽然不完全“创建秘密”,但此PatchExample执行了一种变异操作,可以将其概括为“创建或更新秘密”。

07-25 23:22