OpenShift Components
Reference for every OpenShift offer in the Fractal Cloud catalogue. Parameters and their required flags are sourced from the agent param contract (FRA-2955); each offer includes a fully-parameterized JSON example.
CustomWorkloads
CustomWorkloads.CaaS.OpenshiftWorkload
A containerised workload deployed on OpenShift as a Deployment or StatefulSet. Creates the target namespace if it does not already exist and applies CPU/memory requests and limits per container.
| Parameter | Description | Example / possible values | Required |
|---|---|---|---|
| name | Workload name (defaults to the component ID if omitted) | payments-api | No |
| namespace | Kubernetes namespace; created if missing | default | No |
| image | Container image to run | registry.example.com/app:v1.2 | Yes |
| replicas | Replica count | 1 | No |
| cpuRequest | CPU request per container | 250m | No |
| cpuLimit | CPU limit per container | 500m | No |
| memoryRequest | Memory request per container | 256Mi | No |
| memoryLimit | Memory limit per container | 512Mi | No |
| port | Primary container port | 8080 | No |
| protocol | Port protocol | TCP or UDP | No |
| envVars | JSON-encoded environment variables | {"KEY":"value"} | No |
| workloadType | Workload kind | Deployment or StatefulSet | No |
| serviceAccountName | Service account to run the pods under | app-sa | No |
| command | Container command override (JSON array) | ["/bin/sh","-c"] | No |
| args | Container args override (JSON array) | ["--flag","value"] | No |
| volumeMounts | JSON-encoded volume mount specs | [{"name":"data","mountPath":"/data"}] | No |
Example (fully parameterized):
{
"type": "CustomWorkloads.CaaS.OpenshiftWorkload",
"parameters": {
"name": "payments-api",
"namespace": "default",
"image": "registry.example.com/app:v1.2",
"replicas": 1,
"cpuRequest": "250m",
"cpuLimit": "500m",
"memoryRequest": "256Mi",
"memoryLimit": "512Mi",
"port": 8080,
"protocol": "TCP",
"envVars": "{\"KEY\":\"value\"}",
"workloadType": "Deployment",
"serviceAccountName": "app-sa",
"command": "[\"/bin/sh\",\"-c\"]",
"args": "[\"--flag\",\"value\"]",
"volumeMounts": "[{\"name\":\"data\",\"mountPath\":\"/data\"}]"
}
}
NetworkAndCompute
NetworkAndCompute.CaaS.OpenshiftSecurityGroup
A Kubernetes NetworkPolicy — the CaaS equivalent of an IaaS security group. Ingress and egress rules are supplied as JSON and applied to the pods matched by the pod selector in the workload's namespace.
| Parameter | Description | Example / possible values | Required |
|---|---|---|---|
| name | Policy name | web-tier-policy | Yes |
| policyType | Direction the policy governs | Ingress (default), Egress, or Both | No |
| ingressRules | JSON-encoded ingress rules | [{"fromPort":8080,"protocol":"tcp","sourceCidr":"10.0.0.0/8"}] | No |
| egressRules | JSON-encoded egress rules | [{"fromPort":443,"protocol":"tcp","destCidr":"0.0.0.0/0"}] | No |
| podSelector | JSON label selector (defaults to all pods) | {"app":"frontend"} | No |
Example (fully parameterized):
{
"type": "NetworkAndCompute.CaaS.OpenshiftSecurityGroup",
"parameters": {
"name": "web-tier-policy",
"policyType": "Ingress",
"ingressRules": "[{\"fromPort\":8080,\"protocol\":\"tcp\",\"sourceCidr\":\"10.0.0.0/8\"}]",
"egressRules": "[{\"fromPort\":443,\"protocol\":\"tcp\",\"destCidr\":\"0.0.0.0/0\"}]",
"podSelector": "{\"app\":\"frontend\"}"
}
}
NetworkAndCompute.CaaS.OpenshiftService
A Kubernetes Service with an optional OpenShift Route for ingress. Follows the ECS Service dependency pattern, resolving the backend pod selector and namespace from the linked workload.
| Parameter | Description | Example / possible values | Required |
|---|---|---|---|
| name | Service name | payments-svc | Yes |
| port | Service port | 80 | Yes |
| targetPort | Target container port | 8080 | Yes |
| protocol | Service protocol | TCP (default) or UDP | No |
| serviceType | Kubernetes service type | ClusterIP (default), NodePort, LoadBalancer | No |
| createRoute | Create an OpenShift Route | false (default) or true | No |
| routeHostname | Custom hostname for the Route | payments.example.com | No |
| routeTlsTermination | Route TLS termination mode | edge, passthrough, reencrypt | No |
Example (fully parameterized):
{
"type": "NetworkAndCompute.CaaS.OpenshiftService",
"parameters": {
"name": "payments-svc",
"port": 80,
"targetPort": 8080,
"protocol": "TCP",
"serviceType": "ClusterIP",
"createRoute": true,
"routeHostname": "payments.example.com",
"routeTlsTermination": "edge"
}
}
NetworkAndCompute.IaaS.OpenshiftVirtualMachine
A virtual machine managed via OpenShift Virtualization (KubeVirt). Runs traditional VM workloads on the OpenShift Bare Metal cluster alongside containers, with cloud-init and SSH key injection.
| Parameter | Description | Example / possible values | Required |
|---|---|---|---|
| name | VM name | legacy-app-vm | Yes |
| namespace | Namespace for the VM | default | No |
| image | Container disk image or DataVolume source URL | quay.io/containerdisks/fedora:latest | Yes |
| cpuCores | Number of CPU cores | 1 | No |
| memorySizeGi | Memory size | 2Gi | No |
| diskSizeGi | Root disk size | 20Gi | No |
| storageClassName | StorageClass for the DataVolume (defaults to cluster default) | trident-nfs | No |
| networkName | Additional network attachment (multus) | br1-network | No |
| cloudInitUserData | Base64-encoded cloud-init user-data | I2Nsb3VkLWNvbmZpZw== | No |
| sshPublicKey | SSH public key to inject | ssh-rsa AAAAB3Nza... | No |
| runStrategy | VM run strategy | Always (default), RerunOnFailure, Manual, Halted | No |
Example (fully parameterized):
{
"type": "NetworkAndCompute.IaaS.OpenshiftVirtualMachine",
"parameters": {
"name": "legacy-app-vm",
"namespace": "default",
"image": "quay.io/containerdisks/fedora:latest",
"cpuCores": 1,
"memorySizeGi": "2Gi",
"diskSizeGi": "20Gi",
"storageClassName": "trident-nfs",
"networkName": "br1-network",
"cloudInitUserData": "I2Nsb3VkLWNvbmZpZw==",
"sshPublicKey": "ssh-rsa AAAAB3Nza...",
"runStrategy": "Always"
}
}
Storage
Storage.CaaS.OpenshiftPersistentVolume
A PersistentVolumeClaim backed by NetApp Trident (NFS StorageClass). The namespace is resolved from the linked workload when not set explicitly.
| Parameter | Description | Example / possible values | Required |
|---|---|---|---|
| name | PVC name | data-pvc | Yes |
| storageSize | Requested storage size | 10Gi | Yes |
| storageClassName | StorageClass name | trident-nfs (default) | No |
| accessMode | PVC access mode | ReadWriteOnce (default), ReadWriteMany, ReadOnlyMany | No |
Example (fully parameterized):
{
"type": "Storage.CaaS.OpenshiftPersistentVolume",
"parameters": {
"name": "data-pvc",
"storageSize": "10Gi",
"storageClassName": "trident-nfs",
"accessMode": "ReadWriteOnce"
}
}