
Kubernetes API के लिए Java क्लाइंट लाइब्रेरी, जो क्लस्टर, पॉड्स, डिप्लॉयमेंट्स और अन्य संसाधनों के प्रोग्रामेटिक प्रबंधन को सक्षम बनाती है, जिसमें प्रमाणीकरण, वॉच, एक्सेक और पोर्ट-फ़ॉरवर्ड संचालन के लिए समर्थन है।
कुबर्नेटीज़ API के लिए जावा क्लाइंट।
जावा क्लाइंट सिमैंटिक वर्जनिंग का उपयोग करता है। जब भी हम किसी नए कुबर्नेटीज़ रिलीज़ संस्करण के लिए क्लाइंट को पुनर्जीवित करते हैं, तो हम प्रमुख संस्करण संख्या बढ़ाते हैं (नीचे तालिका देखें)। जब भी हम ऐसा करते हैं तो नए APIs जोड़े जाते हैं और जनरेटेड कुबर्नेटीज़ API स्टब्स में संभावित ब्रेकिंग परिवर्तन हो सकते हैं। जब भी आप प्रमुख संस्करण को अपग्रेड करते हैं, तो संभावित ब्रेकिंग परिवर्तनों के लिए तैयार रहें।
जावा क्लाइंट लाइब्रेरी को अपने स्थानीय 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
फिर निम्नलिखित JARs को मैन्युअल रूप से स्थापित करें:
हमने सामान्य उपयोग-मामलों के लिए कुछ उदाहरण तैयार किए हैं जो नीचे दिखाए गए हैं:
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 ऑब्जेक्ट पर watch करें:
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"
सभी APIs और मॉडल्स का दस्तावेज़ीकरण Generated client's docs पर पाया जा सकता है।
कुंजी:
✓ java-client और Kubernetes संस्करण दोनों में बिल्कुल समान सुविधाएँ / API ऑब्जेक्ट।+ java-client में ऐसी सुविधाएँ या API ऑब्जेक्ट हो सकते हैं जो Kubernetes क्लस्टर में मौजूद नहीं हैं, लेकिन जो समान हैं वे काम करेंगे।- Kubernetes क्लस्टर में ऐसी सुविधाएँ हैं जिनका उपयोग java-client लाइब्रेरी नहीं कर सकती (अतिरिक्त API ऑब्जेक्ट, आदि)।java-client संस्करणों के बीच बदलावों के विस्तृत विवरण के लिए CHANGELOG देखें।
कृपया योगदान कैसे करें, इसके निर्देशों के लिए CONTRIBUTING.md देखें।
Kubernetes समुदाय में भागीदारी CNCF आचार संहिता द्वारा शासित है।
कोड openapi-generator project द्वारा जनरेट किया जाता है।
हमने कोड जनरेट करने के लिए सामान्य प्रयोजन क्रॉस-लैंग्वेज टूल बनाए हैं, यह 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 मॉड्यूल आवश्यक है)
| 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 | + | + | + | + | + | ✓ |