
Java-Client für die kubernetes-API.
Der Java-Client verwendet Semantic Versioning. Wir erhöhen die Hauptversionsnummer immer dann, wenn wir den Client für eine neue Kubernetes-Release-Version neu generieren (siehe Tabelle unten). Dabei werden neue APIs hinzugefügt und es kann möglicherweise zu Breaking Changes in den generierten Kubernetes-API- Stubs kommen. Wenn Sie eine Hauptversion aktualisieren, seien Sie auf mögliche Breaking Changes vorbereitet.
Um die Java-Client-Bibliothek in Ihrem lokalen Maven-Repository zu installieren, führen Sie einfach Folgendes aus:
git clone --recursive https://github.com/kubernetes-client/java
cd java
mvn install
Weitere Informationen finden Sie in der offiziellen Dokumentation.
Fügen Sie diese Abhängigkeit zur POM-Datei Ihres Projekts hinzu:
<dependency>
<groupId>io.kubernetes</groupId>
<artifactId>client-java</artifactId>
<version>8.0.2</version>
</dependency>
compile 'io.kubernetes:client-java:8.0.2'
Erzeugen Sie zunächst das JAR, indem Sie Folgendes ausführen:
git clone --recursive https://github.com/kubernetes-client/java
cd java/kubernetes
mvn package
Installieren Sie dann manuell die folgenden JARs:
Wir haben einige Beispiele für häufige Anwendungsfälle vorbereitet, die unten aufgeführt sind:
kubectl patch.kubectl get <resource> -w.alle Pods auflisten:
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());
}
}
}
Namespace-Objekt überwachen:
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());
}
}
}
Weitere Beispiele finden Sie im Ordner examples. Führen Sie zum Ausführen der Beispiele diesen Befehl aus:
mvn exec:java -Dexec.mainClass="io.kubernetes.client.examples.Example"
Die Dokumentation aller APIs und Modelle finden Sie in der Dokumentation des generierten Clients.
Legende:
✓ Exakt dieselben Funktionen / API-Objekte sowohl im Java-Client als auch in der Kubernetes-Version.+ Der Java-Client verfügt über Funktionen oder API-Objekte, die im Kubernetes-Cluster möglicherweise nicht vorhanden sind, aber alles, was sie gemeinsam haben, funktioniert.- Der Kubernetes-Cluster verfügt über Funktionen, die die Java-Client-Bibliothek nicht nutzen kann (zusätzliche API-Objekte usw.).Eine detaillierte Beschreibung der Änderungen zwischen den Java-Client-Versionen finden Sie im CHANGELOG.
Anweisungen zum Mitwirken finden Sie in CONTRIBUTING.md.
Die Teilnahme an der Kubernetes-Community unterliegt dem CNCF-Verhaltenskodex.
Der Code wird vom openapi-generator-Projekt generiert.
Wir haben universelle sprachübergreifende Tools zur Codegenerierung entwickelt; sie sind im Repository kubernetes-client/gen gehostet.
Um zu beginnen, wählen Sie ein Wurzelverzeichnis, das nicht Ihr java-Client-Verzeichnis ist. Ihre
Verzeichnisstruktur könnte zum Beispiel so aussehen:
${HOME}/
src/
gen/
java/
...
Um das gen-Repository zu klonen, führen Sie dann Folgendes aus:
cd ${HOME}/src
git clone https://github.com/kubernetes-client/gen
export GEN_ROOT=${PWD}
Um den Client anschließend zu aktualisieren:
cd ${HOME}/src/java
${GEN_ROOT}/gen/openapi/java.sh kubernetes ./settings
Dies sollte einen etwas längeren Build-Prozess mit docker durchlaufen und schließlich zu einem neuen Satz
generierten Codes im Verzeichnis kubernetes führen.
kubectl logs.kubectl exec.kubectl port-forward.kubectl attach.kubectl cp.client-java-extended)
| Client-Version | 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 | + | + | + | + | + | ✓ |