Skip to content

3. Code Examples

Min Jin edited this page Jul 17, 2023 · 10 revisions

Here's a few code snippets showing how to access Kubernetes cluster using the library:

list all 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());
        }
    }
}

watch on namespace object:

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());
        }
    }
}

More examples can be found in examples folder. To run examples, run this command:

mvn exec:java -Dexec.mainClass="io.kubernetes.client.examples.Example"

Additionally, we prepared a few examples for common use-cases which are shown below:

  • Configuration:
  • Basics:
    • SimpleExample: Simple minimum example of how to use the client.
    • ProtoExample: Request/receive payloads in protobuf serialization protocol.
    • PatchExample: Patch resource objects in various supported patch formats, equal to kubectl patch.
    • FluentExample: Construct arbitrary resource in a fluent builder style.
    • YamlExample: Suggested way to load or dump resource in Yaml.
  • Streaming:
    • WatchExample: Subscribe watch events from certain resources, equal to kubectl get <resource> -w.
    • LogsExample: Fetch logs from running containers, equal to kubectl logs.
    • ExecExample: Establish an "exec" session with running containers, equal to kubectl exec.
    • PortForwardExample: Maps local port to a port on the pod, equal to kubectl port-forward.
    • AttachExample: Attach to a process that is already running inside an existing container, equal to kubectl attach.
    • CopyExample: Copy files and directories to and from containers, equal to kubectl cp.
    • WebSocketsExample: Establish an arbitrary web-socket session to certain resources.
  • Advanced: (NOTE: The following example requires client-java-extended module)