У меня есть приложение Java, развернутое в кластере Google Kubernetes Engine. Как я могу заставить это приложение программно применять 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]