
KubernetesおよびOpenShiftのREST APIへの流暢なDSLアクセスを提供するJavaクライアントで、クラウドネイティブなインフラストラクチャ、Pod、サービス、設定を管理し、認証とTLSをサポートします。
このクライアントは、fluent DSL を介して Kubernetes および OpenShift の完全な REST API へのアクセスを提供します。
クライアントを作成する最も簡単な方法は次のとおりです。```java KubernetesClient client = new DefaultKubernetesClient();
`DefaultOpenShiftClient`は、`KubernetesClient`と`OpenShiftClient`の両方のインターフェースを実装しています。そのため、`Build`などのOpenShift拡張機能が必要な場合は、次のようにするだけです:```java
OpenShiftClient osClient = new DefaultOpenShiftClient();
これは、以下の優先順位でさまざまなソースから設定を使用します:
システムプロパティは環境変数よりも優先されます。以下のシステムプロパティと環境変数が設定に使用できます:
または、ConfigBuilder を使用してKubernetesクライアントの設定オブジェクトを作成することもできます:```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();
### イベントの追跡
`io.fabric8.kubernetes.api.model.Event` を Watcher の T として使用する:```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 = 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)に適応させることができます。
例えば:
OpenShiftClient openShiftClient = new OpenShiftClient(openShiftConfig);```java
KubernetesClient client = new DefaultKubernetesClient();
OpenShiftClient oClient = client.adapt(OpenShiftClient.class);
クライアントはまた、適応が可能かどうかをチェックし、可能であればtrueを返すisAdaptable()メソッドをサポートしています。```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) とクローズ (close)
`adapt()` を使用する場合、アダプティーとターゲットは同じリソース (基盤となる http クライアント、スレッドプールなど) を共有することに注意してください。
つまり、`adapt` を介して作成されたすべてのインスタンスごとに `close()` を使用する必要はありません。
`adapt` で管理されたインスタンスまたは元のインスタンスのいずれかで `close()` を呼び出すと、すべてのリソースが適切にクリーンアップされ、そのためどのインスタンスもそれ以上使用できなくなります。
## Kubernetes のモック化
このプロジェクトでは、クライアントと共に、テスト目的で使用できる Kubernetes モックサーバーも提供しています。
モックサーバーは `https://github.com/square/okhttp/tree/master/mockwebserver` に基づいていますが、`https://github.com/fabric8io/mockwebserver` が提供する DSL と機能によって強化されています。
モック Web サーバーには 2 つの動作モードがあります。
- 期待値モード
- CRUD モード
### 期待値モード
これは、最初に予想される 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 サーバーを追加するには:```java
@Rule
public KubernetesServer server = new KubernetesServer();
リクエストとレスポンスを一つ一つ定義するのは面倒になりがちです。ほとんどの場合、モックWebサーバーは単純なCRUDベースの操作を実行するために使用されるため、CRUDモードが追加されました。 CRUDモードを使用すると、モックWebサーバーはインメモリマップを使用して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));
}
KubernetesClient のモッキング機構を JUnit5 で使用できます。JUnit5 では @Rule や @ClassRule がサポートされていないため、専用のアノテーション @EnableKubernetesMockClient が用意されています。各テスト(JUnit4 の @Rule 相当)に対してモックされた KubernetesClient のインスタンスを作成する場合は、以下のように KubernetesClient のインスタンスを宣言する必要があります。```java
@EnableKubernetesMockClient
class ExampleTest {
KubernetesClient client;
@Test
public void testInStandardMode() {
...
}
}
すべてのテストに対してモックサーバーの静的インスタンスを定義したい場合(JUnit4の`@ClassRule`)、以下のように`KubernetesClient`のインスタンスを宣言する必要があります。また、アノテーションフィールド`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 は非推奨)apps と extensions の両方に存在します (Extensions は非推奨)apps と extensions の両方に存在します (Extensions は非推奨)apps と extensions の両方に存在します (Extensions は非推奨)network と extensions の両方に存在します (Extensions は非推奨)client base DSL から storage DSL に移動しましたclient base DSL と から のみに移動しました拡張機能:
フレームワーク/ライブラリ/ツール:
CI プラグイン:
ビルドツール:
プラットフォーム:
プロプライエタリプラットフォーム:
コミュニティが成長するにつれ、ユーザーの追跡を続けたいと考えています。あなたの組織/コミュニティ名を添えて PR を送信してください。
以下は、新しいプルリクエストごとに実行されるテストの Github Actions と Jenkins のリンクです。最近のビルドもすべて表示できます。
リリースに関する最新情報を入手するには、https://groups.google.com/forum/embed/?place=forum/fabric8-devclients にご参加ください。## Kubectl Java 対応
この表は、kubectl コマンドと Kubernetes Java クライアントの対応関係を示しています。ほとんどの対応は非常に単純で、1行の操作で済みます。ただし、同じ結果を得るためにより多くのコードが必要となるものもあります。
| プロパティ/環境変数 | 説明 | デフォルト値 |
|---|
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 | ウォッチ再接続間隔(ミリ秒) | 1000 |
kubernetes.watch.reconnectLimit / KUBERNETES_WATCH_RECONNECTLIMIT | 再接続試行回数(-1は無制限) | -1 |
kubernetes.connection.timeout / KUBERNETES_CONNECTION_TIMEOUT | 接続タイムアウト(ミリ秒)(0はタイムアウトなし) | 10000 |
kubernetes.request.timeout / KUBERNETES_REQUEST_TIMEOUT | 読み取りタイムアウト(ミリ秒) | 10000 |
kubernetes.rolling.timeout / KUBERNETES_ROLLING_TIMEOUT | ローリングタイムアウト(ミリ秒) | 900000 |
kubernetes.logging.interval / KUBERNETES_LOGGING_INTERVAL | ログ間隔(ミリ秒) | 20000 |
kubernetes.scale.timeout / KUBERNETES_SCALE_TIMEOUT | スケールタイムアウト(ミリ秒) | 600000 |
kubernetes.websocket.timeout / KUBERNETES_WEBSOCKET_TIMEOUT | WebSocketタイムアウト(ミリ秒) | 5000 |
kubernetes.websocket.ping.interval / kubernetes_websocket_ping_interval | WebSocket ping間隔(ミリ秒) | 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 |