
Java-клиент для API kubernetes.
Java-клиент использует семантическое версионирование. Мы увеличиваем номер основной версии каждый раз, когда перегенерируем клиент для новой версии релиза 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.список всех подов:
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());
}
}
}
просмотр (watch) объектов namespace:
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 и моделям можно найти в документации сгенерированного клиента
Условные обозначения:
✓ Полностью одинаковый набор функций / объектов API как в java-client, так и в соответствующей
версии Kubernetes.+ java-client содержит функции или объекты API, которых может не быть в
кластере Kubernetes, но всё общее между ними будет работать.- Кластер Kubernetes имеет функции, которые библиотека java-client использовать не может
(дополнительные объекты API и т. д.).Подробное описание изменений между версиями java-client см. в 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 logskubectl exec.kubectl port-forward.kubectl attach.kubectl cp.client-java-extended)
| версия клиента | 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 | + | + | + | + | + | ✓ |