
Client Java per l'API di kubernetes.
Il client Java utilizza il Semantic Versioning. Incrementiamo il numero di versione major ogni volta che rigeneriamo il client per una nuova versione di Kubernetes (vedi la tabella sotto). Ogni volta che lo facciamo, vengono aggiunte nuove API e possibilmente modifiche sostanziali (breaking changes) negli stub dell'API Kubernetes generati. Ogni volta che si aggiorna una versione major, bisogna essere preparati a potenziali modifiche sostanziali.
Per installare la libreria del client Java nel tuo repository Maven locale, esegui semplicemente:
git clone --recursive https://github.com/kubernetes-client/java
cd java
mvn install
Fai riferimento alla documentazione ufficiale per maggiori informazioni.
Aggiungi questa dipendenza al POM del tuo progetto:
<dependency>
<groupId>io.kubernetes</groupId>
<artifactId>client-java</artifactId>
<version>8.0.2</version>
</dependency>
compile 'io.kubernetes:client-java:8.0.2'
Per prima cosa genera il JAR eseguendo:
git clone --recursive https://github.com/kubernetes-client/java
cd java/kubernetes
mvn package
Quindi installa manualmente i seguenti JAR:
Abbiamo preparato alcuni esempi per i casi d'uso comuni, mostrati di seguito:
kubectl patch.kubectl get <resource> -w.elenca tutti i pod:
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());
}
}
}
osserva (watch) l'oggetto 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());
}
}
}
Altri esempi si trovano nella cartella examples. Per eseguire gli esempi, esegui questo comando:
mvn exec:java -Dexec.mainClass="io.kubernetes.client.examples.Example"
La documentazione di tutte le API e dei Modelli è disponibile nella documentazione del client generato
Legenda:
✓ Stesse caratteristiche / stessi oggetti API sia nel client Java che nella versione di Kubernetes.+ Il client Java ha caratteristiche o oggetti API che potrebbero non essere presenti nel cluster Kubernetes, ma tutto ciò che hanno in comune funzionerà.- Il cluster Kubernetes ha caratteristiche che la libreria del client Java non può utilizzare (oggetti API aggiuntivi, ecc.).Consulta il CHANGELOG per una descrizione dettagliata delle modifiche tra le versioni del client Java.
Consulta CONTRIBUTING.md per le istruzioni su come contribuire.
La partecipazione alla community di Kubernetes è regolata dal Codice di condotta CNCF.
Il codice è generato dal progetto openapi-generator.
Abbiamo creato strumenti general-purpose cross-language per la generazione di codice, ospitati nel repository kubernetes-client/gen.
Per iniziare, in una directory radice che non sia la tua directory del client java, ad esempio la struttura delle tue directory potrebbe essere:
${HOME}/
src/
gen/
java/
...
Quindi, per clonare il repository gen, esegui:
cd ${HOME}/src
git clone https://github.com/kubernetes-client/gen
export GEN_ROOT=${PWD}
Quindi, per aggiornare il client:
cd ${HOME}/src/java
${GEN_ROOT}/gen/openapi/java.sh kubernetes ./settings
Questo dovrebbe avviare un processo di build piuttosto lungo che coinvolge docker e alla fine produrrà un nuovo set di codice generato nella directory kubernetes.
kubectl logskubectl exec.kubectl port-forward.kubectl attach.kubectl cp.client-java-extended)
| versione 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 | + | + | + | + | + | ✓ |