CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-io-fabric8--openshift-client

Java client library for OpenShift REST APIs, providing fluent DSL access to OpenShift resources and operations.

Pending
Overview
Eval results
Files

index.mddocs/

OpenShift Client

OpenShift Client is a comprehensive Java library that provides fluent DSL access to OpenShift REST APIs. It extends the Kubernetes client with OpenShift-specific resources and operations, enabling programmatic interaction with OpenShift clusters through build management, template processing, project administration, and extensive API group operations covering configuration, monitoring, machine management, and operator lifecycle management.

Package Information

  • Package Name: openshift-client
  • Group ID: io.fabric8
  • Language: Java
  • Installation:
    <dependency>
      <groupId>io.fabric8</groupId>
      <artifactId>openshift-client</artifactId>
      <version>7.3.1</version>
    </dependency>

Core Imports

import io.fabric8.openshift.client.OpenShiftClient;
import io.fabric8.openshift.client.DefaultOpenShiftClient;
import io.fabric8.kubernetes.client.KubernetesClientBuilder;

Basic Usage

import io.fabric8.openshift.client.OpenShiftClient;
import io.fabric8.kubernetes.client.KubernetesClientBuilder;

// Create OpenShift client (recommended approach)
try (OpenShiftClient client = new KubernetesClientBuilder().build().adapt(OpenShiftClient.class)) {
    // Get current user (equivalent to 'oc whoami')
    User currentUser = client.currentUser();
    System.out.println("Current user: " + currentUser.getMetadata().getName());
    
    // List projects
    ProjectList projects = client.projects().list();
    for (Project project : projects.getItems()) {
        System.out.println("Project: " + project.getMetadata().getName());
    }
    
    // Create a build from BuildConfig
    BuildConfig buildConfig = client.buildConfigs()
        .inNamespace("myproject")
        .withName("myapp")
        .get();
    if (buildConfig != null) {
        Build build = client.buildConfigs()
            .inNamespace("myproject")
            .withName("myapp")
            .instantiate(new BuildRequestBuilder().build());
    }
}

Architecture

OpenShift Client is built on several key components:

  • Client Interfaces: OpenShiftClient provides the main API surface, extending KubernetesClient with OpenShift-specific operations
  • DSL Pattern: Fluent domain-specific language for resource operations using method chaining and type-safe builders
  • Resource Operations: Standard CRUD operations through MixedOperation (namespace-scoped) and NonNamespaceOperation (cluster-scoped) interfaces
  • API Group Organization: Structured access to OpenShift's extensive API groups covering configuration, operators, monitoring, machine management, and more
  • Extension Architecture: Pluggable extension system allowing adaptation between Kubernetes and OpenShift clients
  • Configuration System: OpenShiftConfig extends Kubernetes configuration with OpenShift-specific settings like build timeouts and API versioning

Capabilities

Client Configuration and Setup

Core client creation, configuration management, and connection setup for OpenShift clusters. Includes authentication, SSL configuration, and namespace management.

public interface OpenShiftClient extends KubernetesClient {
    URL getOpenshiftUrl();
    VersionInfo getOpenShiftV3Version();
    String getOpenShiftV4Version();
    User currentUser();
    boolean supportsOpenShiftAPIGroup(String apiGroup);
    FunctionCallable<NamespacedOpenShiftClient> withRequestConfig(RequestConfig requestConfig);
    
    // API Group Access Methods
    OpenShiftConfigAPIGroupDSL config();
    OpenShiftConsoleAPIGroupDSL console();
    OpenShiftAutoscalingAPIGroupDSL openShiftAutoscaling();
    OpenShiftHiveAPIGroupDSL hive();
    OpenShiftOperatorAPIGroupDSL operator();
    OpenShiftOperatorHubAPIGroupDSL operatorHub();
    MachineConfigurationAPIGroupDSL machineConfigurations();
    OpenShiftMachineAPIGroupDSL machine();
    OpenShiftMonitoringAPIGroupDSL monitoring();
    OpenShiftQuotaAPIGroupDSL quotas();
    OpenShiftTunedAPIGroupDSL tuned();
    OpenShiftWhereaboutsAPIGroupDSL whereabouts();
    OpenShiftStorageVersionMigratorApiGroupDSL kubeStorageVersionMigrator();
}

