
Bibliothèque cliente Java pour l'API Kubernetes, permettant la gestion programmatique des clusters, pods, déploiements et autres ressources avec prise en charge de l'authentification, du watch, de l'exécution et des opérations de redirection de port.
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 | + | + | + | + | + | ✓ |