java - 在 GKE 集群中运行的 Java 应用程序如何以编程方式应用 yaml 文件?
问题描述
我在 Google Kubernetes Engine 集群上部署了一个 Java 应用程序。如何让这个应用程序以编程方式应用 yaml?相当于
kubectl apply -f deployment.yaml
我遇到了这个客户端库,但找不到显示如何实现它的文档的一部分。https://github.com/googleapis/google-api-java-client-services/tree/master/clients/google-api-services-container/v1
编辑:
感谢纪尧姆和米奇的指点。我尝试了Kubernetes Java 客户端库,但得到了“禁止”。请参阅下面的代码和响应:
@RequestMapping(value = "/list-pods", method = GET, produces = TEXT_PLAIN_VALUE)
public String listPods() throws Exception {
KubeConfig.registerAuthenticator(new GCPAuthenticator());
final CoreV1Api api = new CoreV1Api(Config.defaultClient());
V1PodList list = api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null);
StringBuilder builder = new StringBuilder("Pods: \n\n");
for (V1Pod item : list.getItems()) builder.append(item.getMetadata().getName());
return builder.toString();
}
这是引发的异常:
2020-04-10 07:52:46.655 ERROR 1 --- [nio-8080-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is io.kubernetes.client.ApiException: Forbidden] with root cause
io.kubernetes.client.ApiException: Forbidden
at io.kubernetes.client.ApiClient.handleResponse(ApiClient.java:886) ~[client-java-5.0.0.jar!/:na]
at io.kubernetes.client.ApiClient.execute(ApiClient.java:802) ~[client-java-5.0.0.jar!/:na]
at io.kubernetes.client.apis.CoreV1Api.listPodForAllNamespacesWithHttpInfo(CoreV1Api.java:18720) ~[client-java-api-5.0.0.jar!/:na]
at io.kubernetes.client.apis.CoreV1Api.listPodForAllNamespaces(CoreV1Api.java:18698) ~[client-java-api-5.0.0.jar!/:na]
at com.ngserve.clapps.ws.WS.listPods(WS.java:53) ~[classes!/:0.0.1-SNAPSHOT]
解决方案
我终于通过按照 FL3SH 的建议配置必要的 rbac 来让它工作。https://kubernetes.io/docs/reference/access-authn-authz/rbac/
推荐阅读
- linux - 程序集 x64 getcwd() 未输出
- authentication - 如何使用 Lumen 对微服务架构中的用户进行身份验证
- python - 一次性任意数量的不同groupby级别
- node.js - axios.post() 和 fs.readFile()/fs.writeFile()
- airflow-scheduler - 气流:将 {{ params.hotel_ids }} 作为参数传递给 PostgresOperator
- python - 在时钟上每 5 分钟运行一次 python 脚本
- sql - 如何查看 SQL Server 2000 中的排序规则设置?
- asp.net-core - ASP.Net core 3.0(3.1)为单页应用设置PathBase
- c# - 查找常规事件的下一个日期时间
- python-3.x - 根据其中一个列表从两个列表中删除一些相同索引的元素