
عميل جافا لواجهة برمجة تطبيقات kubernetes.
يستخدم عميل جافا نظام الإصدارات الدلالية (Semantic Versioning). نقوم بزيادة رقم الإصدار الرئيسي كلما أعدنا توليد العميل لإصدار جديد من Kubernetes (انظر الجدول أدناه). وفي كل مرة نفعل ذلك، تُضاف واجهات برمجة تطبيقات جديدة وربما تغييرات جذرية في Stubs الخاصة بواجهة برمجة تطبيقات Kubernetes المولّدة. وكلما قمت بترقية إصدار رئيسي، كن مستعدًا لتغييرات جذرية محتملة.
لتثبيت مكتبة عميل جافا في مستودع Maven المحلي لديك، نفّذ فقط:
git clone --recursive https://github.com/kubernetes-client/java
cd java
mvn install
راجع التوثيق الرسمي لمزيد من المعلومات.
أضف هذا الاعتماد إلى ملف POM الخاص بمشروعك:
<dependency>
<groupId>io.kubernetes</groupId>
<artifactId>client-java</artifactId>
<version>8.0.2</version>
</dependency>
compile 'io.kubernetes:client-java:8.0.2'
أولًا، قم بتوليد ملف JAR بتنفيذ:
git clone --recursive https://github.com/kubernetes-client/java
cd java/kubernetes
mvn package
ثم قم بتثبيت ملفات JAR التالية يدويًا:
لقد أعددنا بعض الأمثلة لحالات الاستخدام الشائعة وهي موضحة أدناه:
kubectl patch.kubectl get <resource> -w.سرد جميع الـ 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());
}
}
}
مراقبة كائن 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());
}
}
}
يمكن العثور على المزيد من الأمثلة في مجلد examples. لتشغيل الأمثلة، نفّذ هذا الأمر:
mvn exec:java -Dexec.mainClass="io.kubernetes.client.examples.Example"
يمكن العثور على توثيق جميع واجهات برمجة التطبيقات والنماذج في توثيق العميل المولّد
المفتاح:
✓ نفس الميزات / كائنات واجهة برمجة التطبيقات تمامًا في كل من java-client وإصدار Kubernetes.+ يمتلك java-client ميزات أو كائنات واجهة برمجة تطبيقات قد لا تكون موجودة في عنقود Kubernetes، لكن كل ما تشترك فيه سيعمل.- يحتوي عنقود Kubernetes على ميزات لا يمكن لمكتبة java-client استخدامها (كائنات إضافية لواجهة برمجة التطبيقات، إلخ).راجع CHANGELOG للحصول على وصف تفصيلي للتغييرات بين إصدارات java-client.
يرجى الاطلاع على CONTRIBUTING.md للحصول على إرشادات حول كيفية المساهمة.
تخضع المشاركة في مجتمع Kubernetes لـ مدونة قواعد سلوك CNCF.
يتم توليد الكود بواسطة مشروع openapi-generator.
لقد بنينا أدوات عامة متعددة اللغات لتوليد الكود، وهي مستضافة في مستودع kubernetes-client/gen.
للبدء، في دليل جذر ليس دليل عميل java الخاص بك، على سبيل المثال يمكن أن يكون تخطيط الدليل لديك كما يلي:
${HOME}/
src/
gen/
java/
...
ثم لاستنساخ مستودع gen، عليك تشغيل:
cd ${HOME}/src
git clone https://github.com/kubernetes-client/gen
export GEN_ROOT=${PWD}
ثم لتحديث العميل:
cd ${HOME}/src/java
${GEN_ROOT}/gen/openapi/java.sh kubernetes ./settings
يجب أن يمر هذا بعملية بناء طويلة نسبيًا تتضمن docker وينتج في النهاية مجموعة جديدة من الكود المولّد في دليل kubernetes.
kubectl logskubectl exec.kubectl port-forward.kubectl attach.kubectl cp.client-java-extended)
| إصدار العميل | 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 | + | + | + | + | + | ✓ |