OpenShift Cluster
Provisions a managed OpenShift hosted cluster with a T-shirt sized default node pool, Keycloak OAuth integration, and group-based access control.
API Details
| Field |
Value |
| API Group |
kubernetes.cloud.stakater.com |
| Version |
v1 |
| Kind |
OpenShiftCluster |
| Scope |
Namespace-scoped |
Spec Parameters
All parameters are nested under spec.parameters.
Required
| Field |
Type |
Constraints |
Description |
clusterName |
string |
1–63 characters |
Name of the OpenShift cluster |
Optional
| Field |
Type |
Default |
Description |
version |
string |
4.19 |
OpenShift version. Allowed: 4.18, 4.19, 4.20 |
defaultNodepool.enabled |
boolean |
true |
Create a default node pool with the cluster. Set to false to manage node pools separately via OpenShiftNodePool claims. |
defaultNodepool.size |
string |
medium |
T-shirt size for default node pool nodes. Allowed: small, medium, large, xlarge. Maps to a predefined CPU, memory, and root volume configuration at the platform level. |
defaultNodepool.replicas |
integer |
3 |
Number of nodes in the default node pool (1–10) |
networking.mode |
string |
public |
Network access mode for the cluster API and console. Allowed: public, private |
access.groups |
array |
— |
List of Keycloak group → ClusterRole bindings (see below) |
bootstrap.enabled |
boolean |
false |
When true, the hosting cluster auto-installs core add-ons (Crossplane, ArgoCD, ksp-system). Enable for new clusters; leave disabled for clusters that were bootstrapped manually. |
access.groups[]
| Field |
Type |
Constraints |
Description |
name |
string |
1–253 characters, RFC 1123 subdomain |
Keycloak group name exactly as it appears in the groups claim of the OIDC token. |
role |
string |
1–253 characters |
ClusterRole to bind. Typically, customer-edit or customer-view (managed by the RBAC Permissions Operator), or a built-in such as view, edit, or admin. |
Status Fields
| Field |
Type |
Description |
status.ready |
boolean |
Whether the cluster is ready for use |
status.phase |
string |
Current phase: Initializing, RegistrationPending, or Ready |
status.message |
string |
Human-readable status message explaining the current state |
status.version |
string |
OpenShift cluster version |
status.consoleUrl |
string |
URL to access the OpenShift console |
status.apiEndpoint |
string |
Kubernetes API server endpoint URL |
status.credentials.username |
string |
Bootstrap username for console access |
status.credentials.password |
string |
Bootstrap password (kubeadmin) |
Examples
Minimal
apiVersion: kubernetes.cloud.stakater.com/v1
kind: OpenShiftCluster
metadata:
name: my-cluster
namespace: my-tenant
spec:
parameters:
clusterName: my-cluster
Full
apiVersion: kubernetes.cloud.stakater.com/v1
kind: OpenShiftCluster
metadata:
name: prod-cluster
namespace: my-tenant
spec:
parameters:
clusterName: prod-cluster
version: "4.19"
defaultNodepool:
enabled: true
size: large
replicas: 5
networking:
mode: public
access:
groups:
- name: platform-admins
role: customer-edit
- name: developers
role: customer-view
bootstrap:
enabled: true
How-to Guide
Provision an OpenShift Cluster