
Client Java pour l'API kubernetes.
Le client Java utilise le Semantic Versioning. Nous incrémentons le numéro de version majeure à chaque fois que nous régénérons le client pour une nouvelle version de Kubernetes (voir le tableau ci-dessous). À chaque fois, de nouvelles API sont ajoutées et des changements potentiellement cassants peuvent survenir dans les stubs d'API Kubernetes générés. Lorsque vous passez à une version majeure supérieure, soyez prêt à faire face à d'éventuelles ruptures de compatibilité.
Pour installer la bibliothèque du client Java dans votre dépôt Maven local, exécutez simplement :
git clone --recursive https://github.com/kubernetes-client/java
cd java
mvn install
Reportez-vous à la documentation officielle pour plus d'informations.
Ajoutez cette dépendance au POM de votre projet :
<dependency>
<groupId>io.kubernetes</groupId>
<artifactId>client-java</artifactId>
<version>8.0.2</version>
</dependency>
compile 'io.kubernetes:client-java:8.0.2'
Commencez par générer le JAR en exécutant :
git clone --recursive https://github.com/kubernetes-client/java
cd java/kubernetes
mvn package
Installez ensuite manuellement les JAR suivants :
Nous avons préparé quelques exemples pour des cas d'utilisation courants, présentés ci-dessous :
kubectl patch.kubectl get <resource> -w.lister tous les 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());
}
}
}
surveiller l'objet 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());
}
}
}
Vous trouverez plus d'exemples dans le dossier examples. Pour exécuter les exemples, lancez cette commande :
mvn exec:java -Dexec.mainClass="io.kubernetes.client.examples.Example"
Toute la documentation des API et des modèles se trouve dans la documentation du client généré
Légende :
✓ Exactement les mêmes fonctionnalités / objets API dans java-client et la version de Kubernetes.+ java-client possède des fonctionnalités ou des objets API qui peuvent ne pas être présents dans le cluster Kubernetes, mais tout ce qu'ils ont en commun fonctionnera.- Le cluster Kubernetes possède des fonctionnalités que la bibliothèque java-client ne peut pas utiliser (objets API supplémentaires, etc.).Voir le CHANGELOG pour une description détaillée des changements entre les versions de java-client.
Veuillez consulter CONTRIBUTING.md pour savoir comment contribuer.
La participation à la communauté Kubernetes est régie par le Code de conduite de la CNCF.
Le code est généré par le projet openapi-generator.
Nous avons développé des outils génériques multi-langages pour la génération de code ; ils sont hébergés dans le dépôt kubernetes-client/gen.
Pour commencer, placez-vous dans un répertoire racine qui n'est pas votre répertoire client java ; par exemple, votre arborescence pourrait être :
${HOME}/
src/
gen/
java/
...
Ensuite, pour cloner le dépôt gen, exécutez :
cd ${HOME}/src
git clone https://github.com/kubernetes-client/gen
export GEN_ROOT=${PWD}
Puis, pour mettre à jour le client :
cd ${HOME}/src/java
${GEN_ROOT}/gen/openapi/java.sh kubernetes ./settings
Ce processus lance une construction assez longue impliquant docker et aboutit finalement à un nouvel ensemble de code généré dans le répertoire kubernetes.
kubectl logs.kubectl exec.kubectl port-forward.kubectl attach.kubectl cp.client-java-extended)
| version du client | 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 | + | + | + | + | + | ✓ |