Achieving a highly optimized, performant, and hardened enterprise Red Hat OpenShift Container Platform (OCP) requires managing configurations across multiple layers: the underlying Red Hat Enterprise Linux CoreOS (RHCOS) kernel, the etcd storage layer, the Kubernetes API runtime, and the application namespaces.
1. Performance Tuning & Kernel Optimization
OpenShift manages node-level kernel parameters natively through the Node Tuning Operator (NTO). Rather than logging into nodes to manually change settings, you use declarative Tuned and PerformanceProfile manifests.
Low-Latency & Telco-Grade Workloads
For workloads sensitive to CPU context-switching or packet drops (e.g., telco, financial trading, or low-latency databases), you must implement a PerformanceProfile. This handles CPU pinning, isolation, and kernel real-time (kernel-rt) tracking.
YAML
apiVersion: performance.openshift.io/v1kind: PerformanceProfilemetadata: name: cnf-low-latency-profilespec: # Allocates specific host nodes via MachineConfigPool labels nodeSelector: node-role.kubernetes.io/worker-cnf: "" # Separates background overhead tasks from app processing cpu: isolated: "4-15,20-31" # Dedicated to application pods reserved: "0-3,16-19" # Kept for OS, Kubelet, and OpenShift agents hugepages: defaultLargePageSize: "1G" pages: - size: "1G" count: 16 node: 0 # Locks hugepages directly to NUMA node 0 numa: topologyPolicy: "single-numa-node" realTimeKernel: enabled: true # Converts underlying kernel to RHCOS real-time
Sysctl Networking Performance Enhancements
To maximize throughput for network-heavy edge APIs, use a custom Tuned manifest to adjust socket read/write limits directly at the network layer:
YAML
apiVersion: tuned.openshift.io/v1kind: Tunedmetadata: name: high-throughput-network namespace: openshift-cluster-node-tuning-operatorspec: profile: - name: ingress-network-tuning data: | [sysctl] net.core.somaxconn = 8192 net.ipv4.tcp_max_syn_backlog = 16384 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 recommend: - profile: ingress-network-tuning match: - label: node-role.kubernetes.io/worker
2. ETCD Performance Tuning
The etcd database is the single source of truth for your cluster’s state. If storage IOPS drop or latency gets too high, the entire cluster plane can become unstable.
Operational Sizing Rules
- Disk Hardware Requirement: Do not run OpenShift control plane nodes on slow storage. Your control plane disks must sustain at least 500–1000 continuous IOPS with low latency (frequently tested using
fiobenchmarking). - Defragmentation and Compaction: OpenShift handles etcd compaction automatically, but if you churn through millions of temporary objects or objects are repeatedly deleted, your database may develop fragmented space. If database metrics reveal it is approaching the historical 8GB limit, trigger an explicit manual defragmentation:
Bash
# Run defragmentation against all active ETCD pods on your control plane nodesfor pod in $(oc get pods -n openshift-etcd -l app=etcd -o jsonpath='{.items[*].metadata.name}'); do oc rsh -n openshift-etcd $pod etcdctl defrag --cluster \ --cacert=/etc/kubernetes/static-pod-resources/etcd-member/ca.crt \ --cert=/etc/kubernetes/static-pod-resources/etcd-member/etcd-url-signer.crt \ --key=/etc/kubernetes/static-pod-resources/etcd-member/etcd-url-signer.keydone
3. Storage & Application Resource Optimization
To prevent individual namespaces from hogging shared cluster resources, implement rigorous platform governance boundaries.
Platform Boundary Controls
Enforce platform restrictions across namespaces to prevent resource starvation issues. Use a LimitRange to inject sensible defaults and a ResourceQuota to cap absolute consumption:
YAML
apiVersion: v1kind: LimitRangemetadata: name: default-app-limits namespace: core-banking-prodspec: limits: - type: Container default: # Applied automatically if a developer forgets to declare resources cpu: "1" memory: 1Gi defaultRequest: cpu: "200m" memory: 512Mi---apiVersion: v1kind: ResourceQuotametadata: name: billing-team-cap namespace: core-banking-prodspec: hard: pods: "20" requests.cpu: "10" requests.memory: 20Gi limits.cpu: "20" limits.memory: 40Gi requests.storage: 100Gi
4. Comprehensive Platform Hardening
Hardening your environment involves shifting away from default configurations toward an absolute Zero-Trust security architecture.
A. Encrypting Sensitive Data at Rest (ETCD Encryption)
By default, secrets stored inside etcd are obfuscated using base64 but are not cryptographically encrypted on disk. To enable full AES-GCM software data-at-rest encryption across your control plane nodes, apply a change to the main API Server configuration:
YAML
apiVersion: config.openshift.io/v1kind: APIServermetadata: name: clusterspec: encryption: type: aescbc # Enables AES-CBC encryption for Secrets and ConfigMaps
Note: Once applied, OpenShift automatically orchestrates a rolling update across your control plane nodes to migrate and encrypt existing resource objects.
B. Enforcing Strict Pod Security Admissions (PSA)
OpenShift utilizes built-in Pod Security Standards to prevent containers from exploiting host node access. You must enforce the restricted profile on all non-infrastructure namespaces. This prevents containers from running as root, running with host network access, or mounting dangerous volumes:
YAML
# Apply labels to force namespaces into strict compliance boundariesoc label namespace public-web-app \ pod-security.kubernetes.io/enforce=restricted \ pod-security.kubernetes.io/audit=restricted \ pod-security.kubernetes.io/warn=restricted
C. Locking Down Network Layer Domains
By default, pods within a Kubernetes cluster can talk to any other pod across any namespace. To mitigate lateral movement risks during a security incident, apply a Zero-Trust Network Policy to drop all unmapped inbound traffic:
YAML
apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata: name: default-deny-all namespace: data-processing-prodspec: podSelector: {} # Target all pods in this namespace policyTypes: - Ingress # Drop all incoming traffic unless explicitly permitted by another rule
D. Automated Compliance Tracking (Compliance Operator)
To continuously check your configurations against compliance frameworks like CIS Benchmarks, PCI-DSS, or NIST-800-53, deploy the official OpenShift Compliance Operator. It scans your RHCOS nodes and cluster manifests, flagging any deviations from your security baselines:
YAML
apiVersion: compliance.openshift.io/v1alpha1kind: ScanSettingBindingmetadata: name: cis-compliance-check namespace: openshift-complianceprofiles: - name: ocp4-cis-node # Validates OS configuration against the CIS benchmark kind: Profile apiGroup: compliance.openshift.io/v1alpha1 - name: ocp4-cis # Validates cluster API platform rules kind: Profile apiGroup: compliance.openshift.io/v1alpha1settings: name: default-auto-remediate kind: ScanSetting apiGroup: compliance.openshift.io/v1alpha1
By combining NTO kernel performance tuning, proactive etcd scaling, strict resource quotas, and multi-layered security controls, your OpenShift clusters can safely support demanding enterprise workloads under a robust security posture.