Skip to main content

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.

ParameterDescriptionExample / possible valuesRequired
nameWorkload name (defaults to the component ID if omitted)payments-apiNo
namespaceKubernetes namespace; created if missingdefaultNo
imageContainer image to runregistry.example.com/app:v1.2Yes
replicasReplica count1No
cpuRequestCPU request per container250mNo
cpuLimitCPU limit per container500mNo
memoryRequestMemory request per container256MiNo
memoryLimitMemory limit per container512MiNo
portPrimary container port8080No
protocolPort protocolTCP or UDPNo
envVarsJSON-encoded environment variables{"KEY":"value"}No
workloadTypeWorkload kindDeployment or StatefulSetNo
serviceAccountNameService account to run the pods underapp-saNo
commandContainer command override (JSON array)["/bin/sh","-c"]No
argsContainer args override (JSON array)["--flag","value"]No
volumeMountsJSON-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.

ParameterDescriptionExample / possible valuesRequired
namePolicy nameweb-tier-policyYes
policyTypeDirection the policy governsIngress (default), Egress, or BothNo
ingressRulesJSON-encoded ingress rules[{"fromPort":8080,"protocol":"tcp","sourceCidr":"10.0.0.0/8"}]No
egressRulesJSON-encoded egress rules[{"fromPort":443,"protocol":"tcp","destCidr":"0.0.0.0/0"}]No
podSelectorJSON 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.

ParameterDescriptionExample / possible valuesRequired
nameService namepayments-svcYes
portService port80Yes
targetPortTarget container port8080Yes
protocolService protocolTCP (default) or UDPNo
serviceTypeKubernetes service typeClusterIP (default), NodePort, LoadBalancerNo
createRouteCreate an OpenShift Routefalse (default) or trueNo
routeHostnameCustom hostname for the Routepayments.example.comNo
routeTlsTerminationRoute TLS termination modeedge, passthrough, reencryptNo

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.

ParameterDescriptionExample / possible valuesRequired
nameVM namelegacy-app-vmYes
namespaceNamespace for the VMdefaultNo
imageContainer disk image or DataVolume source URLquay.io/containerdisks/fedora:latestYes
cpuCoresNumber of CPU cores1No
memorySizeGiMemory size2GiNo
diskSizeGiRoot disk size20GiNo
storageClassNameStorageClass for the DataVolume (defaults to cluster default)trident-nfsNo
networkNameAdditional network attachment (multus)br1-networkNo
cloudInitUserDataBase64-encoded cloud-init user-dataI2Nsb3VkLWNvbmZpZw==No
sshPublicKeySSH public key to injectssh-rsa AAAAB3Nza...No
runStrategyVM run strategyAlways (default), RerunOnFailure, Manual, HaltedNo

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.

ParameterDescriptionExample / possible valuesRequired
namePVC namedata-pvcYes
storageSizeRequested storage size10GiYes
storageClassNameStorageClass nametrident-nfs (default)No
accessModePVC access modeReadWriteOnce (default), ReadWriteMany, ReadOnlyManyNo

Example (fully parameterized):

{
"type": "Storage.CaaS.OpenshiftPersistentVolume",
"parameters": {
"name": "data-pvc",
"storageSize": "10Gi",
"storageClassName": "trident-nfs",
"accessMode": "ReadWriteOnce"
}
}