语境
我有一个构建为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
执行了一种变异操作,可以将其概括为“创建或更新秘密”。