Как развернуть приложение с помощью Kubernetes Azure и AWS SDK для Java

public void runKubernetes() {
    KubernetesCluster k8sCluster = this.getKubernetesCluster("xyz-aks");
    System.out.println("___________________________________________");
    System.out.println("Kubernetes Cluster String: " + k8sCluster.name());

    DefaultKubernetesClient kubeclient = new DefaultKubernetesClient();
    System.out.println("Kube client Master URL :"+kubeclient.getMasterUrl());

    NodeList kubenodes = kubeclient.nodes().list();
    for (Node node : kubenodes.getItems()) {
        System.out.println( node.getKind() + " => " + node.getMetadata().getName() +": " + node.getMetadata().getClusterName());
    }
}

Я получаю клиент и узлы. Теперь у меня есть файл yaml, и я хочу развернуть этот yaml (создать сервис, развертывание и модули) программно.

я могу сделать следующее

kubectl create -f pod-sample.yaml 

но я хочу сделать то же самое, используя JAVA SDK.

Я использую следующие java-библиотеки для kubernetes:

io.fabric8.kubernetes

person shraddha    schedule 04.10.2018    source источник


Ответы (1)


Я считаю, что вы можете проанализировать YAML или JSON определения развертывания. Например, для YAML можно использовать любую из библиотек Java здесь

  • JvYaml # Java-порт RbYaml
  • SnakeYAML # Java 5 / YAML 1.1
  • YamlBeans # В/из JavaBeans
  • JYaml # Исходная реализация Java
  • верблюд # YAML 1.2 для Java. Удобная библиотека ООП.

Jackson кажется более популярным для JSON, который также поддерживает расширение YAML.

Затем, как только вы проанализируете имя, например, для создания службы:

Service myservice = client.services().inNamespace(parsedNamespaceStr).createNew()
                     .withNewMetadata()
                       .withName(parsedServiceName)
                       .addToLabels(parsedLabel1, parseLabel2)
                     .endMetadata()
                     .done();
person Rico    schedule 04.10.2018
comment
Привет Рико, Это создание службы работает отлично. Но когда я пытаюсь создать развертывание перед сервисом, он создается программно, но я не вижу в kubectl get развертывания. Вы знаете, успешно ли он создается или нет? Как мне это отладить? - person shraddha; 10.10.2018
comment
код, который я использую: Deployment createdDeployment = builderDeployment .withKind("Deployment") .withNewMetadata().withName("server-proxy").endMetadata() .withNewSpec() .withNewTemplate() .withNewSpec() .addNewContainer().withImage(<public docker repo:image>) .addNewPort().withContainerPort(5000).endPort() .endContainer() .endSpec() .endTemplate() .endSpec() .build(); System.out.println("Deployment: " + createdDeployment.toString()); - person shraddha; 10.10.2018
comment
Возможно, он создается на другом namespace. Вы можете проверить kubectl get deployments --all-namespaces? - person Rico; 10.10.2018
comment
Я проверил, я не вижу никакого развертывания с именем server-proxy - person shraddha; 10.10.2018
comment
Я не понимаю, как тогда ваш призыв удался бы. У вас есть журналы клиентов? следы сети? Можете посмотреть журналы kube-apiserver в своем кластере? - person Rico; 10.10.2018
comment
Как связать DeploymentBuilder с kubernetesClient? Это правильный вопрос? - person shraddha; 11.10.2018