我有一个构建为Docker映像的Java应用程序。
该映像已部署在k8s集群中。
在Java应用程序中,我想连接到api服务器并将某些内容保存在Secrets中。
如何使用k8s Java客户端来做到这一点?
在吊舱内,推荐的连接API的方法是:
- 在pod的sidecar容器中运行kubectl代理,或在容器中作为后台进程运行。这会将Kubernetes API代理到Pod的localhost接口,以便Pod的任何容器中的其他进程都可以访问它。
- 使用Go客户端库,并使用rest.InClusterConfig()和kubernetes.NewForConfig()函数创建一个客户端。他们处理对apiserver的定位和身份验证。
但是我在Java客户端中找不到类似的函数。
答案 0 :(得分:1)
假设您的Pod具有自动挂载的serviceAccount
(除非另行指定,否则默认为默认值),ClientBuilder.cluster()
方法从环境中读取API URL,从中读取群集CA众所周知的位置,以及来自同一位置的ServiceAccount
令牌。
然后,尽管PatchExample
并非完全“创建秘密”,但它执行了一种变异操作,可以概括为“创建或更新秘密”。