public class OpenShiftConfig extends Config {
    public OpenShiftConfig(Config kubernetesConfig);
    public String getOapiVersion();
    public String getOpenShiftUrl();
    public long getBuildTimeout();
    public static OpenShiftConfig wrap(Config config);
}

Client Setup

Core OpenShift Resources

Essential OpenShift resources including builds, images, routes, templates, and projects. These resources provide the fundamental OpenShift functionality beyond standard Kubernetes.

// Build Management  
MixedOperation<Build, BuildList, BuildResource> builds();
MixedOperation<BuildConfig, BuildConfigList, BuildConfigResource<BuildConfig, Void, Build>> buildConfigs();

// Image Management
NonNamespaceOperation<Image, ImageList, Resource<Image>> images();
MixedOperation<ImageStream, ImageStreamList, Resource<ImageStream>> imageStreams();
MixedOperation<ImageStreamTag, ImageStreamTagList, Resource<ImageStreamTag>> imageStreamTags();

// Application Resources
MixedOperation<DeploymentConfig, DeploymentConfigList, DeployableScalableResource<DeploymentConfig>> deploymentConfigs();
MixedOperation<Route, RouteList, Resource<Route>> routes();
ParameterMixedOperation<Template, TemplateList, TemplateResource> templates();

// Project Management
ProjectOperation projects();
ProjectRequestOperation projectrequests();

Core Resources

Security and Access Control

Comprehensive RBAC and security management including roles, users, groups, OAuth, and access reviews. Covers both namespace-scoped and cluster-scoped security resources.

// User and Group Management
NonNamespaceOperation<User, UserList, Resource<User>> users();
NonNamespaceOperation<Group, GroupList, Resource<Group>> groups();
NonNamespaceOperation<Identity, IdentityList, Resource<Identity>> identities();

// RBAC Resources
MixedOperation<Role, RoleList, Resource<Role>> roles();
MixedOperation<RoleBinding, RoleBindingList, Resource<RoleBinding>> roleBindings();
NonNamespaceOperation<ClusterRole, ClusterRoleList, Resource<ClusterRole>> clusterRoles();
MixedOperation<ClusterRoleBinding, ClusterRoleBindingList, Resource<ClusterRoleBinding>> clusterRoleBindings();

// Security Context and Constraints
NonNamespaceOperation<SecurityContextConstraints, SecurityContextConstraintsList, Resource<SecurityContextConstraints>> securityContextConstraints();

// Access Reviews
InOutCreateable<SubjectAccessReview, SubjectAccessReviewResponse> subjectAccessReviews();
NamespacedInOutCreateable<LocalSubjectAccessReview, SubjectAccessReviewResponse> localSubjectAccessReviews();

Security and RBAC

Cluster Configuration Management

OpenShift cluster configuration through the config.openshift.io API group. Manages cluster-wide settings for authentication, networking, builds, DNS, ingress, and feature gates.

OpenShiftConfigAPIGroupDSL config();

interface OpenShiftConfigAPIGroupDSL {
    NonNamespaceOperation<APIServer, APIServerList, Resource<APIServer>> apiServers();
    NonNamespaceOperation<Authentication, AuthenticationList, Resource<Authentication>> authentications();
    NonNamespaceOperation<Build, BuildList, Resource<Build>> builds();
    NonNamespaceOperation<ClusterOperator, ClusterOperatorList, Resource<ClusterOperator>> clusterOperators();
    NonNamespaceOperation<ClusterVersion, ClusterVersionList, Resource<ClusterVersion>> clusterVersions();
    NonNamespaceOperation<DNS, DNSList, Resource<DNS>> dnses();
    NonNamespaceOperation<FeatureGate, FeatureGateList, Resource<FeatureGate>> featureGates();
    NonNamespaceOperation<Network, NetworkList, Resource<Network>> networks();
    NonNamespaceOperation<OAuth, OAuthList, Resource<OAuth>> oAuths();
}

Configuration Management

Operator and Lifecycle Management

Comprehensive operator management through multiple API groups including Operator Lifecycle Manager (OLM), OpenShift operators, and OperatorHub integration.

OpenShiftOperatorAPIGroupDSL operator();
OpenShiftOperatorHubAPIGroupDSL operatorHub();

