
Cliente Java para la API de kubernetes.
El cliente Java utiliza Versionado Semántico. Incrementamos el número de versión principal cada vez que regeneramos el cliente para una nueva versión de Kubernetes (consulta la tabla a continuación). Cada vez que hacemos esto, se añaden nuevas APIs y posiblemente cambios importantes en los Stubs de la API de Kubernetes generados. Siempre que actualices una versión principal, prepárate para posibles cambios importantes.
Para instalar la biblioteca del cliente Java en tu repositorio local de Maven, simplemente ejecuta:
git clone --recursive https://github.com/kubernetes-client/java
cd java
mvn install
Consulta la documentación oficial para obtener más información.
Añade esta dependencia al POM de tu proyecto:
<dependency>
<groupId>io.kubernetes</groupId>
<artifactId>client-java</artifactId>
<version>8.0.2</version>
</dependency>
compile 'io.kubernetes:client-java:8.0.2'
Primero genera el JAR ejecutando:
git clone --recursive https://github.com/kubernetes-client/java
cd java/kubernetes
mvn package
Luego instala manualmente los siguientes JARs:
Hemos preparado algunos ejemplos para casos de uso comunes que se muestran a continuación:
kubectl patch.kubectl get <resource> -w.listar todos los pods:
import io.kubernetes.client.openapi.ApiClient;
import io.kubernetes.client.openapi.ApiException;
import io.kubernetes.client.openapi.Configuration;
import io.kubernetes.client.openapi.apis.CoreV1Api;
import io.kubernetes.client.openapi.models.V1Pod;
import io.kubernetes.client.openapi.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());
}
}
}
watch sobre el objeto namespace:
import com.google.gson.reflect.TypeToken;
import io.kubernetes.client.openapi.ApiClient;
import io.kubernetes.client.openapi.ApiException;
import io.kubernetes.client.openapi.Configuration;
import io.kubernetes.client.openapi.apis.CoreV1Api;
import io.kubernetes.client.openapi.models.V1Namespace;
import io.kubernetes.client.util.Config;
import io.kubernetes.client.util.Watch;
import java.io.IOException;
public class WatchExample {
public static void main(String[] args) throws IOException, ApiException{
ApiClient client = Config.defaultClient();
Configuration.setDefaultApiClient(client);
CoreV1Api api = new CoreV1Api();
Watch<V1Namespace> watch = Watch.createWatch(
client,
api.listNamespaceCall(null, null, null, null, null, 5, null, null, Boolean.TRUE, null, null),
new TypeToken<Watch.Response<V1Namespace>>(){}.getType());
for (Watch.Response<V1Namespace> item : watch) {
System.out.printf("%s : %s%n", item.type, item.object.getMetadata().getName());
}
}
}
Puedes encontrar más ejemplos en la carpeta examples. Para ejecutar los ejemplos, ejecuta este comando:
mvn exec:java -Dexec.mainClass="io.kubernetes.client.examples.Example"
Toda la documentación de las APIs y los Modelos se puede encontrar en la documentación del cliente generado
Leyenda:
✓ Exactamente las mismas características / objetos de API tanto en java-client como en la versión de Kubernetes.+ java-client tiene características u objetos de API que pueden no estar presentes en el clúster de Kubernetes, pero todo lo que tienen en común funcionará.- El clúster de Kubernetes tiene características que la biblioteca java-client no puede utilizar (objetos de API adicionales, etc.).Consulta el CHANGELOG para obtener una descripción detallada de los cambios entre las versiones de java-client.
Consulta CONTRIBUTING.md para obtener instrucciones sobre cómo contribuir.
La participación en la comunidad de Kubernetes se rige por el Código de Conducta de la CNCF.
El código es generado por el proyecto openapi-generator.
Hemos creado herramientas multiplataforma de propósito general para generar código, se alojan en el repositorio kubernetes-client/gen.
Para empezar, en un directorio raíz que no sea tu directorio de cliente java, por ejemplo, la estructura de tu directorio podría ser:
${HOME}/
src/
gen/
java/
...
Luego, para clonar el repositorio gen, ejecutarías:
cd ${HOME}/src
git clone https://github.com/kubernetes-client/gen
export GEN_ROOT=${PWD}
Luego, para actualizar el cliente:
cd ${HOME}/src/java
${GEN_ROOT}/gen/openapi/java.sh kubernetes ./settings
Esto debería pasar por un proceso de compilación algo largo que involucra docker y, finalmente, resultará en un nuevo conjunto de código generado en el directorio kubernetes.
kubectl logskubectl exec.kubectl port-forward.kubectl attach.kubectl cp.client-java-extended)
| versión del cliente | 1.11 | 1.12 | 1.13 | 1.14 | 1.15 | 1.16 |
|---|
| 3.0.0 | ✓ | - | - | - | - | - |
| 4.0.0 | + | ✓ | - | - | - | - |
| 5.0.0 | + | + | ✓ | - | - | - |
| 6.0.1 | + | + | + | ✓ | - | - |
| 7.0.0 | + | + | + | + | ✓ | ✓ |
| 8.0.2 | + | + | + | + | + | ✓ |