
Ce client donne accès à l'intégralité des API REST Kubernetes et OpenShift via un DSL fluide.
La façon la plus simple de créer un client est :```java KubernetesClient client = new DefaultKubernetesClient();
`DefaultOpenShiftClient` implémente à la fois les interfaces `KubernetesClient` et `OpenShiftClient`, donc si vous avez besoin des
extensions OpenShift, telles que les `Build`s, etc., faites simplement :```java
OpenShiftClient osClient = new DefaultOpenShiftClient();
Les paramètres proviennent de différentes sources, dans l'ordre de priorité suivant :
Les propriétés système sont préférées aux variables d'environnement. Les propriétés système et variables d'environnement suivantes peuvent être utilisées pour la configuration :
Vous pouvez également utiliser ConfigBuilder pour créer un objet de configuration pour le client Kubernetes :```java
Config config = new ConfigBuilder().withMasterUrl("https://mymaster.com").build();
KubernetesClient client = new DefaultKubernetesClient(config);
L'utilisation du DSL est la même pour toutes les ressources.
Lister les ressources :```java
NamespaceList myNs = client.namespaces().list();
ServiceList myServices = client.services().list();
ServiceList myNsServices = client.services().inNamespace("default").list();
Obtenir une ressource :```java Namespace myns = client.namespaces().withName("myns").get();
Service myservice = client.services().inNamespace("default").withName("myservice").get();
Supprimer:```java
Namespace myns = client.namespaces().withName("myns").delete();
Service myservice = client.services().inNamespace("default").withName("myservice").delete();
La modification des ressources utilise les builders intégrés du modèle Kubernetes :```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());
Dans le même esprit, vous pouvez rendre les builders inline pour créer :```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());
Vous pouvez également définir l'apiVersion de la ressource comme dans le cas de SecurityContextConstraints :```java SecurityContextConstraints scc = new SecurityContextConstraintsBuilder() .withApiVersion("v1") .withNewMetadata().withName("scc").endMetadata() .withAllowPrivilegedContainer(true) .withNewRunAsUser() .withType("RunAsAny") .endRunAsUser() .build();
### Suivi des événements
Utilisez `io.fabric8.kubernetes.api.model.Event` comme T pour Watcher:```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);
}
});
L'API Kubernetes définit un ensemble d'extensions comme daemonSets, jobs, ingresses, etc., toutes utilisables dans le DSL extensions() :
par exemple, pour lister les jobs...``` jobs = client.batch().jobs().list();
### Chargement des ressources à partir de sources externes
Il existe des cas où vous souhaitez lire une ressource à partir d'une source externe, plutôt que de la définir à l'aide du DSL du client.
Dans ces cas, le client vous permet de charger la ressource à partir de :
- Un fichier *(prend en charge à la fois java.io.File et java.lang.String)*
- Une URL
- Un flux d'entrée
Une fois la ressource chargée, vous pouvez la traiter comme si vous l'aviez créée vous-même.
Par exemple, lisons un pod à partir d'un fichier yml et travaillons avec :
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);
### Passer une référence d'une ressource au client
Dans le même esprit, vous pouvez utiliser un objet créé en externe (soit une référence, soit en utilisant sa représentation sous forme de chaîne).
Par exemple :
Pod pod = someThirdPartyCodeThatCreatesAPod();
Boolean deleted = client.resource(pod).delete();
### Adapter le client
Le client prend en charge des adaptateurs enfichables. Un exemple d'adaptateur est [l'adaptateur OpenShift](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)
qui permet d'adapter une instance existante de [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) en une instance [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).
Par exemple :```java
KubernetesClient client = new DefaultKubernetesClient();
OpenShiftClient oClient = client.adapt(OpenShiftClient.class);
Le client prend également en charge la méthode isAdaptable() qui vérifie si l'adaptation est possible et renvoie true si c'est le cas.```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."); }
#### Adaptation et fermeture
Notez que lors de l'utilisation d'`adapt()`, l'adapté et la cible partageront les mêmes ressources (client HTTP sous-jacent, pools de threads, etc.).
Cela signifie que `close()` n'est pas obligatoire sur chaque instance créée via `adapt`.
Appeler `close()` sur l'une des instances gérées par `adapt()` ou sur l'instance d'origine nettoiera correctement toutes les ressources et aucune des instances ne sera donc plus utilisable.
## Mocking Kubernetes
En plus du client, ce projet fournit également un serveur mock Kubernetes que vous pouvez utiliser à des fins de test.
Le serveur mock est basé sur `https://github.com/square/okhttp/tree/master/mockwebserver` mais est enrichi par le DSL et les fonctionnalités fournis par `https://github.com/fabric8io/mockwebserver`.
Le Mock Web Server a deux modes de fonctionnement :
- Mode Expectations
- Mode CRUD
### Mode Expectations
C'est le mode typique où vous définissez d'abord quelles sont les requêtes HTTP attendues et quelles doivent être les réponses pour chaque requête.
Plus de détails sur l'utilisation sont disponibles sur : https://github.com/fabric8io/mockwebserver
Ce mode a été largement utilisé pour tester le client lui-même. Assurez-vous de consulter [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).
Pour ajouter un serveur Kubernetes à votre test :```java
@Rule
public KubernetesServer server = new KubernetesServer();
Définir chaque requête et chaque réponse peut devenir fastidieux. Étant donné que dans la plupart des cas le serveur web simulé est utilisé pour effectuer des opérations simples basées sur le CRUD, un mode CRUD a été ajouté. Lors de l'utilisation du mode CRUD, le serveur web simulé stockera, lira, mettra à jour et supprimera des ressources Kubernetes à l'aide d'une carte en mémoire et apparaîtra comme un véritable serveur API.
Pour ajouter un serveur Kubernetes en mode CRUD à votre test :```java @Rule public KubernetesServer server = new KubernetesServer(true, true);
Ensuite, vous pouvez utiliser le serveur comme ceci:```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));
}
Vous pouvez utiliser le mécanisme de mock de KubernetesClient avec JUnit5. Comme il ne prend pas en charge @Rule et @ClassRule, il existe une annotation dédiée @EnableKubernetesMockClient.
Si vous souhaitez créer une instance de KubernetesClient mocké pour chaque test (@Rule JUnit4), vous devez déclarer une instance de KubernetesClient comme indiqué ci-dessous.```java
@EnableKubernetesMockClient
class ExampleTest {
KubernetesClient client;
@Test
public void testInStandardMode() {
...
}
}
Si vous souhaitez définir une instance statique du serveur mocké pour tous les tests (JUnit4 `@ClassRule`), vous devez déclarer une instance de `KubernetesClient` comme indiqué ci-dessous.
Vous pouvez également activer crudMode en utilisant le champ d'annotation `crud`.```java
@EnableKubernetesMockClient(crud = true)
class ExampleTest {
static KubernetesClient client;
@Test
public void testInCrudMode() {
...
}
}
Remarque : Cette matrice est préparée en exécutant nos tests d'intégration sur différentes versions d'OpenShift.
Tous les objets de ressource utilisés ici seront conformes à OpenShift 3.9.0 et Kubernetes 1.9.0. Tous les objets de ressource fourniront tous les champs conformément à OpenShift 3.9.0 et Kubernetes 1.9.0
batch et extensions(Extensions est obsolète)apps et extensions(Extensions est obsolète)apps et extensions(Extensions est obsolète)apps et extensions(Extensions est obsolète)network et extensions(Extensions est obsolète)client base DSL vers le DSL storageclient base DSL et vers uniquement Extensions:
Frameworks/Bibliothèques/Outils:
Plugins CI:
Outils de construction:
Plateformes:
Plateformes propriétaires:
À mesure que notre communauté grandit, nous aimerions garder une trace de nos utilisateurs. Veuillez envoyer une PR avec le nom de votre organisation/communauté.
Voici les liens des Github Actions et de Jenkins pour les tests qui s'exécutent pour chaque nouvelle Pull Request. Vous pouvez également consulter tous les builds récents.
Pour obtenir les mises à jour concernant les versions, vous pouvez rejoindre https://groups.google.com/forum/embed/?place=forum/fabric8-devclients## Équivalents Java de Kubectl
Ce tableau fournit les correspondances entre kubectl et le client Kubernetes Java. La plupart des correspondances sont assez simples et se font en une seule ligne d'opérations. Cependant, certaines peuvent nécessiter un peu plus de code pour obtenir le même résultat :
| Property / Environment Variable | Description | Default value |
|---|
kubernetes.disable.autoConfig / KUBERNETES_DISABLE_AUTOCONFIG | Désactiver la configuration automatique | false |
kubernetes.master / KUBERNETES_MASTER | URL du master Kubernetes | https://kubernetes.default.svc |
kubernetes.api.version / KUBERNETES_API_VERSION | Version de l'API | v1 |
openshift.url / OPENSHIFT_URL | URL du master OpenShift | Valeur de l'URL du master Kubernetes |
kubernetes.oapi.version / KUBERNETES_OAPI_VERSION | Version de l'API OpenShift | v1 |
kubernetes.trust.certificates / KUBERNETES_TRUST_CERTIFICATES | Approuver tous les certificats | 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 | Algorithme de chiffrement de la clé client | 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 | Configurer le client à l'aide de la configuration Kubernetes | true |
kubeconfig / KUBECONFIG | Nom du fichier de configuration Kubernetes à lire | ~/.kube/config |
kubernetes.auth.tryServiceAccount / KUBERNETES_AUTH_TRYSERVICEACCOUNT | Configurer le client à partir du compte de service | true |
kubernetes.tryNamespacePath / KUBERNETES_TRYNAMESPACEPATH | Configurer le namespace du client à partir du chemin du namespace du compte de service Kubernetes | true |
kubernetes.auth.token / KUBERNETES_AUTH_TOKEN | ||
kubernetes.watch.reconnectInterval / KUBERNETES_WATCH_RECONNECTINTERVAL | Intervalle de reconnexion du watcher en ms | 1000 |
kubernetes.watch.reconnectLimit / KUBERNETES_WATCH_RECONNECTLIMIT | Nombre de tentatives de reconnexion (-1 pour illimité) | -1 |
kubernetes.connection.timeout / KUBERNETES_CONNECTION_TIMEOUT | Délai de connexion en ms (0 pour aucun délai) | 10000 |
kubernetes.request.timeout / KUBERNETES_REQUEST_TIMEOUT | Délai de lecture en ms | 10000 |
kubernetes.rolling.timeout / KUBERNETES_ROLLING_TIMEOUT | Délai de rolling update en ms | 900000 |
kubernetes.logging.interval / KUBERNETES_LOGGING_INTERVAL | Intervalle de journalisation en ms | 20000 |
kubernetes.scale.timeout / KUBERNETES_SCALE_TIMEOUT | Délai de mise à l'échelle en ms | 600000 |
kubernetes.websocket.timeout / KUBERNETES_WEBSOCKET_TIMEOUT | Délai WebSocket en ms | 5000 |
kubernetes.websocket.ping.interval / kubernetes_websocket_ping_interval | Intervalle de ping WebSocket en 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 | Valeur de l'en-tête HTTP Impersonate-User | |
kubernetes.impersonate.group / KUBERNETES_IMPERSONATE_GROUP | Valeur de l'en-tête HTTP Impersonate-Group | |
kubernetes.tls.versions / KUBERNETES_TLS_VERSIONS | Versions TLS séparées par , | 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 |