
Kubernetes API 向けの Java クライアントライブラリで、認証、watch、exec、port-forward 操作をサポートし、クラスター、ポッド、デプロイメント、その他のリソースのプログラムによる管理を可能にします。
Kubernetes API の Java クライアント。
Java クライアントは Semantic Versioning を使用しています。メジャーバージョン番号は、新しい Kubernetes リリースバージョン(以下の表参照)のためにクライアントを再生成するたびに増加します。その際、新しい API が追加され、生成された Kubernetes API スタブに破壊的な変更が加えられる可能性があります。メジャーバージョンアップ時は、破壊的な変更に備えてください。
Java クライアントライブラリをローカルの 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 と同等。kubectl logs と同等。すべてのポッドを一覧表示:
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"
すべての API およびモデルのドキュメントは、生成されたクライアントのドキュメント にあります。
凡例:
✓ java-client と Kubernetes バージョンの両方でまったく同じ機能/API オブジェクトがあることを示します。+ java-client には Kubernetes クラスターに存在しない可能性のある機能や API オブジェクトがありますが、共通部分はすべて動作します。- Kubernetes クラスターには java-client ライブラリが使用できない機能があることを示します(追加の API オブジェクトなど)。変更の詳細については、CHANGELOG を参照してください。
コントリビューションの方法については 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 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 | + | + | + | + | + | ✓ |