Java client library for OpenShift REST APIs, providing fluent DSL access to OpenShift resources and operations.
—
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.
<dependency>
<groupId>io.fabric8</groupId>
<artifactId>openshift-client</artifactId>
<version>7.3.1</version>
</dependency>import io.fabric8.openshift.client.OpenShiftClient;
import io.fabric8.openshift.client.DefaultOpenShiftClient;
import io.fabric8.kubernetes.client.KubernetesClientBuilder;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());
}
}OpenShift Client is built on several key components:
OpenShiftClient provides the main API surface, extending KubernetesClient with OpenShift-specific operationsMixedOperation (namespace-scoped) and NonNamespaceOperation (cluster-scoped) interfacesOpenShiftConfig extends Kubernetes configuration with OpenShift-specific settings like build timeouts and API versioningCore 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);
}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();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();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();
}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();
}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();
}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();
}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();
}// 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