interface OpenShiftOperatorHubAPIGroupDSL {
    MixedOperation<CatalogSource, CatalogSourceList, Resource<CatalogSource>> catalogSources();
    MixedOperation<ClusterServiceVersion, ClusterServiceVersionList, Resource<ClusterServiceVersion>> clusterServiceVersions();
    MixedOperation<InstallPlan, InstallPlanList, Resource<InstallPlan>> installPlans();
    MixedOperation<Subscription, SubscriptionList, Resource<Subscription>> subscriptions();
    NonNamespaceOperation<Operator, OperatorList, Resource<Operator>> operators();
}

Operator Management

Machine and Node Management

Machine lifecycle management and node configuration through machine.openshift.io and machineconfiguration.openshift.io API groups.

OpenShiftMachineAPIGroupDSL machine();
MachineConfigurationAPIGroupDSL machineConfigurations();

interface MachineConfigurationAPIGroupDSL {
    NonNamespaceOperation<MachineConfig, MachineConfigList, Resource<MachineConfig>> machineConfigs();
    NonNamespaceOperation<MachineConfigPool, MachineConfigPoolList, Resource<MachineConfigPool>> machineConfigPools();
    NonNamespaceOperation<KubeletConfig, KubeletConfigList, Resource<KubeletConfig>> kubeletConfigs();
    NonNamespaceOperation<ContainerRuntimeConfig, ContainerRuntimeConfigList, Resource<ContainerRuntimeConfig>> containerRuntimeConfigs();
}

Machine Management

Monitoring and Observability

Prometheus-based monitoring stack management through the monitoring.coreos.com API group. Includes Prometheus, Alertmanager, and monitoring configuration.

OpenShiftMonitoringAPIGroupDSL monitoring();

interface OpenShiftMonitoringAPIGroupDSL {
    NonNamespaceOperation<Prometheus, PrometheusList, Resource<Prometheus>> prometheuses();
    NonNamespaceOperation<Alertmanager, AlertmanagerList, Resource<Alertmanager>> alertmanagers();
    NonNamespaceOperation<PrometheusRule, PrometheusRuleList, Resource<PrometheusRule>> prometheusRules();
    MixedOperation<ServiceMonitor, ServiceMonitorList, Resource<ServiceMonitor>> serviceMonitors();
    MixedOperation<PodMonitor, PodMonitorList, Resource<PodMonitor>> podMonitors();
}

Monitoring

Multi-cluster Management

Hive-based multi-cluster management for provisioning, configuring, and managing multiple OpenShift clusters through the hive.openshift.io API group.

OpenShiftHiveAPIGroupDSL hive();

interface OpenShiftHiveAPIGroupDSL {
    NonNamespaceOperation<ClusterDeployment, ClusterDeploymentList, Resource<ClusterDeployment>> clusterDeployments();
    NonNamespaceOperation<ClusterImageSet, ClusterImageSetList, Resource<ClusterImageSet>> clusterImageSets();
    NonNamespaceOperation<ClusterPool, ClusterPoolList, Resource<ClusterPool>> clusterPools();
    MixedOperation<MachinePool, MachinePoolList, Resource<MachinePool>> machinePools();
    NonNamespaceOperation<SyncSet, SyncSetList, Resource<SyncSet>> syncSets();
}

Multi-cluster Management

Core Types

// Main Client Interfaces
public interface OpenShiftClient extends KubernetesClient { }
public interface NamespacedOpenShiftClient extends OpenShiftClient, NamespacedKubernetesClient { }

// Configuration
public class OpenShiftConfig extends Config {
    public static final Long DEFAULT_BUILD_TIMEOUT = 5 * 60 * 1000L;
    public static final String BASE_API_GROUP = "openshift.io";
}

// Exception Types  
public class OpenShiftNotAvailableException extends RuntimeException { }

// Utility Types
public class ParameterValue {
    public static ParameterValue pair(String name, String value);
}

Install with Tessl CLI

npx tessl i tessl/maven-io-fabric8--openshift-client

docs

client-setup.md

configuration-management.md

core-resources.md

index.md

machine-management.md

monitoring.md

multicluster-management.md

operator-management.md

security-rbac.md

tile.json