
Biblioteca cliente Java para a API do Kubernetes, permitindo o gerenciamento programático de clusters, pods, implantações e outros recursos com suporte para autenticação, watch, exec e operações de port-forward.
Cliente Java para a API do kubernetes.
O cliente Java usa Versionamento Semântico. Incrementamos o número da versão principal sempre que regeneramos o cliente para uma nova versão de lançamento do Kubernetes (veja a tabela abaixo). Sempre que fazemos isso, novas APIs são adicionadas e possivelmente mudanças que quebram a compatibilidade nos Stubs da API do Kubernetes gerados. Ao atualizar uma versão principal, esteja preparado para possíveis mudanças que quebrem a compatibilidade.
Para instalar a biblioteca do cliente Java em seu repositório Maven local, simplesmente execute:
git clone --recursive https://github.com/kubernetes-client/java
cd java
mvn install
Consulte a documentação oficial para mais informações.
Adicione esta dependência ao POM do seu projeto:
<dependency>
<groupId>io.kubernetes</groupId>
<artifactId>client-java</artifactId>
<version>8.0.2</version>
</dependency>
compile 'io.kubernetes:client-java:8.0.2'
Primeiro, gere o JAR executando:
git clone --recursive https://github.com/kubernetes-client/java
cd java/kubernetes
mvn package
Em seguida, instale manualmente os seguintes JARs:
Preparamos alguns exemplos para casos de uso comuns, mostrados abaixo:
kubectl patch.kubectl get <resource> -w.listar todos os pods:
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());
}
}
}
assistir no objeto de 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());
}
}
}
Mais exemplos podem ser encontrados na pasta examples. Para executar os exemplos, execute este comando:
mvn exec:java -Dexec.mainClass="io.kubernetes.client.examples.Example"
Toda a documentação das APIs e Modelos pode ser encontrada na documentação do cliente gerado
Legenda:
✓ Exatamente os mesmos recursos / objetos de API tanto no java-client quanto na versão do Kubernetes.+ O java-client possui recursos ou objetos de API que podem não estar presentes no cluster Kubernetes, mas tudo o que eles têm em comum funcionará.- O cluster Kubernetes possui recursos que a biblioteca java-client não pode usar (objetos de API adicionais, etc).Consulte o CHANGELOG para uma descrição detalhada das mudanças entre as versões do java-client.
Por favor, consulte CONTRIBUTING.md para instruções sobre como contribuir.
A participação na comunidade Kubernetes é regida pelo Código de Conduta da CNCF.
O código é gerado pelo projeto openapi-generator.
Construímos ferramentas de propósito geral e multilinguagem para gerar código, hospedadas no repositório kubernetes-client/gen.
Para começar, em um diretório raiz que não seja o diretório do seu cliente java, por exemplo, seu layout de diretório poderia ser:
${HOME}/
src/
gen/
java/
...
Em seguida, para clonar o repositório gen, você executaria:
cd ${HOME}/src
git clone https://github.com/kubernetes-client/gen
export GEN_ROOT=${PWD}
Em seguida, para atualizar o cliente:
cd ${HOME}/src/java
${GEN_ROOT}/gen/openapi/java.sh kubernetes ./settings
Isso deve passar por um longo processo de build envolvendo docker e eventualmente resultar em um novo conjunto de código gerado no diretório kubernetes.
kubectl logskubectl exec.kubectl port-forward.kubectl attach.kubectl cp.client-java-extended)
| versão do cliente | 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 | + | + | + | + | + | ✓ |