Как подключиться к существующему серверу kubernetes и перечислить все модули, используя java? - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь подключиться к существующему kubernetes, работающему на AWS, и выполнить произвольные команды на нем, используя Java. В частности, мы используем fabric8 (хотя я открыт для другого API, если вы можете предоставить достаточный ответ, используя один). Причина, по которой я должен сделать это в Java, заключается в том, что мы планируем в конечном итоге включить это в наши существующие тесты Junit Live.

Сейчас мне просто нужен пример того, как подключиться к серверу и получить все имена модулей в виде массива строк. Может кто-нибудь показать мне простой, краткий пример того, как это сделать.

т.е. Мне нужен эквивалент этого скрипта bash с использованием API Java (снова желательно с использованием Fabric8, но я приму другой API, если вы его знаете)

#!bin/bash
kops export kubecfg --name $CLUSTER --state=s3://$STATESTORE

kubectl get pod -o=custom-colums=NAME:.metadata.name -n=$NAMESPACE

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Вот клиент fabric8 kubernetes для kubernetes:

https://github.com/fabric8io/kubernetes-client/

Имеется свободный DSL для работы с ресурсами kubernetes / Openshift. Он также получил поддержку нумерации страниц. Если вы хотите перечислить ресурсы в определенном пространстве имен, вы можете использовать параметр inNamespace("your namespace") в dsl.

String master = "https://192.168.42.20:8443/";

Config config = new ConfigBuilder().withMasterUrl(master).build();
try (final KubernetesClient client = new DefaultKubernetesClient(config)) {
  // Simple Listing:
  PodList simplePodList = client.pods().inAnyNamespace().list();      

  // List with limit and continue options:
  PodList podList = client.pods().inAnyNamespace().list(5, null);
  podList.getItems().forEach((obj) -> { System.out.println(obj.getMetadata().getName()); });

  podList = client.pods().inAnyNamespace().list(5, podList.getMetadata().getContinue());
  podList.getItems().forEach((obj) -> { System.out.println(obj.getMetadata().getName()); });

} catch (KubernetesClientException e) {
  logger.error(e.getMessage(), e);
}
0 голосов
/ 10 января 2019

Вот официальный Java-клиент для Kubernetes.

https://github.com/kubernetes-client/java

Это дает вам чистый интерфейс и писать код в Java для выполнения против kubernetes.

Как указано на странице документации для перечисления всех модулей,

import io.kubernetes.client.ApiClient;
import io.kubernetes.client.ApiException;
import io.kubernetes.client.Configuration;
import io.kubernetes.client.apis.CoreV1Api;
import io.kubernetes.client.models.V1Pod;
import io.kubernetes.client.models.V1PodList;
import io.kubernetes.client.util.Config;

import java.io.IOException;

public class Example {
    public static void main(String[] args) throws IOException, ApiException{
        ApiClient client = Config.defaultClient();
        Configuration.setDefaultApiClient(client);

        CoreV1Api api = new CoreV1Api();
        V1PodList list = api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null);
        for (V1Pod item : list.getItems()) {
            System.out.println(item.getMetadata().getName());
        }
    }
}

Надеюсь, это поможет.

...