
यह क्लाइंट एक fluent DSL के माध्यम से संपूर्ण Kubernetes और OpenShift REST APIs तक पहुँच प्रदान करता है।
क्लाइंट बनाने का सबसे आसान तरीका है:```java KubernetesClient client = new DefaultKubernetesClient();
`DefaultOpenShiftClient` `KubernetesClient` और `OpenShiftClient` दोनों इंटरफ़ेस को लागू करता है, इसलिए यदि आपको
OpenShift एक्सटेंशन की आवश्यकता है, जैसे `Build`s, आदि, तो बस यह करें:```java
OpenShiftClient osClient = new DefaultOpenShiftClient();
यह निम्न प्राथमिकता क्रम में विभिन्न स्रोतों से सेटिंग्स का उपयोग करेगा:
सिस्टम प्रॉपर्टी को पर्यावरण चरों पर प्राथमिकता दी जाती है। निम्नलिखित सिस्टम प्रॉपर्टी और पर्यावरण चर कॉन्फ़िगरेशन के लिए उपयोग किए जा सकते हैं:
वैकल्पिक रूप से आप Kubernetes क्लाइंट के लिए कॉन्फ़िग ऑब्जेक्ट बनाने हेतु ConfigBuilder का उपयोग कर सकते हैं:```java
Config config = new ConfigBuilder().withMasterUrl("https://mymaster.com").build();
KubernetesClient client = new DefaultKubernetesClient(config);
सभी संसाधनों के लिए DSL का उपयोग समान है।
संसाधन सूचीबद्ध करें:```java
NamespaceList myNs = client.namespaces().list();
ServiceList myServices = client.services().list();
ServiceList myNsServices = client.services().inNamespace("default").list();
संसाधन प्राप्त करें:```java Namespace myns = client.namespaces().withName("myns").get();
Service myservice = client.services().inNamespace("default").withName("myservice").get();
हटाएं:```java
Namespace myns = client.namespaces().withName("myns").delete();
Service myservice = client.services().inNamespace("default").withName("myservice").delete();
संसाधनों का संपादन Kubernetes Model के इनलाइन बिल्डरों का उपयोग करता है:```java Namespace myns = client.namespaces().withName("myns").edit(n -> new NamespaceBuilder(n) .editMetadata() .addToLabels("a", "label") .endMetadata() .build());
Service myservice = client.services().inNamespace("default").withName("myservice").edit(s -> new ServiceBuilder(s) .editMetadata() .addToLabels("another", "label") .endMetadata() .build());
उसी भावना में आप बिल्डरों को इनलाइन कर सकते हैं:```java
Namespace myns = client.namespaces().create(new NamespaceBuilder()
.withNewMetadata()
.withName("myns")
.addToLabels("a", "label")
.endMetadata()
.build());
Service myservice = client.services().inNamespace("default").create(new ServiceBuilder()
.withNewMetadata()
.withName("myservice")
.addToLabels("another", "label")
.endMetadata()
.build());
आप संसाधन का apiVersion भी सेट कर सकते हैं, जैसे SecurityContextConstraints के मामले में :```java SecurityContextConstraints scc = new SecurityContextConstraintsBuilder() .withApiVersion("v1") .withNewMetadata().withName("scc").endMetadata() .withAllowPrivilegedContainer(true) .withNewRunAsUser() .withType("RunAsAny") .endRunAsUser() .build();
### इवेंट्स का अनुसरण
Watcher के लिए T के रूप में `io.fabric8.kubernetes.api.model.Event` का उपयोग करें:```java
client.events().inAnyNamespace().watch(new Watcher<Event>() {
@Override
public void eventReceived(Action action, Event resource) {
System.out.println("event " + action.name() + " " + resource.toString());
}
@Override
public void onClose(KubernetesClientException cause) {
System.out.println("Watcher close due to " + cause);
}
});
kubernetes API daemonSets, jobs, ingresses आदि जैसे कई एक्सटेंशन परिभाषित करता है, जो सभी extensions() DSL में उपयोग किए जा सकते हैं:
उदाहरण के लिए, jobs की सूची देखने के लिए...``` jobs = client.batch().jobs().list();
### बाहरी स्रोतों से संसाधन लोड करना
ऐसे मामले होते हैं जहाँ आप किसी संसाधन को क्लाइंट DSL का उपयोग करके परिभाषित करने के बजाय किसी बाहरी स्रोत से पढ़ना चाहते हैं।
ऐसे मामलों के लिए क्लाइंट आपको संसाधन को निम्न से लोड करने की सुविधा देता है:
- एक फ़ाइल *(java.io.File और java.lang.String दोनों का समर्थन करती है)*
- एक URL
- एक इनपुट स्ट्रीम
संसाधन लोड हो जाने के बाद, आप उसके साथ वैसे ही काम कर सकते हैं, जैसे आपने उसे स्वयं बनाया हो।
उदाहरण के लिए, आइए एक yml फ़ाइल से pod पढ़ें और उसके साथ काम करें:
Pod refreshed = client.load('/path/to/a/pod.yml').fromServer().get();
Boolean deleted = client.load('/workspace/pod.yml').delete();
LogWatch handle = client.load('/workspace/pod.yml').watchLog(System.out);
### क्लाइंट को संसाधन का संदर्भ पास करना
इसी तर्ज पर, आप बाहरी रूप से बनाई गई किसी वस्तु का उपयोग कर सकते हैं (या तो संदर्भ के रूप में या उसके स्ट्रिंग निरूपण का उपयोग करके)।
उदाहरण के लिए:
Pod pod = someThirdPartyCodeThatCreatesAPod();
Boolean deleted = client.resource(pod).delete();
### क्लाइंट को अनुकूलित करना
क्लाइंट प्लग-योग्य एडेप्टर का समर्थन करता है। एक उदाहरण एडेप्टर [OpenShift Adapter](https://github.com/shoucheng3/fabric8io__kubernetes-client_cve-2021-4178_5-0-2/blob/HEAD/openshift-client/src/main/java/io/fabric8/openshift/client/OpenShiftExtensionAdapter.java) है
जो किसी मौजूदा [KubernetesClient](https://github.com/shoucheng3/fabric8io__kubernetes-client_cve-2021-4178_5-0-2/blob/HEAD/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/KubernetesClient.java) इंस्टेंस को [OpenShiftClient](https://github.com/shoucheng3/fabric8io__kubernetes-client_cve-2021-4178_5-0-2/blob/HEAD/openshift-client/src/main/java/io/fabric8/openshift/client/OpenShiftClient.java) इंस्टेंस में अनुकूलित करने की सुविधा देता है।
उदाहरण के लिए:```java
KubernetesClient client = new DefaultKubernetesClient();
OpenShiftClient oClient = client.adapt(OpenShiftClient.class);
क्लाइंट isAdaptable() विधि का भी समर्थन करता है जो जाँचता है कि अनुकूलन संभव है या नहीं और यदि ऐसा है तो true लौटाता है।```java KubernetesClient client = new DefaultKubernetesClient(); if (client.isAdaptable(OpenShiftClient.class)) { OpenShiftClient oClient = client.adapt(OpenShiftClient.class); } else { throw new Exception("Adapting to OpenShiftClient not support. Check if adapter is present, and that env provides /oapi root path."); }
#### अनुकूलन और बंद करना
ध्यान दें कि adapt() का उपयोग करते समय adaptee और target दोनों समान संसाधनों (अंतर्निहित http client, thread pools आदि) को साझा करेंगे।
इसका अर्थ है कि adapt के माध्यम से बनाए गए प्रत्येक instance पर close() का उपयोग करना आवश्यक नहीं है।
adapt() द्वारा प्रबंधित किसी भी instance या मूल instance पर close() को कॉल करने से सभी संसाधन ठीक से साफ़ हो जाएँगे और इस प्रकार कोई भी instance आगे उपयोग योग्य नहीं रहेगा।
## Kubernetes मॉकिंग
क्लाइंट के साथ-साथ यह प्रोजेक्ट परीक्षण उद्देश्यों के लिए एक kubernetes मॉक सर्वर भी प्रदान करता है।
यह मॉक सर्वर `https://github.com/square/okhttp/tree/master/mockwebserver` पर आधारित है, लेकिन `https://github.com/fabric8io/mockwebserver` द्वारा प्रदान की गई DSL और सुविधाओं से सशक्त है।
मॉक वेब सर्वर में संचालन के दो तरीके हैं:
- Expectations mode
- CRUD mode
### Expectations mode
यह विशिष्ट मोड है जिसमें आप पहले निर्धारित करते हैं कि अपेक्षित http अनुरोध कौन से हैं और प्रत्येक अनुरोध के लिए प्रतिक्रियाएँ क्या होनी चाहिए।
उपयोग के अधिक विवरण यहाँ मिल सकते हैं: https://github.com/fabric8io/mockwebserver
इस मोड का उपयोग क्लाइंट के परीक्षण के लिए बड़े पैमाने पर किया गया है। [kubernetes-test](https://github.com/shoucheng3/fabric8io__kubernetes-client_cve-2021-4178_5-0-2/blob/HEAD/kubernetes-tests/src/test/java/io/fabric8/kubernetes/client/mock) अवश्य देखें।
अपने परीक्षण में Kubernetes server जोड़ने के लिए:```java
@Rule
public KubernetesServer server = new KubernetesServer();
हर एक अनुरोध और प्रतिक्रिया को परिभाषित करना थकाऊ हो सकता है। चूँकि अधिकांश मामलों में मॉक वेबसर्वर का उपयोग सरल crud आधारित संचालन करने के लिए किया जाता है, एक crud मोड जोड़ा गया है। crud मोड का उपयोग करते समय, मॉक वेब सर्वर kubernetes संसाधनों को इन-मेमोरी मैप का उपयोग करके संग्रहीत, पढ़, अद्यतन और हटा देगा, और यह एक वास्तविक api सर्वर के रूप में दिखाई देगा।
अपने परीक्षण में crud मोड में एक Kubernetes सर्वर जोड़ने के लिए:```java @Rule public KubernetesServer server = new KubernetesServer(true, true);
फिर आप सर्वर का उपयोग इस प्रकार कर सकते हैं:```java
@Test
public void testInCrudMode() {
KubernetesClient client = server.getClient();
final CountDownLatch deleteLatch = new CountDownLatch(1);
final CountDownLatch closeLatch = new CountDownLatch(1);
//CREATE
client.pods().inNamespace("ns1").create(new PodBuilder().withNewMetadata().withName("pod1").endMetadata().build());
//READ
podList = client.pods().inNamespace("ns1").list();
assertNotNull(podList);
assertEquals(1, podList.getItems().size());
//WATCH
Watch watch = client.pods().inNamespace("ns1").withName("pod1").watch(new Watcher<Pod>() {
@Override
public void eventReceived(Action action, Pod resource) {
switch (action) {
case DELETED:
deleteLatch.countDown();
break;
default:
throw new AssertionFailedError(action.toString().concat(" isn't recognised."));
}
}
@Override
public void onClose(KubernetesClientException cause) {
closeLatch.countDown();
}
});
//DELETE
client.pods().inNamespace("ns1").withName("pod1").delete();
//READ AGAIN
podList = client.pods().inNamespace("ns1").list();
assertNotNull(podList);
assertEquals(0, podList.getItems().size());
assertTrue(deleteLatch.await(1, TimeUnit.MINUTES));
watch.close();
assertTrue(closeLatch.await(1, TimeUnit.MINUTES));
}
आप JUnit5 के साथ KubernetesClient मॉकिंग तंत्र का उपयोग कर सकते हैं। चूंकि यह @Rule और @ClassRule का समर्थन नहीं करता है, इसलिए समर्पित एनोटेशन @EnableKubernetesMockClient उपलब्ध है।
यदि आप प्रत्येक परीक्षण के लिए मॉक किए गए KubernetesClient का इंस्टेंस बनाना चाहते हैं (JUnit4 @Rule), तो आपको नीचे दिखाए अनुसार KubernetesClient का इंस्टेंस घोषित करना होगा।```java
@EnableKubernetesMockClient
class ExampleTest {
KubernetesClient client;
@Test
public void testInStandardMode() {
...
}
}
यदि आप सभी परीक्षणों (JUnit4 `@ClassRule`) के लिए mocked server का static instance परिभाषित करना चाहते हैं, तो आपको नीचे दिखाए अनुसार `KubernetesClient` का instance घोषित करना होगा।
आप annotation field `crud` का उपयोग करके crudMode भी सक्षम कर सकते हैं।```java
@EnableKubernetesMockClient(crud = true)
class ExampleTest {
static KubernetesClient client;
@Test
public void testInCrudMode() {
...
}
}
नोट: यह मैट्रिक्स OpenShift के विभिन्न संस्करणों पर हमारे एकीकरण परीक्षणों को चलाकर तैयार किया गया है।
यहाँ उपयोग किए गए सभी संसाधन ऑब्जेक्ट OpenShift 3.9.0 और Kubernetes 1.9.0 के अनुसार होंगे। सभी संसाधन ऑब्जेक्ट OpenShift 3.9.0 और Kubernetes 1.9.0 के अनुसार सभी फ़ील्ड देंगे।
batch और extensions(Extensions deprecated है) दोनों में है।apps और extensions(Extensions deprecated है) दोनों में है।apps और extensions(Extensions deprecated है) दोनों में है।apps और extensions(Extensions deprecated है) दोनों में है।network और extensions(Extensions deprecated है) दोनों में है।client base DSL से storage DSL में स्थानांतरित किया गया।client base DSL और से केवल में स्थानांतरित किया गया।एक्सटेंशन्स:
फ्रेमवर्क/लाइब्रेरीज़/टूल्स:
CI प्लगइन्स:
बिल्ड टूल्स:
प्लेटफ़ॉर्म:
मालिकाना प्लेटफ़ॉर्म:
हमारे समुदाय के बढ़ने के साथ, हम अपने उपयोगकर्ताओं का ट्रैक रखना चाहेंगे। कृपया अपने संगठन/समुदाय के नाम के साथ एक PR भेजें।
हर नए Pull Request के लिए चलने वाले परीक्षणों के Github Actions और Jenkins के लिंक यहाँ दिए गए हैं। आप सभी हालिया बिल्ड भी देख सकते हैं।
रिलीज़ के बारे में अपडेट पाने के लिए, आप https://groups.google.com/forum/embed/?place=forum/fabric8-devclients में शामिल हो सकते हैं।## Kubectl Java समकक्ष
यह तालिका kubectl से Kubernetes Java Client मैपिंग प्रदान करती है। अधिकांश मैपिंग काफी सीधी हैं और एक-पंक्ति वाले ऑपरेशन हैं। हालाँकि, कुछ को समान परिणाम प्राप्त करने के लिए थोड़ा अधिक कोड की आवश्यकता हो सकती है:
| Property / Environment Variable | Description | Default value |
|---|
kubernetes.disable.autoConfig / KUBERNETES_DISABLE_AUTOCONFIG | स्वचालित कॉन्फ़िगरेशन अक्षम करें | false |
kubernetes.master / KUBERNETES_MASTER | Kubernetes मास्टर URL | https://kubernetes.default.svc |
kubernetes.api.version / KUBERNETES_API_VERSION | API संस्करण | v1 |
openshift.url / OPENSHIFT_URL | OpenShift मास्टर URL | Kubernetes मास्टर URL मान |
kubernetes.oapi.version / KUBERNETES_OAPI_VERSION | OpenShift API संस्करण | v1 |
kubernetes.trust.certificates / KUBERNETES_TRUST_CERTIFICATES | सभी प्रमाणपत्रों पर भरोसा करें | false |
kubernetes.disable.hostname.verification / KUBERNETES_DISABLE_HOSTNAME_VERIFICATION | false | |
kubernetes.certs.ca.file / KUBERNETES_CERTS_CA_FILE | ||
kubernetes.certs.ca.data / KUBERNETES_CERTS_CA_DATA | ||
kubernetes.certs.client.file / KUBERNETES_CERTS_CLIENT_FILE | ||
kubernetes.certs.client.data / KUBERNETES_CERTS_CLIENT_DATA | ||
kubernetes.certs.client.key.file / KUBERNETES_CERTS_CLIENT_KEY_FILE | ||
kubernetes.certs.client.key.data / KUBERNETES_CERTS_CLIENT_KEY_DATA | ||
kubernetes.certs.client.key.algo / KUBERNETES_CERTS_CLIENT_KEY_ALGO | क्लाइंट कुंजी एन्क्रिप्शन एल्गोरिदम | RSA |
kubernetes.certs.client.key.passphrase / KUBERNETES_CERTS_CLIENT_KEY_PASSPHRASE | ||
kubernetes.auth.basic.username / KUBERNETES_AUTH_BASIC_USERNAME | ||
kubernetes.auth.basic.password / KUBERNETES_AUTH_BASIC_PASSWORD | ||
kubernetes.auth.tryKubeConfig / KUBERNETES_AUTH_TRYKUBECONFIG | Kubernetes कॉन्फ़िग का उपयोग करके क्लाइंट कॉन्फ़िगर करें | true |
kubeconfig / KUBECONFIG | पढ़ने के लिए kubernetes कॉन्फ़िग फ़ाइल का नाम | ~/.kube/config |
kubernetes.auth.tryServiceAccount / KUBERNETES_AUTH_TRYSERVICEACCOUNT | सेवा खाते से क्लाइंट कॉन्फ़िगर करें | true |
kubernetes.tryNamespacePath / KUBERNETES_TRYNAMESPACEPATH | Kubernetes सेवा खाता नेमस्पेस पथ से क्लाइंट नेमस्पेस कॉन्फ़िगर करें | true |
kubernetes.auth.token / KUBERNETES_AUTH_TOKEN | ||
kubernetes.watch.reconnectInterval / KUBERNETES_WATCH_RECONNECTINTERVAL | ms में वॉच पुनः कनेक्ट अंतराल | 1000 |
kubernetes.watch.reconnectLimit / KUBERNETES_WATCH_RECONNECTLIMIT | पुनः कनेक्ट प्रयासों की संख्या (अनंत के लिए -1) | -1 |
kubernetes.connection.timeout / KUBERNETES_CONNECTION_TIMEOUT | ms में कनेक्शन टाइमआउट (कोई टाइमआउट नहीं के लिए 0) | 10000 |
kubernetes.request.timeout / KUBERNETES_REQUEST_TIMEOUT | ms में रीड टाइमआउट | 10000 |
kubernetes.rolling.timeout / KUBERNETES_ROLLING_TIMEOUT | ms में रोलिंग टाइमआउट | 900000 |
kubernetes.logging.interval / KUBERNETES_LOGGING_INTERVAL | ms में लॉगिंग अंतराल | 20000 |
kubernetes.scale.timeout / KUBERNETES_SCALE_TIMEOUT | ms में स्केल टाइमआउट | 600000 |
kubernetes.websocket.timeout / KUBERNETES_WEBSOCKET_TIMEOUT | ms में वेबसॉकेट टाइमआउट | 5000 |
kubernetes.websocket.ping.interval / kubernetes_websocket_ping_interval | ms में वेबसॉकेट पिंग अंतराल | 30000 |
kubernetes.max.concurrent.requests / KUBERNETES_MAX_CONCURRENT_REQUESTS | 64 | |
kubernetes.max.concurrent.requests.per.host / KUBERNETES_MAX_CONCURRENT_REQUESTS_PER_HOST | 5 | |
kubernetes.impersonate.username / KUBERNETES_IMPERSONATE_USERNAME | Impersonate-User HTTP हेडर मान | |
kubernetes.impersonate.group / KUBERNETES_IMPERSONATE_GROUP | Impersonate-Group HTTP हेडर मान | |
kubernetes.tls.versions / KUBERNETES_TLS_VERSIONS | , द्वारा अलग किए गए TLS संस्करण | TLSv1.2 |
kubernetes.truststore.file / KUBERNETES_TRUSTSTORE_FILE | ||
kubernetes.truststore.passphrase / KUBERNETES_TRUSTSTORE_PASSPHRASE | ||
kubernetes.keystore.file / KUBERNETES_KEYSTORE_FILE | ||
kubernetes.keystore.passphrase / KUBERNETES_KEYSTORE_PASSPHRASE |
| K8s 1.19.1 | K8s 1.18.0 | K8s 1.17.0 | K8s 1.16.0 | K8s 1.15.3 | K8s 1.14.2 | K8s 1.12.0 | K8s 1.11.0 | K8s 1.10.0 | K8s 1.9.0 | K8s 1.7.0 | K8s 1.6.0 | K8s 1.4.9 |
|---|
| kubernetes-client 5.0.2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 5.0.1 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 5.0.0 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.13.2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.13.1 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.13.0 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.12.0 | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.11.1 | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.11.0 | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.10.3 | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.10.2 | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.10.1 | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.10.0 | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.9.2 | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.9.1 | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.9.0 | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.8.0 | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.7.1 | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.7.0 | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.6.4 | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.6.3 | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.6.2 | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.6.1 | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.6.0 | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.5.2 | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.5.1 | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.5.0 | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.4.2 | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.4.1 | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.4.0 | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.3.1 | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.3.0 | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.2.2 | - | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.2.1 | - | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.2.0 | - | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.1.3 | - | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.1.2 | - | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.1.1 | - | - | - | - | - | - | ✓ | ✓ | ✓ | ✓ | - | - | - |
| kubernetes-client 4.1.0 | - | - | - | - | - | - | - | - | - | ✓ | ✓ | ✓ | - |
| kubernetes-client 4.0.0 | - | - | - | - | - | - | - | - | - | ✓ | ✓ | ✓ | - |
| kubernetes-client 3.2.0 | - | - | - | - | - | - | - | - | - | ✓ | ✓ | ✓ | - |
| kubernetes-client 3.1.12 | - | - | - | - | - | - | - | - | - | ✓ | ✓ | ✓ | - |
| kubernetes-client 3.0.11 | - | - | - | - | - | - | - | - | - | ✓ | ✓ | ✓ | - |
| kubernetes-client 3.0.10 | - | - | - | - | - | - | - | - | - | ✓ | ✓ | ✓ | - |
| kubernetes-client 3.0.3 | - | - | - | - | - | - | - | - | - | - | ✓ | - | - |
| kubernetes-client 1.3.92 | - | - | - | - | - | - | - | - | - | - | - | + | + |
| OCP 4.5.14 | OCP 4.2.0 | OCP 4.1.0 | OCP 3.11.0 | OCP 3.10.0 | OCP 3.9.0 | OCP 3.7.0 | OCP 3.6.0 |
|---|
| openshift-client 5.0.2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 5.0.1 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 5.0.0 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.13.2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.13.1 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.13.0 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.12.0 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.11.1 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.11.0 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.10.3 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.10.2 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.10.1 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.10.0 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.9.2 | - | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.9.1 | - | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.9.0 | - | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.8.0 | - | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.7.1 | - | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.7.0 | - | ✓ | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.6.4 | - | - | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.6.3 | - | - | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.6.2 | - | - | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.6.1 | - | - | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.6.0 | - | - | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.5.2 | - | - | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.5.1 | - | - | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.5.0 | - | - | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.4.2 | - | - | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.4.1 | - | - | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.4.0 | - | - | ✓ | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.3.1 | - | - | - | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.3.0 | - | - | - | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.2.2 | - | - | - | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.2.1 | - | - | - | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.2.0 | - | - | - | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.1.3 | - | - | - | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.1.2 | - | - | - | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.1.1 | - | - | - | ✓ | ✓ | ✓ | - | - |
| openshift-client 4.1.0 | - | - | - | - | ✓ | ✓ | ✓ | - |
| openshift-client 4.0.0 | - | - | - | - | - | ✓ | ✓ | ✓ |
| openshift-client 3.2.0 | - | - | - | - | - | ✓ | ✓ | ✓ |
| openshift-client 3.1.12 | - | - | - | - | - | ✓ | ✓ | ✓ |
| openshift-client 3.0.11 | - | - | - | - | - | ✓ | ✓ | ✓ |
| openshift-client 3.0.10 | - | - | - | - | - | ✓ | ✓ | ✓ |
| openshift-client 3.0.3 | - | - | - | - | - | - | ✓ | - |
| openshift-client 1.3.92 | - | - | - | - | - | - | - | + |
extensionsextensions| kubectl | Fabric8 Kubernetes Client |
|---|
kubectl config view | ConfigViewEquivalent.java |
kubectl config get-contexts | ConfigGetContextsEquivalent.java |
kubectl config current-context | ConfigGetCurrentContextEquivalent.java |
kubectl config use-context minikube | ConfigUseContext.java |
kubectl config view -o jsonpath='{.users[*].name}' | ConfigGetCurrentContextEquivalent.java |
kubectl get pods --all-namespaces | PodListGlobalEquivalent.java |
kubectl get pods | PodListEquivalent.java |
kubectl get pods -w | PodWatchEquivalent.java |
kubectl get pods --sort-by='.metadata.creationTimestamp' | PodListGlobalEquivalent.java |
kubectl run | PodRunEquivalent.java |
kubectl create -f test-pod.yaml | PodCreateYamlEquivalent.java |
kubectl exec my-pod -- ls / | PodExecEquivalent.java |
kubectl delete pod my-pod | PodDelete.java |
kubectl delete -f test-pod.yaml | PodDeleteViaYaml.java |
kubectl cp /foo_dir my-pod:/bar_dir | UploadDirectoryToPod.java |
kubectl cp my-pod:/tmp/foo /tmp/bar | DownloadFileFromPod.java |
kubectl cp my-pod:/tmp/foo -c c1 /tmp/bar | DownloadFileFromMultiContainerPod.java |
kubectl cp /foo_dir my-pod:/tmp/bar_dir | UploadFileToPod.java |
kubectl logs pod/my-pod | PodLogsEquivalent.java |
kubectl logs pod/my-pod -f | PodLogsFollowEquivalent.java |
kubectl logs pod/my-pod -c c1 | PodLogsMultiContainerEquivalent.java |
kubectl port-forward my-pod 8080:80 | PortForwardEquivalent.java |
kubectl get pods --selector=version=v1 -o jsonpath='{.items[*].metadata.name}' | PodListFilterByLabel.java |
kubectl get pods --field-selector=status.phase=Running | PodListFilterFieldSelector.java |
kubectl get pods --show-labels | PodShowLabels.java |
kubectl label pods my-pod new-label=awesome | PodAddLabel.java |
kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq | PodAddAnnotation.java |
kubectl get configmap cm1 -o jsonpath='{.data.database}' | ConfigMapJsonPathEquivalent.java |
kubectl create -f test-svc.yaml | LoadAndCreateService.java |
kubectl create -f test-deploy.yaml | LoadAndCreateDeployment.java |
kubectl set image deploy/d1 nginx=nginx:v2 | RolloutSetImageEquivalent.java |
kubectl scale --replicas=4 deploy/nginx-deployment | ScaleEquivalent.java |
kubectl rollout restart deploy/d1 | RolloutRestartEquivalent.java |
kubectl rollout pause deploy/d1 | RolloutPauseEquivalent.java |
kubectl rollout resume deploy/d1 | RolloutResumeEquivalent.java |
kubectl rollout undo deploy/d1 | RolloutUndoEquivalent.java |
kubectl create -f test-crd.yaml | LoadAndCreateCustomResourceDefinition.java |
kubectl create -f customresource.yaml | CustomResourceCreateDemo.java |
kubectl create -f customresource.yaml | CustomResourceCreateDemoTypeless.java |
kubectl get ns | NamespaceListEquivalent.java |
kubectl apply -f test-resource-list.yml | CreateOrReplaceResourceList.java |
kubectl get events | EventsGetEquivalent.java |
kubectl top nodes | TopEquivalent.java |
kubectl auth can-i create deployment.apps | CanIEquivalent.java |