Initial commit: OpenShift expert EEM knowledge base for HuggingFace
Browse files3,820 justified beliefs covering the operator-driven platform model,
networking, virtualization, security, edge deployments, and 50+
OpenShift subsystems. Includes 904 exploration entries as provenance.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This view is limited to 50 files because it contains too many changes. Β See raw diff
- .gitignore +3 -0
- CLAUDE.md +41 -0
- README.md +163 -0
- entries/2026/03/05/documentation-red_hat_openshift_cluster_observability_operator-1-latest-html-abo.md +35 -0
- entries/2026/03/05/en-documentation-builds_for_red_hat_openshift-17.md +49 -0
- entries/2026/03/05/en-documentation-monitoring_stack_for_red_hat_openshift-417-html-managing_alerts.md +111 -0
- entries/2026/03/05/en-documentation-monitoring_stack_for_red_hat_openshift-421.md +44 -0
- entries/2026/03/05/en-documentation-openshift_cluster_manager-1-latest.md +34 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-410-html-single-storage-index.md +89 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-415-html-cli_tools-openshift-cli-o.md +66 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-415-html-operators-understanding-o.md +141 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-415-html-operators-user-tasks.md +148 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-index.md +31 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-learn_more_about_op.md +52 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-oke-about.md +43 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-providing-feedback-.md +13 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-welcome-index.md +29 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about.md +31 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-assoc.md +52 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-chang.md +99 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-index.md +38 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-legal.md +11 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-netwo.md +92 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-using.md +115 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-verif.md +93 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking.md +36 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-api-index.md +78 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-compatibilit.md +48 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-editing-kube.md +87 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-index.md +32 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-understandin.md +51 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview.md +33 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-about-the-mu.md +47 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-admission-pl.md +79 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-architecture.md +79 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-control-plan.md +70 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-index.md +33 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-ocm-overview.md +49 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-understandin.md +75 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture.md +36 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authentication_and_author.md +11 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-author.md +58 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-index.md +38 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-legal-.md +11 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-localr.md +65 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-locals.md +70 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-resour.md +63 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-selfsu.md +75 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-subjec.md +66 -0
- entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-tokenr.md +59 -0
.gitignore
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
reasons.db
|
| 2 |
+
reasons.db-shm
|
| 3 |
+
reasons.db-wal
|
CLAUDE.md
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# CLAUDE.md β OpenShift Expert
|
| 2 |
+
|
| 3 |
+
Expert agent for explaining OpenShift Container Platform behavior, architecture, and operational patterns. Knowledge is stored in `reasons.db` β a justified belief network with retraction cascades, not a flat knowledge base.
|
| 4 |
+
|
| 5 |
+
## Mission
|
| 6 |
+
|
| 7 |
+
Help humans and LLM agents understand OpenShift platform architecture, operator lifecycle, networking, security, virtualization, and edge deployment patterns. Answers should be grounded in the belief network (`reasons.db`), not parametric knowledge. Use `reasons search`, `reasons explain`, and `reasons show` to find and cite beliefs before answering.
|
| 8 |
+
|
| 9 |
+
## How to Answer Questions
|
| 10 |
+
|
| 11 |
+
1. `reasons search "relevant terms"` to find beliefs
|
| 12 |
+
2. `reasons explain NODE` to trace justification chains
|
| 13 |
+
3. Synthesize an answer grounded in the beliefs found
|
| 14 |
+
4. Cite node IDs so the questioner can audit the chain
|
| 15 |
+
|
| 16 |
+
## What This Expert Knows
|
| 17 |
+
|
| 18 |
+
- Platform model: operator-driven immutable infrastructure, RHCOS, MCO
|
| 19 |
+
- Hosted Control Planes (HCP): multi-tenancy, topology variants
|
| 20 |
+
- Networking: OVN-Kubernetes, Multus, SR-IOV, IPsec, egress firewalls, network policies
|
| 21 |
+
- Virtualization: OpenShift Virtualization (CNV/OCP-Virt), live migration, VM management
|
| 22 |
+
- Operators & OLM: Operator Lifecycle Manager, OperatorHub, File-Based Catalogs
|
| 23 |
+
- Security: SCCs, RBAC, OAuth, webhook admission, network policies
|
| 24 |
+
- Builds & CI/CD: S2I, Shipwright, Jenkins, GitOps, image streams
|
| 25 |
+
- Edge: ZTP, TALM, Single Node OpenShift (SNO), vDU workloads
|
| 26 |
+
- Observability: monitoring, logging, Network Observability (NetObserv)
|
| 27 |
+
- Storage: CSI drivers, dynamic provisioning, OADP backup
|
| 28 |
+
- Installation: IPI/UPI, platform-specific (AWS, Nutanix, IBM Cloud, bare metal, Power)
|
| 29 |
+
- Node management: MachineConfig, autoscaling, health checks, tuned profiles
|
| 30 |
+
|
| 31 |
+
## Skills Available
|
| 32 |
+
|
| 33 |
+
```bash
|
| 34 |
+
reasons search QUERY # Find beliefs by keyword
|
| 35 |
+
reasons show NODE # Full details + dependents
|
| 36 |
+
reasons explain NODE # Trace justification chain
|
| 37 |
+
reasons list # All nodes with status
|
| 38 |
+
reasons list --premises # Foundation beliefs
|
| 39 |
+
reasons list --has-dependents # Load-bearing beliefs
|
| 40 |
+
reasons export-markdown -o beliefs.md # Export readable snapshot
|
| 41 |
+
```
|
README.md
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
schema_version: "1.0"
|
| 3 |
+
type: eem
|
| 4 |
+
project_name: openshift-expert
|
| 5 |
+
domain:
|
| 6 |
+
- openshift
|
| 7 |
+
- kubernetes
|
| 8 |
+
- container-platform
|
| 9 |
+
- cloud-infrastructure
|
| 10 |
+
license: mit
|
| 11 |
+
base_network: null
|
| 12 |
+
source_repos: []
|
| 13 |
+
beliefs_total: 3820
|
| 14 |
+
beliefs_in: 3820
|
| 15 |
+
beliefs_out: 0
|
| 16 |
+
premises: 3670
|
| 17 |
+
derived: 150
|
| 18 |
+
nogoods: 0
|
| 19 |
+
generator: ftl-reasons/0.41.0
|
| 20 |
+
---
|
| 21 |
+
|
| 22 |
+
# OpenShift Expert
|
| 23 |
+
|
| 24 |
+
Expert knowledge base for **OpenShift Container Platform** architecture, operations, and deployment patterns. Contains 3,820 justified beliefs covering the operator-driven platform model, networking, virtualization, security, edge deployments, and 50+ subsystems.
|
| 25 |
+
|
| 26 |
+
## What is this?
|
| 27 |
+
|
| 28 |
+
This is an **External Epistemic Memory** (EEM) β a model-agnostic knowledge base that any LLM can use via the `reasons` CLI or tool calling. Unlike a LoRA or fine-tune, this knowledge is not baked into model weights. It is external, inspectable, correctable, and works with any model.
|
| 29 |
+
|
| 30 |
+
## Stats
|
| 31 |
+
|
| 32 |
+
| Metric | Value |
|
| 33 |
+
|--------|-------|
|
| 34 |
+
| Total beliefs | 3,820 |
|
| 35 |
+
| Status | 3,820 IN / 0 OUT |
|
| 36 |
+
| Premises (observations) | 3,670 |
|
| 37 |
+
| Derived (justified conclusions) | 150 |
|
| 38 |
+
| Nogoods (contradictions) | 0 |
|
| 39 |
+
| Retraction rate | 0% |
|
| 40 |
+
| Max derivation depth | 7 |
|
| 41 |
+
|
| 42 |
+
## Top Topics
|
| 43 |
+
|
| 44 |
+
| Topic | Beliefs |
|
| 45 |
+
|-------|---------|
|
| 46 |
+
| ocp | 560 |
|
| 47 |
+
| default | 312 |
|
| 48 |
+
| api | 224 |
|
| 49 |
+
| cluster | 192 |
|
| 50 |
+
| operator | 192 |
|
| 51 |
+
| openshift | 159 |
|
| 52 |
+
| namespace | 124 |
|
| 53 |
+
| node | 120 |
|
| 54 |
+
| hcp | 110 |
|
| 55 |
+
| config | 108 |
|
| 56 |
+
| network | 99 |
|
| 57 |
+
| image | 91 |
|
| 58 |
+
| virt | 91 |
|
| 59 |
+
| install | 85 |
|
| 60 |
+
| supported | 74 |
|
| 61 |
+
| policy | 72 |
|
| 62 |
+
|
| 63 |
+
## Domain Coverage
|
| 64 |
+
|
| 65 |
+
- **OCP Core Platform**: operator-driven immutable model, cluster versioning, install-time constraints, platform topology variants (511 beliefs)
|
| 66 |
+
- **Hosted Control Planes (HCP)**: multi-tenant control planes, NodePool management, hosted cluster lifecycle (107 beliefs)
|
| 67 |
+
- **CLI & API**: `oc` commands, API resources, resource management, debugging (63 beliefs)
|
| 68 |
+
- **OpenShift Virtualization (CNV)**: VM lifecycle, live migration, virtual networking, storage for VMs (82 beliefs)
|
| 69 |
+
- **Networking β OVN-Kubernetes**: default CNI, pod networking, service routing, hybrid overlay (27 beliefs)
|
| 70 |
+
- **Networking β Policy & Firewalls**: network policies, egress firewalls, admin network policies, user-defined networks (40 beliefs)
|
| 71 |
+
- **Networking β SR-IOV**: hardware-accelerated networking, VF management, node policies (28 beliefs)
|
| 72 |
+
- **Networking β Ingress & Routes**: HAProxy ingress controller, route configuration, TLS termination (34 beliefs)
|
| 73 |
+
- **Networking β IPsec & Encryption**: IPsec tunnel configuration, node-to-node encryption (12 beliefs)
|
| 74 |
+
- **Operators & OLM**: Operator Lifecycle Manager, OperatorHub, File-Based Catalogs, bundle management (87 beliefs)
|
| 75 |
+
- **Etcd**: cluster database, backup/restore, performance tuning, defragmentation (37 beliefs)
|
| 76 |
+
- **Security β SCCs & RBAC**: Security Context Constraints, role-based access control, project isolation (28 beliefs)
|
| 77 |
+
- **Security β OAuth & Authentication**: OAuth server, identity providers, token management (24 beliefs)
|
| 78 |
+
- **Security β Webhook Admission**: validating/mutating webhooks, enforcement model (16 beliefs)
|
| 79 |
+
- **Builds & Images**: S2I builds, Shipwright, image streams, image registry, samples operator (70 beliefs)
|
| 80 |
+
- **CI/CD & GitOps**: Jenkins pipelines, OpenShift GitOps (ArgoCD), deployment strategies (36 beliefs)
|
| 81 |
+
- **Edge β ZTP & SNO**: Zero Touch Provisioning, Single Node OpenShift, TALM upgrades, vDU workloads (53 beliefs)
|
| 82 |
+
- **Node Management**: MachineConfig Operator, machine sets, autoscaling, health checks, tuned profiles (57 beliefs)
|
| 83 |
+
- **Observability**: monitoring stack, logging, Network Observability (NetObserv), flow collection (54 beliefs)
|
| 84 |
+
- **Console**: web console, console plugins, developer/admin perspectives (43 beliefs)
|
| 85 |
+
- **Storage**: CSI drivers, dynamic provisioning, persistent volumes (10 beliefs)
|
| 86 |
+
- **Backup & DR**: OADP, etcd backup, cluster restore (13 beliefs)
|
| 87 |
+
- **Platform Variants**: Nutanix, IBM Cloud, IBM Power, bare metal, ROSA, OCI (101 beliefs)
|
| 88 |
+
- **RHCOS & Node OS**: Red Hat CoreOS, immutable OS, ignition, ostree updates (13 beliefs)
|
| 89 |
+
- **Additional topics**: NMState, MetalLB, templates, jobs, probes, ConfigMaps, HPA, PDB, scheduler, RHOSO, RHOAI (remaining beliefs)
|
| 90 |
+
|
| 91 |
+
## How to Use
|
| 92 |
+
|
| 93 |
+
### Import into a reasons database
|
| 94 |
+
|
| 95 |
+
```bash
|
| 96 |
+
reasons init
|
| 97 |
+
reasons import-json network.json
|
| 98 |
+
```
|
| 99 |
+
|
| 100 |
+
### Query beliefs
|
| 101 |
+
|
| 102 |
+
```bash
|
| 103 |
+
reasons search "operator lifecycle"
|
| 104 |
+
reasons explain operator-driven-immutable-platform-model
|
| 105 |
+
reasons show install-time-irreversible-constraints
|
| 106 |
+
```
|
| 107 |
+
|
| 108 |
+
### Use as an MCP tool or CLI
|
| 109 |
+
|
| 110 |
+
Any LLM agent that can call `reasons search`, `reasons show`, and `reasons explain` can use this knowledge base. The agent does not need to be told it is an expert β the knowledge base speaks for itself.
|
| 111 |
+
|
| 112 |
+
## Key Beliefs
|
| 113 |
+
|
| 114 |
+
| Node | Summary |
|
| 115 |
+
|------|---------|
|
| 116 |
+
| `operator-driven-immutable-platform-model` | The entire OpenShift platform operates through an operator-driven model with immutable infrastructure |
|
| 117 |
+
| `install-time-irreversible-constraints` | Multiple cluster-defining decisions are permanently locked at install time and cannot be changed |
|
| 118 |
+
| `observability-follows-platform-enablement-pattern` | OpenShift observability is a specific instance of the platform-wide multi-component enablement pattern |
|
| 119 |
+
| `edge-fleet-management-pipeline` | Edge cluster lifecycle follows a managed pipeline: ZTP + GitOps provisions, TALM orchestrates upgrades |
|
| 120 |
+
| `multi-cni-network-architecture` | OpenShift uses a layered CNI architecture: OVN-Kubernetes primary, Multus for additional networks |
|
| 121 |
+
| `webhook-admission-enforcement-model` | Webhook admission follows a constrained enforcement model with TLS requirements |
|
| 122 |
+
| `node-config-immutable-delivery-pipeline` | Node configuration follows an immutable delivery pipeline via MachineConfig Operator |
|
| 123 |
+
| `complete-software-delivery-from-build-to-console` | OpenShift provides a unified software delivery model covering application and operator lifecycles |
|
| 124 |
+
| `platform-model-with-topology-variants` | Single operator-driven platform model recognizing two sanctioned topology variants |
|
| 125 |
+
| `consoleplugin-compat-level-1` | ConsolePlugin has Compatibility Level 1: stable for at least 12 months or 3 minor releases |
|
| 126 |
+
|
| 127 |
+
## Sources
|
| 128 |
+
|
| 129 |
+
Built from exploration of OpenShift Container Platform documentation, API references, and operational experience across networking, virtualization, security, edge, and platform management subsystems.
|
| 130 |
+
|
| 131 |
+
## Files
|
| 132 |
+
|
| 133 |
+
| File | Description |
|
| 134 |
+
|------|-------------|
|
| 135 |
+
| `network.json` | Full belief network (machine-readable, portable) |
|
| 136 |
+
| `reasons.db` | SQLite database (gitignored, regenerate with `reasons import-json network.json`) |
|
| 137 |
+
| `CLAUDE.md` | Agent instructions for using this knowledge base |
|
| 138 |
+
| `entries/` | 904 exploration entries β raw observations behind the premises |
|
| 139 |
+
|
| 140 |
+
## Quality
|
| 141 |
+
|
| 142 |
+
- All 3,820 beliefs are IN (none retracted)
|
| 143 |
+
- 3,670 premises grounded in direct observations of OpenShift behavior and documentation
|
| 144 |
+
- 150 derived beliefs justified from premises via SL justifications
|
| 145 |
+
- 0 nogoods β no contradictions detected
|
| 146 |
+
- Max derivation depth of 7, indicating multi-step reasoning chains
|
| 147 |
+
- Built and reviewed using ftl-reasons derive and review-beliefs pipeline
|
| 148 |
+
|
| 149 |
+
## Limitations
|
| 150 |
+
|
| 151 |
+
- Focused on OpenShift Container Platform as of mid-2026
|
| 152 |
+
- OpenShift evolves across minor releases; some beliefs may become stale
|
| 153 |
+
- Heavier coverage of networking, virtualization, and operators than storage or serverless
|
| 154 |
+
- Platform variant coverage (Nutanix, IBM, bare metal) varies in depth
|
| 155 |
+
- No ATMS or assumption-based beliefs (single-context TMS only)
|
| 156 |
+
|
| 157 |
+
## Authors
|
| 158 |
+
|
| 159 |
+
- Ben Thomasson ([@benthomasson](https://github.com/benthomasson))
|
| 160 |
+
|
| 161 |
+
## License
|
| 162 |
+
|
| 163 |
+
mit
|
entries/2026/03/05/documentation-red_hat_openshift_cluster_observability_operator-1-latest-html-abo.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/documentation/red_hat_openshift_cluster_observability_operator/1-latest/html/about_red_hat_openshift_cluster_observability_operator/index
|
| 3 |
+
source: sources/documentation-red_hat_openshift_cluster_observability_operator-1-latest-html-abo.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:11
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
## Overview
|
| 13 |
+
The Red Hat OpenShift Cluster Observability Operator (COO) is an operator that provides observability features for OpenShift clusters. This page serves as the introductory landing page for the COO documentation (version 1-latest), covering its purpose and linking to release notes and support information.
|
| 14 |
+
|
| 15 |
+
## Key Concepts
|
| 16 |
+
- **Cluster Observability Operator (COO)** is a dedicated operator for cluster-level observability in OpenShift
|
| 17 |
+
- It is a separate product/operator from the built-in monitoring stack (which uses the Cluster Monitoring Operator)
|
| 18 |
+
- Versioned as "1-latest," indicating it is an independently released component outside the core OpenShift release cycle
|
| 19 |
+
- Maintained by Red Hat as an officially supported operator
|
| 20 |
+
|
| 21 |
+
## Commands and Syntax
|
| 22 |
+
No commands or configuration syntax are provided on this introductory page.
|
| 23 |
+
|
| 24 |
+
## Relationships
|
| 25 |
+
- **Cluster Monitoring Operator (CMO)**: The built-in OpenShift monitoring stack; COO is a complementary/alternative observability solution
|
| 26 |
+
- **OperatorHub / OLM**: COO is installed via the Operator Lifecycle Manager as an optional operator
|
| 27 |
+
- **Observability stack components**: COO likely integrates with or manages Prometheus, Alertmanager, and other observability tooling
|
| 28 |
+
- **OpenShift platform**: Runs on top of OpenShift Container Platform and provides cluster-wide observability
|
| 29 |
+
|
| 30 |
+
## Exam-Relevant Points
|
| 31 |
+
- The Cluster Observability Operator is a **separate operator** from the default Cluster Monitoring Operator
|
| 32 |
+
- COO is an **optional, installable operator** β not part of the default OpenShift installation
|
| 33 |
+
- Know the distinction between COO (newer, dedicated observability operator) and the built-in monitoring stack
|
| 34 |
+
- COO has its own independent versioning ("1-latest") separate from the OpenShift platform version
|
| 35 |
+
|
entries/2026/03/05/en-documentation-builds_for_red_hat_openshift-17.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/builds_for_red_hat_openshift/1.7
|
| 3 |
+
source: sources/en-documentation-builds_for_red_hat_openshift-17.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:11
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
## Overview
|
| 13 |
+
|
| 14 |
+
Builds for Red Hat OpenShift is a standalone product (version 1.7) that provides build capabilities for OpenShift. This is the top-level documentation landing page, serving as a table of contents for the product's documentation set covering installation, configuration, usage, shared resources, authentication, observability, and lifecycle management.
|
| 15 |
+
|
| 16 |
+
## Key Concepts
|
| 17 |
+
|
| 18 |
+
- **Builds for Red Hat OpenShift** is a distinct product from OpenShift's built-in build system (BuildConfig/Build APIs) β it is separately installed, configured, and uninstalled via an operator.
|
| 19 |
+
- The product is versioned independently (1.0 through 1.7), indicating it follows its own release cadence apart from OpenShift platform versions.
|
| 20 |
+
- **Shared Resources CSI Driver** is a component that integrates with Builds, enabling shared resources to be mounted into build pods.
|
| 21 |
+
- The product has its own **authentication model** for runtime operations, separate from but building on OpenShift's auth.
|
| 22 |
+
- **Build controller observability** is a first-class concern with dedicated documentation, suggesting metrics/monitoring integration.
|
| 23 |
+
|
| 24 |
+
## Commands and Syntax
|
| 25 |
+
|
| 26 |
+
No specific commands on this landing page. The documentation sections map to operator lifecycle phases:
|
| 27 |
+
|
| 28 |
+
1. **Install** β Deploy the Builds operator
|
| 29 |
+
2. **Configure** β Set up build environments and defaults
|
| 30 |
+
3. **Work with Builds** β Create and manage build workloads
|
| 31 |
+
4. **Work with Shared Resources** β Configure CSI-based shared resources
|
| 32 |
+
5. **Uninstall** β Remove the operator cleanly
|
| 33 |
+
|
| 34 |
+
## Relationships
|
| 35 |
+
|
| 36 |
+
- **Shipwright** β Builds for Red Hat OpenShift is the Red Hat productized version of the upstream Shipwright project.
|
| 37 |
+
- **Tekton/OpenShift Pipelines** β Builds for Red Hat OpenShift uses Tekton TaskRuns under the hood to execute builds.
|
| 38 |
+
- **OpenShift BuildConfig (legacy)** β This is the modern replacement/alternative to the built-in OpenShift build system (S2I, Docker, Custom strategies).
|
| 39 |
+
- **Shared Resources CSI Driver** β A separate but tightly coupled component for injecting shared secrets/ConfigMaps into builds.
|
| 40 |
+
- **OLM (Operator Lifecycle Manager)** β The product is installed and managed as an operator.
|
| 41 |
+
|
| 42 |
+
## Exam-Relevant Points
|
| 43 |
+
|
| 44 |
+
- Builds for Red Hat OpenShift is a **separately installable operator**, not part of the default OpenShift installation.
|
| 45 |
+
- It is distinct from the legacy OpenShift `Build`/`BuildConfig` API β know the difference.
|
| 46 |
+
- The documentation structure reveals the product's key components: the build controller, shared resources CSI driver, and authentication layer.
|
| 47 |
+
- Shared Resources CSI Driver is documented as its own section, indicating it may be tested as a separate concept.
|
| 48 |
+
- The product supports **observability** features for the build controller (likely Prometheus metrics).
|
| 49 |
+
|
entries/2026/03/05/en-documentation-monitoring_stack_for_red_hat_openshift-417-html-managing_alerts.md
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/monitoring_stack_for_red_hat_openshift/4.17/html/managing_alerts/managing-alerts-as-an-administrator
|
| 3 |
+
source: sources/en-documentation-monitoring_stack_for_red_hat_openshift-417-html-managing_alerts.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:12
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This page covers how OpenShift Container Platform administrators manage alerts, silences, and alerting rules through the web console's Alerting UI. It details navigating the Administrator perspective, creating and modifying alerting rules for both core platform and user-defined projects, and managing silences to suppress alert notifications.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Alerting UI** has three main pages: **Alerts**, **Silences**, and **Alerting rules**, accessed via **Observe β Alerting** in the Administrator perspective
|
| 15 |
+
- **Silences** suppress alert notifications for a defined duration; they are replicated across Alertmanager pods but can be lost without persistent storage
|
| 16 |
+
- **Editing a silence** expires the existing one and creates a new one with updated configuration
|
| 17 |
+
- **Expired silences** cannot be deleted; they are garbage collected after **120 hours**
|
| 18 |
+
- Two resource types for platform alerting rules:
|
| 19 |
+
- **`AlertingRule`** (apiVersion: `monitoring.openshift.io/v1`) β for creating new platform alerting rules
|
| 20 |
+
- **`AlertRelabelConfig`** (apiVersion: `monitoring.openshift.io/v1`) β for modifying/relabeling existing platform alerts before Alertmanager routes them
|
| 21 |
+
- **`PrometheusRule`** (apiVersion: `monitoring.coreos.com/v1`) β for user-defined project alerting rules
|
| 22 |
+
- Both `AlertingRule` and `AlertRelabelConfig` **must** be created in the `openshift-monitoring` namespace
|
| 23 |
+
- `PrometheusRule` resources go in the user's project namespace
|
| 24 |
+
- A **project label is automatically enforced** on user-defined alerting rules, even if a rule with the same name exists in another project
|
| 25 |
+
|
| 26 |
+
## Commands and Syntax
|
| 27 |
+
|
| 28 |
+
**Create a platform alerting rule (`AlertingRule`):**
|
| 29 |
+
```yaml
|
| 30 |
+
apiVersion: monitoring.openshift.io/v1
|
| 31 |
+
kind: AlertingRule
|
| 32 |
+
metadata:
|
| 33 |
+
name: example
|
| 34 |
+
namespace: openshift-monitoring # MUST be openshift-monitoring
|
| 35 |
+
spec:
|
| 36 |
+
groups:
|
| 37 |
+
- name: example-rules
|
| 38 |
+
rules:
|
| 39 |
+
- alert: ExampleAlert
|
| 40 |
+
for: 1m
|
| 41 |
+
expr: vector(1)
|
| 42 |
+
labels:
|
| 43 |
+
severity: warning
|
| 44 |
+
annotations:
|
| 45 |
+
message: This is an example alert.
|
| 46 |
+
```
|
| 47 |
+
```bash
|
| 48 |
+
oc apply -f example-alerting-rule.yaml
|
| 49 |
+
```
|
| 50 |
+
|
| 51 |
+
**Modify platform alerts with `AlertRelabelConfig`:**
|
| 52 |
+
```yaml
|
| 53 |
+
apiVersion: monitoring.openshift.io/v1
|
| 54 |
+
kind: AlertRelabelConfig
|
| 55 |
+
metadata:
|
| 56 |
+
name: watchdog
|
| 57 |
+
namespace: openshift-monitoring # MUST be openshift-monitoring
|
| 58 |
+
spec:
|
| 59 |
+
configs:
|
| 60 |
+
- sourceLabels: [alertname,severity]
|
| 61 |
+
regex: "Watchdog;none"
|
| 62 |
+
targetLabel: severity
|
| 63 |
+
replacement: critical
|
| 64 |
+
action: Replace
|
| 65 |
+
```
|
| 66 |
+
Relabel actions: `Replace` (default), `Keep`, `Drop`, `HashMod`, `LabelMap`, `LabelDrop`, `LabelKeep`
|
| 67 |
+
|
| 68 |
+
**Create a user-defined project alerting rule (`PrometheusRule`):**
|
| 69 |
+
```yaml
|
| 70 |
+
apiVersion: monitoring.coreos.com/v1
|
| 71 |
+
kind: PrometheusRule
|
| 72 |
+
metadata:
|
| 73 |
+
name: example-alert
|
| 74 |
+
namespace: ns1
|
| 75 |
+
spec:
|
| 76 |
+
groups:
|
| 77 |
+
- name: example
|
| 78 |
+
rules:
|
| 79 |
+
- alert: VersionAlert
|
| 80 |
+
for: 1m
|
| 81 |
+
expr: version{job="prometheus-example-app"} == 0
|
| 82 |
+
labels:
|
| 83 |
+
severity: warning
|
| 84 |
+
annotations:
|
| 85 |
+
message: This is an example alert.
|
| 86 |
+
```
|
| 87 |
+
|
| 88 |
+
**Remove a user-defined alerting rule:**
|
| 89 |
+
```bash
|
| 90 |
+
oc -n <namespace> delete prometheusrule <alerting_rule>
|
| 91 |
+
```
|
| 92 |
+
|
| 93 |
+
## Relationships
|
| 94 |
+
- **Alertmanager** receives and routes alerts; silences and `AlertRelabelConfig` modify what Alertmanager processes
|
| 95 |
+
- **Persistent storage for Alertmanager** is required to prevent silence loss across pod restarts
|
| 96 |
+
- **User-defined monitoring** must be enabled before creating `PrometheusRule` resources
|
| 97 |
+
- **RBAC roles**: `cluster-admin` for full access; `cluster-monitoring-view` + `monitoring-alertmanager-edit` for non-admin silence management; `monitoring-rules-edit` for managing user-defined alerting rules
|
| 98 |
+
- Platform alerting rules use the `monitoring.openshift.io/v1` API; user-defined rules use the `monitoring.coreos.com/v1` (Prometheus Operator) API
|
| 99 |
+
|
| 100 |
+
## Exam-Relevant Points
|
| 101 |
+
- `AlertingRule` and `AlertRelabelConfig` resources **must** be in the `openshift-monitoring` namespace β they are silently rejected otherwise
|
| 102 |
+
- Platform alerting rules use `kind: AlertingRule`; user-defined project rules use `kind: PrometheusRule` β different API groups
|
| 103 |
+
- `AlertRelabelConfig` modifies alerts **before** Alertmanager routes them (not after)
|
| 104 |
+
- A silence **requires a comment** before it can be saved
|
| 105 |
+
- Expired silences are garbage collected after **120 hours**
|
| 106 |
+
- Silences are **replicated across Alertmanager pods** but require persistent storage to survive pod restarts
|
| 107 |
+
- Non-admin users need both `cluster-monitoring-view` and `monitoring-alertmanager-edit` roles to manage silences
|
| 108 |
+
- Non-admin users need the `monitoring-rules-edit` role to create alerting rules in their projects
|
| 109 |
+
- If you create a custom `AlertingRule` based on an existing platform rule, you should **silence the original** to avoid conflicting alerts
|
| 110 |
+
- Alerting rules require `alert`, `for`, `expr`, `labels.severity`, and `annotations.message` fields
|
| 111 |
+
|
entries/2026/03/05/en-documentation-monitoring_stack_for_red_hat_openshift-421.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/monitoring_stack_for_red_hat_openshift/4.21
|
| 3 |
+
source: sources/en-documentation-monitoring_stack_for_red_hat_openshift-421.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:12
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
The Monitoring stack for Red Hat OpenShift 4.21 is a dedicated documentation suite covering the built-in monitoring capabilities of OpenShift Container Platform. It spans core platform monitoring (cluster components) and user workload monitoring (application-level), built on Prometheus and Alertmanager, with guidance on configuration, metrics access, alerting, and troubleshooting.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Monitoring stack** is a separate product documentation set ("Monitoring stack for Red Hat OpenShift"), distinct from the main OCP docs but tightly integrated.
|
| 15 |
+
- **Core platform monitoring** β monitors cluster infrastructure components; configured by cluster admins.
|
| 16 |
+
- **User workload monitoring** β optional feature enabling non-admin users to monitor their own projects/namespaces.
|
| 17 |
+
- **Cluster Monitoring Operator (CMO)** β the operator that manages the monitoring stack; has its own ConfigMap reference and alert reference.
|
| 18 |
+
- **Prometheus** and **Alertmanager** are the underlying components of the monitoring stack.
|
| 19 |
+
- **RHOSO integration** β special configuration exists for clusters running on Red Hat OpenStack Services on OpenShift (metric correlation).
|
| 20 |
+
- **Observability** is a broader umbrella (Red Hat OpenShift Observability) that includes monitoring plus additional tooling for application and infrastructure performance analysis.
|
| 21 |
+
|
| 22 |
+
## Commands and Syntax
|
| 23 |
+
No specific CLI commands are provided on this landing page. The page serves as a table of contents pointing to sub-guides. Key configuration areas referenced:
|
| 24 |
+
- Core platform monitoring configuration (ConfigMap-based via CMO)
|
| 25 |
+
- User workload monitoring enablement and configuration
|
| 26 |
+
- Alert and silence management
|
| 27 |
+
- Metrics access configuration
|
| 28 |
+
|
| 29 |
+
## Relationships
|
| 30 |
+
- **Cluster Monitoring Operator** β manages Prometheus, Alertmanager, and related components
|
| 31 |
+
- **User workload monitoring** β extends core platform monitoring to user namespaces; must be explicitly enabled
|
| 32 |
+
- **Red Hat OpenShift Observability** β superset that includes monitoring plus logging, tracing, and other observability tools
|
| 33 |
+
- **RHOSO** β specialized monitoring configuration for OpenStack-based OCP deployments
|
| 34 |
+
- **Monitoring APIs** β documented under the main OCP 4.21 API reference, not the monitoring stack docs
|
| 35 |
+
|
| 36 |
+
## Exam-Relevant Points
|
| 37 |
+
- Monitoring is split into **core platform** (always on) and **user workload** (opt-in) β know the distinction.
|
| 38 |
+
- The **Cluster Monitoring Operator** is the central operator; configuration is done via **ConfigMaps**, not CRDs.
|
| 39 |
+
- User workload monitoring must be **explicitly enabled** for non-admin users to monitor their projects.
|
| 40 |
+
- Prometheus and Alertmanager are the key components managed by the stack.
|
| 41 |
+
- There is a **supported configuration** boundary β only documented configuration methods are supported (see "Support for monitoring").
|
| 42 |
+
- Alerting rules are **built-in** and managed by the CMO; custom alerting rules can also be created.
|
| 43 |
+
- OpenShift Observability is broader than just monitoring β distinguishing monitoring from the full observability suite is important.
|
| 44 |
+
|
entries/2026/03/05/en-documentation-openshift_cluster_manager-1-latest.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_cluster_manager/1-latest
|
| 3 |
+
source: sources/en-documentation-openshift_cluster_manager-1-latest.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:12
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This is the top-level landing page for **OpenShift Cluster Manager (OCM)** documentation (version 1-latest). It serves as a navigation hub pointing to the main guide for managing clusters, Red Hat Lightspeed integration, and reference material for subscriptions and pay-as-you-go billing.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **OpenShift Cluster Manager (OCM)** is a Red Hat-hosted service for working with OpenShift clusters β creating, managing, and monitoring them from a central interface.
|
| 15 |
+
- OCM is a **SaaS console** (accessible at console.redhat.com), distinct from the per-cluster OpenShift web console.
|
| 16 |
+
- The primary documentation area is **"Managing Clusters"** β covering day-to-day cluster operations through OCM.
|
| 17 |
+
- **Red Hat Lightspeed** is referenced as an integrated AI assistant capability within the Red Hat documentation ecosystem.
|
| 18 |
+
- Subscription and billing models include traditional **Subscription Management** (via Subscription Central) and **Pay-as-You-Go** (via Red Hat Marketplace).
|
| 19 |
+
|
| 20 |
+
## Commands and Syntax
|
| 21 |
+
No commands or configuration syntax are present on this index page. Operational content lives under the linked "Managing Clusters" guide.
|
| 22 |
+
|
| 23 |
+
## Relationships
|
| 24 |
+
- **OpenShift Cluster Manager β Managed OpenShift services**: OCM is the control plane for ROSA (AWS), ARO (Azure), and OSD (GCP/AWS) managed clusters, as well as self-managed OCP clusters registered with Red Hat.
|
| 25 |
+
- **Subscription Central**: Handles entitlements and subscription tracking for clusters managed through OCM.
|
| 26 |
+
- **Red Hat Marketplace / Pay-as-You-Go**: Alternative consumption-based billing model for OpenShift clusters.
|
| 27 |
+
- **Red Hat Lightspeed**: AI-powered documentation assistant integrated across Red Hat products.
|
| 28 |
+
|
| 29 |
+
## Exam-Relevant Points
|
| 30 |
+
- Know that **OpenShift Cluster Manager** is the centralized SaaS interface at `console.redhat.com` used to manage the lifecycle of OpenShift clusters.
|
| 31 |
+
- Understand the distinction between OCM (fleet-level management) and the individual cluster's web console (cluster-level management).
|
| 32 |
+
- Be aware that OpenShift supports both **subscription-based** and **pay-as-you-go** billing models.
|
| 33 |
+
- OCM is relevant for both managed services (ROSA, ARO, OSD) and self-managed OCP clusters that are registered with Red Hat.
|
| 34 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-410-html-single-storage-index.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.10/html-single/storage/index
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-410-html-single-storage-index.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:13
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This page provides a comprehensive overview of storage in OpenShift Container Platform 4.10, covering ephemeral and persistent storage concepts, the PV/PVC lifecycle, access modes, reclaim policies, volume types, and the Container Storage Interface (CSI). It serves as the foundational reference for configuring and managing storage in an OCP cluster.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
|
| 15 |
+
- **Two storage categories**: Ephemeral storage (transient, pod-scoped) and Persistent storage (survives pod lifecycle)
|
| 16 |
+
- **Persistent Volume (PV)**: Cluster-scoped resource representing a piece of storage, provisioned statically by an admin or dynamically via StorageClass
|
| 17 |
+
- **Persistent Volume Claim (PVC)**: Project-scoped request for storage by a developer; once bound to a PV, that PV is scoped to the binding project's namespace
|
| 18 |
+
- **PVs are not namespace-scoped** β they can be shared across the cluster, but once bound to a PVC they are effectively scoped to that PVC's namespace
|
| 19 |
+
- **Access Modes**: ReadWriteOnce (RWO), ReadOnlyMany (ROX), ReadWriteMany (RWX), ReadWriteOncePod (RWOP)
|
| 20 |
+
- **Reclaim Policies**: `Retain` (manual cleanup), `Recycle` (deprecated in OCP 4), `Delete` (removes PV and external storage asset)
|
| 21 |
+
- **Dynamically provisioned volumes are always deleted** when released
|
| 22 |
+
- **Storage Object in Use Protection**: Prevents deletion of PVCs actively used by pods and PVs bound to PVCs (enabled by default)
|
| 23 |
+
- **Ephemeral storage** uses two partitions: **root** (`/var/lib/kubelet/`, `/var/log/`) and optional **runtime** (overlay filesystems, image layers)
|
| 24 |
+
- **Ephemeral storage provides no IOPS or throughput SLAs**
|
| 25 |
+
- **Container Storage Interface (CSI)**: Vendor-neutral API for managing container storage across orchestration systems
|
| 26 |
+
- **Dynamic Provisioning**: Creates storage volumes on-demand, eliminating need for admin pre-provisioning
|
| 27 |
+
- **OpenShift Data Foundation**: Provides agnostic persistent storage supporting file, block, and object storage
|
| 28 |
+
|
| 29 |
+
## Commands and Syntax
|
| 30 |
+
|
| 31 |
+
**Monitor ephemeral storage:**
|
| 32 |
+
```bash
|
| 33 |
+
df -h /var/lib
|
| 34 |
+
```
|
| 35 |
+
|
| 36 |
+
**PV definition example:**
|
| 37 |
+
```yaml
|
| 38 |
+
apiVersion: v1
|
| 39 |
+
kind: PersistentVolume
|
| 40 |
+
metadata:
|
| 41 |
+
name: pv0001
|
| 42 |
+
spec:
|
| 43 |
+
capacity:
|
| 44 |
+
storage: 5Gi
|
| 45 |
+
accessModes:
|
| 46 |
+
- ReadWriteOnce
|
| 47 |
+
persistentVolumeReclaimPolicy: Retain
|
| 48 |
+
```
|
| 49 |
+
|
| 50 |
+
**Delete a PV (manual reclaim):**
|
| 51 |
+
```bash
|
| 52 |
+
oc delete pv <pv-name>
|
| 53 |
+
```
|
| 54 |
+
|
| 55 |
+
**Change reclaim policy:**
|
| 56 |
+
```bash
|
| 57 |
+
oc patch pv <pv-name> -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
|
| 58 |
+
```
|
| 59 |
+
|
| 60 |
+
**List persistent volumes:**
|
| 61 |
+
```bash
|
| 62 |
+
oc get pv
|
| 63 |
+
```
|
| 64 |
+
|
| 65 |
+
## Relationships
|
| 66 |
+
|
| 67 |
+
- **StorageClass** β enables Dynamic Provisioning β creates PVs automatically when PVCs are submitted
|
| 68 |
+
- **PVC** β binds to β **PV** β backed by storage plugin (NFS, EBS, Cinder, vSphere, etc.)
|
| 69 |
+
- **CSI** is the modern interface replacing in-tree volume plugins and FlexVolume
|
| 70 |
+
- **OpenShift Data Foundation** provides the managed storage layer on top of these primitives
|
| 71 |
+
- **Ephemeral storage** relates to node resource management, pod eviction, and resource quotas
|
| 72 |
+
- **RBAC** controls who can provision and consume storage resources
|
| 73 |
+
- **StatefulSets** depend on persistent storage for stateful application deployments
|
| 74 |
+
|
| 75 |
+
## Exam-Relevant Points
|
| 76 |
+
|
| 77 |
+
- **Recycle reclaim policy is deprecated in OCP 4** β dynamic provisioning is the recommended replacement
|
| 78 |
+
- **Dynamically provisioned volumes always use the Delete reclaim policy**
|
| 79 |
+
- **PVs are cluster-scoped; PVCs are project/namespace-scoped**
|
| 80 |
+
- **A PV bound to a PVC cannot be bound to additional PVCs** β effectively one-to-one binding
|
| 81 |
+
- **Storage Object in Use Protection is enabled by default** β prevents data loss from premature deletion
|
| 82 |
+
- **Claims remain unbound indefinitely** if no matching PV exists (they do not fail β they wait)
|
| 83 |
+
- **OCP binds PVCs to the smallest PV that matches** all criteria to minimize waste
|
| 84 |
+
- **Four access modes**: RWO, ROX, RWX, RWOP β know which storage backends support which modes
|
| 85 |
+
- **Supported PV plugins**: AWS EBS, AWS EFS, Azure Disk, Azure File, Cinder, Fibre Channel, GCE PD, HostPath, iSCSI, Local volume, NFS, OpenStack Manila, ODF, VMware vSphere, AliCloud Disk, IBM VPC Block
|
| 86 |
+
- **Manual PV reclaim procedure**: delete PV β clean up data on storage asset β delete or reuse storage asset β create new PV
|
| 87 |
+
- **`oc patch pv`** is the command to change reclaim policy on an existing PV
|
| 88 |
+
- **Ephemeral storage** can cause pod eviction if local storage fills up; pods cannot request guaranteed local storage
|
| 89 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-415-html-cli_tools-openshift-cli-o.md
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.15/html/cli_tools/openshift-cli-oc
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-415-html-cli_tools-openshift-cli-o.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:13
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This page covers the OpenShift CLI (`oc`), the primary command-line tool for managing OpenShift Container Platform clusters. It details installation methods across platforms (Linux, Windows, macOS), authentication procedures, and basic usage commands for project and application management.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- The `oc` CLI is the primary tool for managing OCP projects and applications from the terminal
|
| 15 |
+
- `oc` is ideal for: working with source code, scripting operations, and managing projects when the web console is unavailable
|
| 16 |
+
- The `oc` binary must match the cluster version β earlier versions cannot complete all commands for OCP 4.15
|
| 17 |
+
- When `oc` runs inside a pod without a namespace specified, it defaults to the pod's namespace
|
| 18 |
+
- Authentication headers are only sent over HTTPS transport
|
| 19 |
+
- HTTP proxy access is supported via `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY` environment variables
|
| 20 |
+
- The `--web` flag for `oc login` runs a localhost HTTP server (not HTTPS) β use with caution on multi-user workstations
|
| 21 |
+
|
| 22 |
+
## Commands and Syntax
|
| 23 |
+
|
| 24 |
+
**Installation:**
|
| 25 |
+
- Binary download: `tar xvf <file>`, then move `oc` to a directory on `PATH`
|
| 26 |
+
- RPM (RHEL 8 only, not RHEL 9): `yum install openshift-clients` (requires subscription and enabling `rhocp-4.15-for-rhel-8-x86_64-rpms` repo)
|
| 27 |
+
- Homebrew (macOS): `brew install openshift-cli`
|
| 28 |
+
- Web console: **?** β **Command Line Tools** β download appropriate binary
|
| 29 |
+
|
| 30 |
+
**Authentication:**
|
| 31 |
+
- `oc login -u user1` β interactive login with username/password
|
| 32 |
+
- `oc login <cluster_url> --web` β browser-based login (opens browser automatically)
|
| 33 |
+
- `oc login <cluster_url> --web --callback-port 8280` β specify callback port
|
| 34 |
+
- Copy login command from web console (top-right username dropdown β **Copy login command**) β includes token
|
| 35 |
+
|
| 36 |
+
**Common operations:**
|
| 37 |
+
- `oc new-project my-project` β create a project
|
| 38 |
+
- `oc new-app https://github.com/sclorg/cakephp-ex` β create an app from source
|
| 39 |
+
- `oc get pods -o wide` β list pods with extended info
|
| 40 |
+
- `oc logs <pod-name>` β view pod logs
|
| 41 |
+
- `oc project` β show current project
|
| 42 |
+
- `oc status` β show project status (services, deployments, build configs)
|
| 43 |
+
- `oc api-resources` β list supported API resources
|
| 44 |
+
- `oc help` β general help
|
| 45 |
+
- `oc <command> --help` β help for a specific command
|
| 46 |
+
- `oc explain <resource>` β describe fields of a resource
|
| 47 |
+
|
| 48 |
+
## Relationships
|
| 49 |
+
- **Web Console**: Alternative interface; also provides CLI download links and "Copy login command" feature
|
| 50 |
+
- **Projects/Namespaces**: `oc` operates within the context of a project; `oc new-project` creates them
|
| 51 |
+
- **Source-to-Image (S2I)**: `oc new-app` with a Git URL triggers S2I builds
|
| 52 |
+
- **RBAC/Authentication**: `oc login` authenticates via identity providers configured on the cluster
|
| 53 |
+
- **Subscription Manager**: RPM installation requires an active OCP subscription via RHSM
|
| 54 |
+
- **kubectl**: `oc` extends `kubectl` with OpenShift-specific commands (projects, new-app, etc.)
|
| 55 |
+
|
| 56 |
+
## Exam-Relevant Points
|
| 57 |
+
- **RPM install is NOT supported on RHEL 9** β must use binary download instead
|
| 58 |
+
- The `oc` version must match the cluster version (earlier versions are incompatible)
|
| 59 |
+
- `oc login --web` uses HTTP (not HTTPS) on localhost β security warning for shared workstations
|
| 60 |
+
- `oc status --suggest` provides additional recommendations beyond basic status
|
| 61 |
+
- Proxy environment variables (`HTTP_PROXY`, `HTTPS_PROXY`, `NO_PROXY`) are respected by `oc`
|
| 62 |
+
- `oc api-resources` shows short names (e.g., `cm` for ConfigMaps, `cs` for ComponentStatus) and whether resources are namespaced
|
| 63 |
+
- The web console login command (Copy login command) includes an authentication token β avoids interactive prompts
|
| 64 |
+
- macOS arm64 requires a specific binary variant (`OpenShift v4.15 macOS arm64 Client`)
|
| 65 |
+
- When running `oc` inside a pod, the pod's namespace is used by default if none is specified
|
| 66 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-415-html-operators-understanding-o.md
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.15/html/operators/understanding-operators
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-415-html-operators-understanding-o.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:14
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
|
| 12 |
+
This page covers the foundational concepts of Operators in OpenShift Container Platform 4.15, including what Operators are, the Operator Framework ecosystem (SDK, OLM, Registry, OperatorHub), the Operator maturity model, packaging formats (bundle format and file-based catalogs), and the catalog system used by Operator Lifecycle Manager (OLM) to discover and install Operators.
|
| 13 |
+
|
| 14 |
+
## Key Concepts
|
| 15 |
+
|
| 16 |
+
- **Operators** encode human operational knowledge into software; they package, deploy, and manage Kubernetes applications using Kubernetes APIs and CRDs
|
| 17 |
+
- **Operator Framework** consists of four components: Operator SDK, OLM, Operator Registry, and OperatorHub
|
| 18 |
+
- **OLM** (Operator Lifecycle Manager) controls installation, upgrade, and RBAC of Operators; deployed by default in OCP 4.15
|
| 19 |
+
- **Operator maturity model** defines five phases: Basic Install β Seamless Upgrades β Full Lifecycle β Deep Insights β Auto Pilot
|
| 20 |
+
- **Bundle format**: a single Operator version packaged as a non-runnable container image containing Kubernetes manifests and metadata
|
| 21 |
+
- **Bundle requirements**: at least one channel, exactly one CSV per bundle, owned CRDs must be present
|
| 22 |
+
- **File-based catalogs (FBC)**: plain text (JSON/YAML) declarative format replacing deprecated SQLite format; default since OCP 4.11
|
| 23 |
+
- **FBC properties**: editability, composability, extensibility
|
| 24 |
+
- **Three FBC schemas**: `olm.package` (one per package), `olm.channel` (at least one per package), `olm.bundle` (one or more per package)
|
| 25 |
+
- **olm.deprecations schema**: marks packages, channels, or bundles as deprecated
|
| 26 |
+
- **Dependency types**: `olm.package` (version-based), `olm.gvk` (group/version/kind), `olm.constraint` (generic)
|
| 27 |
+
- **Channel upgrade edges**: `replaces`, `skips`, `skipRange` control upgrade paths
|
| 28 |
+
- **CatalogSource** object references a catalog image; OLM polls it at regular intervals
|
| 29 |
+
- **`.indexignore`** files work like `.gitignore` to exclude non-catalog files
|
| 30 |
+
- **All `olm.*` schemas are reserved** for OLM-defined schemas; custom schemas need unique prefixes
|
| 31 |
+
- Service brokers vs Operators: brokers are not long-running, cannot handle Day 2 operations
|
| 32 |
+
|
| 33 |
+
## Commands and Syntax
|
| 34 |
+
|
| 35 |
+
```bash
|
| 36 |
+
# opm CLI - create and maintain Operator catalogs
|
| 37 |
+
opm validate <catalog-dir> # Validate a file-based catalog
|
| 38 |
+
opm init <package-name> # Initialize FBC package
|
| 39 |
+
opm render <bundle-image> # Render bundle into FBC format
|
| 40 |
+
|
| 41 |
+
# Build bundle image
|
| 42 |
+
podman build -f bundle.Dockerfile -t <registry>/<bundle-image>:<tag>
|
| 43 |
+
podman push <registry>/<bundle-image>:<tag>
|
| 44 |
+
```
|
| 45 |
+
|
| 46 |
+
**Bundle directory structure:**
|
| 47 |
+
```
|
| 48 |
+
etcd
|
| 49 |
+
βββ manifests
|
| 50 |
+
β βββ etcdcluster.crd.yaml
|
| 51 |
+
β βββ etcdoperator.clusterserviceversion.yaml
|
| 52 |
+
βββ metadata
|
| 53 |
+
βββ annotations.yaml
|
| 54 |
+
βββ dependencies.yaml
|
| 55 |
+
```
|
| 56 |
+
|
| 57 |
+
**File-based catalog structure:**
|
| 58 |
+
```
|
| 59 |
+
catalog
|
| 60 |
+
βββ packageA
|
| 61 |
+
β βββ index.yaml
|
| 62 |
+
βββ packageB
|
| 63 |
+
β βββ .indexignore
|
| 64 |
+
β βββ index.yaml
|
| 65 |
+
β βββ objects/
|
| 66 |
+
βββ packageC
|
| 67 |
+
βββ index.json
|
| 68 |
+
βββ deprecations.yaml
|
| 69 |
+
```
|
| 70 |
+
|
| 71 |
+
**annotations.yaml keys:**
|
| 72 |
+
```yaml
|
| 73 |
+
annotations:
|
| 74 |
+
operators.operatorframework.io.bundle.mediatype.v1: "registry+v1"
|
| 75 |
+
operators.operatorframework.io.bundle.manifests.v1: "manifests/"
|
| 76 |
+
operators.operatorframework.io.bundle.metadata.v1: "metadata/"
|
| 77 |
+
operators.operatorframework.io.bundle.package.v1: "test-operator"
|
| 78 |
+
operators.operatorframework.io.bundle.channels.v1: "beta,stable"
|
| 79 |
+
operators.operatorframework.io.bundle.channel.default.v1: "stable"
|
| 80 |
+
```
|
| 81 |
+
|
| 82 |
+
**dependencies.yaml example:**
|
| 83 |
+
```yaml
|
| 84 |
+
dependencies:
|
| 85 |
+
- type: olm.package
|
| 86 |
+
value:
|
| 87 |
+
packageName: prometheus
|
| 88 |
+
version: ">0.27.0"
|
| 89 |
+
- type: olm.gvk
|
| 90 |
+
value:
|
| 91 |
+
group: etcd.database.coreos.com
|
| 92 |
+
kind: EtcdCluster
|
| 93 |
+
version: v1beta2
|
| 94 |
+
```
|
| 95 |
+
|
| 96 |
+
**olm.deprecations example:**
|
| 97 |
+
```yaml
|
| 98 |
+
schema: olm.deprecations
|
| 99 |
+
package: my-operator
|
| 100 |
+
entries:
|
| 101 |
+
- reference:
|
| 102 |
+
schema: olm.package
|
| 103 |
+
message: "Package is end of life"
|
| 104 |
+
- reference:
|
| 105 |
+
schema: olm.channel
|
| 106 |
+
name: alpha
|
| 107 |
+
message: "Channel is deprecated"
|
| 108 |
+
- reference:
|
| 109 |
+
schema: olm.bundle
|
| 110 |
+
name: my-operator.v1.0.0
|
| 111 |
+
message: "Bundle has a CVE"
|
| 112 |
+
```
|
| 113 |
+
|
| 114 |
+
## Relationships
|
| 115 |
+
|
| 116 |
+
- **OLM** uses **CatalogSource** objects to reference catalog images and poll for updates
|
| 117 |
+
- **Operator SDK** supports building Operators with **Helm**, **Go**, and **Ansible** (mapped to maturity model capabilities)
|
| 118 |
+
- **Bundle images** are stored in **container registries** (e.g., Quay) and referenced by catalogs
|
| 119 |
+
- **CRDs** define the custom resources that Operators manage; CSV declares which CRDs an Operator owns/requires
|
| 120 |
+
- **Channels** provide upgrade paths; **Subscriptions** connect users to channels
|
| 121 |
+
- **File-based catalogs** replaced **SQLite database format** (deprecated since OCP 4.11)
|
| 122 |
+
- **`opm` CLI** bridges bundle format and catalog management
|
| 123 |
+
- Connects to: CatalogSource configuration, Subscription objects, OperatorHub UI, disconnected installation mirroring
|
| 124 |
+
|
| 125 |
+
## Exam-Relevant Points
|
| 126 |
+
|
| 127 |
+
- OLM is deployed **by default** in OpenShift Container Platform 4.15
|
| 128 |
+
- OperatorHub is deployed **by default** in OpenShift Container Platform
|
| 129 |
+
- The five Operator maturity levels: Basic Install β Seamless Upgrades β Full Lifecycle β Deep Insights β Auto Pilot
|
| 130 |
+
- A bundle must have **exactly one CSV** and **at least one channel**
|
| 131 |
+
- File-based catalogs became the **default format since OCP 4.11**; SQLite format is **deprecated**
|
| 132 |
+
- Three required FBC schemas per package: `olm.package` (exactly one), `olm.channel` (at least one), `olm.bundle` (one or more)
|
| 133 |
+
- **`annotations.yaml` is authoritative** over other sources in case of mismatch
|
| 134 |
+
- Three dependency types: `olm.package`, `olm.gvk`, `olm.constraint`
|
| 135 |
+
- **`skipRange`** prunes skipped versions from the update graph β they become uninstallable
|
| 136 |
+
- Use both `skipRange` and `replaces` together to skip versions while keeping them installable
|
| 137 |
+
- Duplicate packages/bundles within a package are **not permitted** in file-based catalogs
|
| 138 |
+
- `opm validate` is the command to validate catalogs
|
| 139 |
+
- Optional bundle objects (ConfigMap, Secret, Service, ServiceMonitor, etc.) have their lifecycle managed by OLM alongside the CSV
|
| 140 |
+
- The `olm.deprecations` schema requires a `package` value matching an existing `olm.package`, and each entry's `message` is required
|
| 141 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-415-html-operators-user-tasks.md
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.15/html/operators/user-tasks
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-415-html-operators-user-tasks.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:14
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This page covers user-facing tasks for working with Operators in OpenShift Container Platform 4.15, including creating applications from installed Operators, installing Operators from OperatorHub (via web console and CLI), and managing Operator updates (approval, upgrading, and deletion). It focuses on the self-service capabilities available to developers and non-admin users through Operator Lifecycle Manager (OLM).
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
|
| 15 |
+
- **Cluster Service Version (CSV)**: The resource that represents a particular version of an installed Operator; used to launch and manage the Operator's software. Check with `oc get csv`.
|
| 16 |
+
- **PackageManifest**: Represents an Operator available in a catalog; describes install modes, channels, and versions. Lives in `openshift-marketplace`.
|
| 17 |
+
- **OperatorGroup**: Defines target namespaces for RBAC generation; only **one OperatorGroup per namespace** is allowed. Required for `SingleNamespace` install mode; `openshift-operators` already has `global-operators` for `AllNamespaces` mode.
|
| 18 |
+
- **Subscription**: The object that subscribes a namespace to an Operator from a catalog source, specifying channel, source, and approval strategy.
|
| 19 |
+
- **Install Modes**: `OwnNamespace`, `SingleNamespace`, `MultiNamespace`, `AllNamespaces` β each Operator declares which modes it supports.
|
| 20 |
+
- **Approval Strategy**: **Automatic** (OLM upgrades automatically) vs **Manual** (admin must approve each update via InstallPlan). Manual is recommended for cloud token auth clusters (AWS STS, Entra Workload ID).
|
| 21 |
+
- **Catalog Sources**: Default catalogs β Red Hat Operators, Certified Operators, Community Operators β served from `openshift-marketplace`.
|
| 22 |
+
- Users with the `edit` role can create/manage/delete application instances from installed Operators in a self-service manner.
|
| 23 |
+
- Community Operators are **not certified by Red Hat**; a warning must be acknowledged.
|
| 24 |
+
- Installing an Operator with Manual approval in a namespace causes **all Operators in that namespace** to use Manual approval and update together. Install into separate namespaces for independent updates.
|
| 25 |
+
|
| 26 |
+
## Commands and Syntax
|
| 27 |
+
|
| 28 |
+
**List installed Operators:**
|
| 29 |
+
```bash
|
| 30 |
+
oc get csv
|
| 31 |
+
```
|
| 32 |
+
|
| 33 |
+
**List available Operators from OperatorHub:**
|
| 34 |
+
```bash
|
| 35 |
+
oc get packagemanifests -n openshift-marketplace
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
**Inspect an Operator's install modes, channels, versions:**
|
| 39 |
+
```bash
|
| 40 |
+
oc describe packagemanifests <operator_name> -n openshift-marketplace
|
| 41 |
+
```
|
| 42 |
+
|
| 43 |
+
**Filter by specific catalog:**
|
| 44 |
+
```bash
|
| 45 |
+
oc get packagemanifest \
|
| 46 |
+
--selector=catalog=<catalogsource_name> \
|
| 47 |
+
--field-selector metadata.name=<operator_name> \
|
| 48 |
+
-n <catalog_namespace> -o yaml
|
| 49 |
+
```
|
| 50 |
+
|
| 51 |
+
**Grant edit role for self-service Operator usage:**
|
| 52 |
+
```bash
|
| 53 |
+
oc policy add-role-to-user edit <user> -n <target_project>
|
| 54 |
+
```
|
| 55 |
+
|
| 56 |
+
**OperatorGroup for SingleNamespace mode:**
|
| 57 |
+
```yaml
|
| 58 |
+
apiVersion: operators.coreos.com/v1
|
| 59 |
+
kind: OperatorGroup
|
| 60 |
+
metadata:
|
| 61 |
+
name: <operatorgroup_name>
|
| 62 |
+
namespace: <namespace>
|
| 63 |
+
spec:
|
| 64 |
+
targetNamespaces:
|
| 65 |
+
- <namespace>
|
| 66 |
+
```
|
| 67 |
+
|
| 68 |
+
**Subscription object:**
|
| 69 |
+
```yaml
|
| 70 |
+
apiVersion: operators.coreos.com/v1alpha1
|
| 71 |
+
kind: Subscription
|
| 72 |
+
metadata:
|
| 73 |
+
name: <subscription_name>
|
| 74 |
+
namespace: <namespace_per_install_mode> # openshift-operators for AllNamespaces
|
| 75 |
+
spec:
|
| 76 |
+
channel: <channel_name>
|
| 77 |
+
name: <operator_name>
|
| 78 |
+
source: <catalog_name>
|
| 79 |
+
sourceNamespace: openshift-marketplace
|
| 80 |
+
config:
|
| 81 |
+
env: [...]
|
| 82 |
+
envFrom: [...]
|
| 83 |
+
volumes: [...]
|
| 84 |
+
volumeMounts: [...]
|
| 85 |
+
tolerations: [...]
|
| 86 |
+
resources: {requests: {...}, limits: {...}}
|
| 87 |
+
nodeSelector: {key: value}
|
| 88 |
+
```
|
| 89 |
+
|
| 90 |
+
**Pin to a specific version (requires Manual approval):**
|
| 91 |
+
```yaml
|
| 92 |
+
spec:
|
| 93 |
+
channel: stable-3.7
|
| 94 |
+
installPlanApproval: Manual
|
| 95 |
+
startingCSV: example-operator.v3.7.10
|
| 96 |
+
```
|
| 97 |
+
|
| 98 |
+
**AWS STS config in Subscription:**
|
| 99 |
+
```yaml
|
| 100 |
+
spec:
|
| 101 |
+
config:
|
| 102 |
+
env:
|
| 103 |
+
- name: ROLEARN
|
| 104 |
+
value: "<role_arn>"
|
| 105 |
+
```
|
| 106 |
+
|
| 107 |
+
**Entra Workload ID config in Subscription:**
|
| 108 |
+
```yaml
|
| 109 |
+
spec:
|
| 110 |
+
config:
|
| 111 |
+
env:
|
| 112 |
+
- name: CLIENTID
|
| 113 |
+
value: "<client_id>"
|
| 114 |
+
- name: TENANTID
|
| 115 |
+
value: "<tenant_id>"
|
| 116 |
+
- name: SUBSCRIPTIONID
|
| 117 |
+
value: "<subscription_id>"
|
| 118 |
+
```
|
| 119 |
+
|
| 120 |
+
**Verify installation:**
|
| 121 |
+
```bash
|
| 122 |
+
oc describe subscription <subscription_name> -n <namespace>
|
| 123 |
+
oc describe operatorgroup <operatorgroup_name> -n <namespace>
|
| 124 |
+
```
|
| 125 |
+
|
| 126 |
+
## Relationships
|
| 127 |
+
|
| 128 |
+
- **OLM (Operator Lifecycle Manager)**: The backend that manages Operator installation, upgrades, and lifecycle β Subscriptions, CSVs, and InstallPlans are all OLM resources.
|
| 129 |
+
- **OperatorHub**: The discovery UI frontend that works with OLM; sources from CatalogSources.
|
| 130 |
+
- **RBAC / Permissions**: Cluster admins must delegate Operator installation permissions; the `edit` role grants self-service instance management.
|
| 131 |
+
- **Cloud Provider Auth**: AWS STS and Microsoft Entra Workload ID clusters require special Subscription config and Manual approval strategy.
|
| 132 |
+
- **CatalogSource / openshift-marketplace**: The namespace housing default catalog sources that PackageManifests are read from.
|
| 133 |
+
- **InstallPlan**: Created by OLM when Manual approval is set; must be approved to complete installation or upgrade.
|
| 134 |
+
|
| 135 |
+
## Exam-Relevant Points
|
| 136 |
+
|
| 137 |
+
- `oc get packagemanifests -n openshift-marketplace` lists all available Operators β know this command.
|
| 138 |
+
- **Only one OperatorGroup per namespace** β this is a hard constraint.
|
| 139 |
+
- For `SingleNamespace` mode, you must create an OperatorGroup manually (CLI); the web console handles this automatically.
|
| 140 |
+
- For `AllNamespaces` mode, `openshift-operators` namespace already has `global-operators` group β skip OperatorGroup creation.
|
| 141 |
+
- The `Subscription` object requires: `channel`, `name`, `source`, `sourceNamespace`.
|
| 142 |
+
- To install a **specific version**: set `startingCSV` and `installPlanApproval: Manual`.
|
| 143 |
+
- **Manual approval in a namespace affects all Operators in that namespace** β they all update together. Use separate namespaces for independent updates.
|
| 144 |
+
- AWS STS / Entra Workload ID clusters **must use Manual approval** for Operator subscriptions.
|
| 145 |
+
- The `config` section of a Subscription can set `env`, `envFrom`, `volumes`, `volumeMounts`, `tolerations`, `resources`, and `nodeSelector` on the Operator pod.
|
| 146 |
+
- After installation, CSV status should show **Succeeded** in the target namespace (or **Copied** in other namespaces for AllNamespaces mode).
|
| 147 |
+
- The `edit` role is what grants users self-service ability to create Operator-managed application instances.
|
| 148 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-index.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/about/index
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-about-index.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:14
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This is the landing page for the "About" section of OpenShift Container Platform 4.17 documentation. It introduces OCP as a platform and serves as the entry point to the product's feature overview. The page itself contains minimal content β it primarily links to the full introduction document.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **OpenShift Container Platform (OCP)** is a Red Hat product built on Kubernetes for deploying and managing containerized applications at scale.
|
| 15 |
+
- **Version 4.17** is the documented release; OCP has a long version history spanning 3.x through 4.x lines.
|
| 16 |
+
- Documentation is maintained by the **Red Hat OpenShift Documentation Team**.
|
| 17 |
+
- The "About" section provides a **feature overview** of the platform β it is the conceptual starting point before operational docs.
|
| 18 |
+
|
| 19 |
+
## Commands and Syntax
|
| 20 |
+
No commands or configuration syntax are present on this page.
|
| 21 |
+
|
| 22 |
+
## Relationships
|
| 23 |
+
- This is the **root "About" page** β it connects to deeper introductory topics covering OCP architecture, features, and platform concepts.
|
| 24 |
+
- It sits above operational documentation sections (installation, networking, storage, security, etc.).
|
| 25 |
+
- The version selector shows OCP spans **3.x (legacy)** through **4.x (current)** β the 3.x to 4.x transition was a major architectural shift (from standalone orchestration to Kubernetes-native).
|
| 26 |
+
|
| 27 |
+
## Exam-Relevant Points
|
| 28 |
+
- OCP 4.x is the current platform generation; know that it is **Kubernetes-based**.
|
| 29 |
+
- The version numbering convention: **4.17** is a specific minor release of OCP 4.
|
| 30 |
+
- Red Hat maintains formal documentation per version β version-specific behavior differences can appear on exams.
|
| 31 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-learn_more_about_op.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/about/learn_more_about_openshift
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-about-learn_more_about_op.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:15
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This page serves as a learning roadmap for OpenShift Container Platform 4.17, organizing documentation resources by persona and task area. It maps out what cluster administrators, developers, SREs, and other roles need to learn, covering architecture, installation, cluster management, observability, storage, application development, and hosted control planes.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Persona-based organization**: Documentation is structured around roles β Cluster Administrator, Developer, App SRE β each with distinct learning paths
|
| 15 |
+
- **Architecture foundations**: Enterprise Kubernetes, OVN-Kubernetes networking, security/compliance, and backup/restore form the architectural base
|
| 16 |
+
- **Installation modes**: Standard installation, restricted/disconnected network installation, and installation into existing networks (existing VPC/VNet) are distinct paths
|
| 17 |
+
- **Cluster capabilities**: OpenShift 4.17 supports optional cluster capabilities that can be selectively enabled
|
| 18 |
+
- **Machine management**: Compute and control plane machines are managed via machine sets, with support for machine health checks and autoscaling
|
| 19 |
+
- **Hosted control planes (HCP)**: A deployment model where control planes run as hosted workloads, deployable on OpenShift Virtualization, AWS, bare metal, IBM Z, and IBM Power
|
| 20 |
+
- **Observability stack**: Includes distributed tracing (Red Hat build of OpenTelemetry), Network Observability, monitoring, and power monitoring (Tech Preview)
|
| 21 |
+
- **Developer tooling**: Includes odo (developer CLI), OpenShift Pipelines (CI/CD), Dev Spaces, Topology view, and application export capabilities
|
| 22 |
+
|
| 23 |
+
## Commands and Syntax
|
| 24 |
+
No specific commands on this page β it is a navigation/index page. Key referenced tools and interfaces:
|
| 25 |
+
- **odo** β developer-focused CLI for application development
|
| 26 |
+
- **OpenShift Pipelines** β CI/CD pipeline creation
|
| 27 |
+
- **OpenShift Update Service** β cluster updates in disconnected environments
|
| 28 |
+
- **Machine API** β programmatic machine management
|
| 29 |
+
- **CRDs** β extending cluster with custom resource definitions
|
| 30 |
+
|
| 31 |
+
## Relationships
|
| 32 |
+
- **Installation β Restricted Networks**: Disconnected installs require image mirroring; supported on AWS, GCP, vSphere, IBM Cloud, IBM Z/LinuxONE, IBM Power, bare metal
|
| 33 |
+
- **Cluster Admin β Operators**: Operators are central to managing cluster components and extending functionality
|
| 34 |
+
- **Networking β CNO**: Cluster Network Operator manages networking; supports multiple network interfaces and network policy
|
| 35 |
+
- **Observability β Monitoring**: Remote health monitoring, distributed tracing, and network observability are complementary monitoring capabilities
|
| 36 |
+
- **Hosted Control Planes β Virtualization/Cloud**: HCP can run on OpenShift Virtualization, AWS, bare metal, IBM Z, IBM Power β and in disconnected environments
|
| 37 |
+
- **Developer β Builds/Images**: Application development ties into build strategies, image management, and deployment mechanisms
|
| 38 |
+
- **Storage β CSI/ODF**: Storage management connects to Red Hat OpenShift Data Foundation
|
| 39 |
+
|
| 40 |
+
## Exam-Relevant Points
|
| 41 |
+
- OpenShift 4.17 has **optional cluster capabilities** that can be selectively enabled/disabled
|
| 42 |
+
- **Disconnected/restricted network** installations require mirroring installation images
|
| 43 |
+
- Installation into **existing VPC** (AWS, GCP) or **existing VNet** (Azure) is a supported pattern
|
| 44 |
+
- Machine management uses **machine sets** for both compute and control plane nodes
|
| 45 |
+
- **Machine health checks** and **cluster autoscaling** are distinct but related features
|
| 46 |
+
- Cluster updates can be performed via **web console**, **CLI**, or **OpenShift Update Service** (disconnected)
|
| 47 |
+
- **Hosted control planes** are a distinct deployment model with specific platform support and sizing requirements
|
| 48 |
+
- **RHCOS image layering** is available as an advanced installation capability
|
| 49 |
+
- **FIPS mode** is an installation-time option
|
| 50 |
+
- **Resource quotas** and **pruning** are key cluster management tasks
|
| 51 |
+
- **Network Observability** and **Power Monitoring** (Tech Preview) are part of the observability stack
|
| 52 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-oke-about.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/about/oke-about
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-about-oke-about.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:15
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
OpenShift Kubernetes Engine (OKE), formerly Red Hat OpenShift Container Engine, is a lower-cost subset of OpenShift Container Platform (OCP). It uses the same binary distribution and installation process as OCP but offers a reduced feature set focused on core Kubernetes orchestration, enterprise security, and infrastructure services β excluding developer-oriented tools, service mesh, serverless, pipelines, and logging.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Same binary, different entitlement**: OKE and OCP are the same download/product; OKE is a subscription that limits which features are supported, not a separate binary.
|
| 15 |
+
- **Renamed in April 2020**: "OpenShift Container Engine" β "OpenShift Kubernetes Engine"
|
| 16 |
+
- **Includes**: Automated installers (IPI/UPI), OTA upgrades, enterprise Kubernetes, `oc`/`kubectl`, OLM, admin console, cluster monitoring (Prometheus), OpenShift Virtualization, RHEL/RHCOS entitlements, all storage/network plugins, Helm, OVN/OVS SDN, MetalLB, Multus, Route API, HAProxy ingress, Compliance Operator, Local Storage Operator, SR-IOV, VPA, OADP, embedded registry, OperatorHub
|
| 17 |
+
- **Excludes (requires OCP)**: Developer console, developer catalog, S2I/builder automation, OpenShift Pipelines (Jenkins/Tekton), Service Mesh (Istio/Kiali), Distributed Tracing, Serverless (Knative/Kourier), Platform Logging, User Workload Monitoring, OpenShift GitOps, Dev Spaces, `odo` CLI, sandboxed containers, Web Terminal, Migration Toolkit for Containers
|
| 18 |
+
- **Separate subscription required (for both OKE and OCP)**: RHACM, ACS, ODF, Red Hat Quay, Gatekeeper, Ansible Automation Platform, various middleware/integration products
|
| 19 |
+
- **Windows Containers**: OKE includes the Community Windows Machine Config Operator; OCP includes the Red Hat-supported version (separate subscription)
|
| 20 |
+
|
| 21 |
+
## Commands and Syntax
|
| 22 |
+
No unique commands β OKE uses the same `oc`, `kubectl`, and installer tooling as OCP. The difference is purely a subscription/support entitlement.
|
| 23 |
+
|
| 24 |
+
## Relationships
|
| 25 |
+
- **OCP superset**: OKE is a strict subset of OCP; understanding OKE means knowing what OCP features are excluded
|
| 26 |
+
- **OpenShift Virtualization**: Included in OKE (kubevirt-based)
|
| 27 |
+
- **ODF**: Compatible with OKE but requires separate purchase
|
| 28 |
+
- **RHACM**: Compatible with OKE but requires separate purchase
|
| 29 |
+
- **Red Hat Quay**: Compatible with OKE but requires separate purchase
|
| 30 |
+
- **Networking**: Full CNI, OVN-Kubernetes, Multus, Network Policy support β but no Service Mesh or Kourier
|
| 31 |
+
- **Monitoring**: Cluster monitoring included; User Workload Monitoring excluded
|
| 32 |
+
- **Logging**: Log forwarding included; Platform Logging (Elasticsearch/Fluentd/Kibana stack) excluded
|
| 33 |
+
|
| 34 |
+
## Exam-Relevant Points
|
| 35 |
+
- OKE and OCP are the **same binary download** β the difference is subscription entitlement only
|
| 36 |
+
- OKE **includes** OpenShift Virtualization, cluster monitoring, OLM, admin console, all storage plugins, full networking (OVN, Multus, Network Policy, egress controls)
|
| 37 |
+
- OKE **excludes** the developer experience: no developer console, no S2I, no Pipelines, no `odo`, no Dev Spaces
|
| 38 |
+
- OKE **excludes** Service Mesh, Serverless, Distributed Tracing, Platform Logging, and sandboxed containers
|
| 39 |
+
- **User Workload Monitoring** is NOT included in OKE (cluster monitoring IS included)
|
| 40 |
+
- **Log forwarding** is included in OKE; **Platform Logging** is not
|
| 41 |
+
- OKE receives the **same SLAs, bug fixes, and CVE protection** as OCP
|
| 42 |
+
- Products requiring **separate subscriptions regardless of OKE or OCP**: RHACM, ACS, ODF, Quay, Gatekeeper
|
| 43 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-providing-feedback-.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/about/providing-feedback-on-red-hat-documentation
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-about-providing-feedback-.md
|
| 4 |
+
---
|
| 5 |
+
# En Documentation Openshift_Container_Platform 417 Html About Providing Feedback
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:15
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
This page is just about how to submit documentation feedback via Jira β it has no technical content relevant to OpenShift expertise or certification. There's nothing worth summarizing into study notes from this page. Let me skip it.
|
| 13 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-welcome-index.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/about/welcome-index
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-about-welcome-index.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:15
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This is the top-level landing page for OpenShift Container Platform 4.17 documentation. It serves as an entry point and navigation hub, directing users to explore OCP features via the navigation bar or curated task-based links.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- OpenShift Container Platform (OCP) is a Red Hat product with documentation spanning versions 3.0 through 4.21.
|
| 15 |
+
- Version 4.17 is one of many supported releases, each with its own documentation set.
|
| 16 |
+
- Documentation is available in multi-page, single-page, and PDF formats.
|
| 17 |
+
|
| 18 |
+
## Commands and Syntax
|
| 19 |
+
No commands or configuration syntax on this page.
|
| 20 |
+
|
| 21 |
+
## Relationships
|
| 22 |
+
- This is the root of the OCP 4.17 doc tree; all other 4.17 topics branch from here.
|
| 23 |
+
- Links to the "Learn more about OpenShift Container Platform" task-oriented guide for onboarding.
|
| 24 |
+
- Part of the broader Red Hat product documentation ecosystem.
|
| 25 |
+
|
| 26 |
+
## Exam-Relevant Points
|
| 27 |
+
- OCP versioning follows a `major.minor` scheme (e.g., 4.17); knowing which version you're working with matters for exam scenarios.
|
| 28 |
+
- Documentation availability varies by version β not all docs exist for all versions.
|
| 29 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/about
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-about.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:16
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This is the landing page for the "About" section of OpenShift Container Platform 4.17 documentation. It serves as an introduction to OpenShift Container Platform and provides an overview of its features. The page itself contains minimal content β it is primarily a navigation entry point.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **OpenShift Container Platform (OCP)** is a Red Hat product built on Kubernetes for enterprise container orchestration.
|
| 15 |
+
- Version **4.17** is the documented release on this page.
|
| 16 |
+
- OCP has a long version history spanning from **3.0** through **4.21**, indicating a mature, actively developed platform.
|
| 17 |
+
- The version jump from **3.x to 4.x** reflects the major architectural shift from standalone Docker/Kubernetes to an operator-driven, immutable infrastructure model (RHEL CoreOS, Cluster Version Operator).
|
| 18 |
+
|
| 19 |
+
## Commands and Syntax
|
| 20 |
+
None β this is an introductory/overview page with no commands or configuration syntax.
|
| 21 |
+
|
| 22 |
+
## Relationships
|
| 23 |
+
- This page is the entry point to the broader OCP documentation set, which covers installation, networking, storage, security, operators, CI/CD, and cluster management.
|
| 24 |
+
- It connects to the **Legal Notice** for Red Hat documentation licensing.
|
| 25 |
+
- The "About" section typically leads into topics like OCP architecture, platform lifecycle, and feature highlights.
|
| 26 |
+
|
| 27 |
+
## Exam-Relevant Points
|
| 28 |
+
- OCP 4.x is the current major version family; know that 4.17 exists as a supported release.
|
| 29 |
+
- Red Hat maintains documentation across many versions simultaneously (3.x and 4.x lines), which reflects the product's enterprise support lifecycle (EUS, standard, and extended support).
|
| 30 |
+
- Understanding the version you are working with is critical β exam questions often reference specific version capabilities.
|
| 31 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-assoc.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/advanced_networking/associating-secondary-interfaces-metrics-to-network-attachments
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-advanced_networking-assoc.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:16
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
|
| 12 |
+
This page describes how OpenShift administrators can associate secondary network interface metrics with their corresponding `NetworkAttachmentDefinition` resources using the `pod_network_name_info` metric. This solves the problem of identifying which secondary interface (added via Multus CNI) belongs to which network when monitoring container network metrics.
|
| 13 |
+
|
| 14 |
+
## Key Concepts
|
| 15 |
+
|
| 16 |
+
- **Secondary interfaces** are additional network interfaces added to pods (e.g., via Multus CNI); their names depend on the order they are added, making identification difficult from metrics alone.
|
| 17 |
+
- **Network Metrics Daemon** is a daemonset that collects and publishes network-related metrics, supplementing kubelet's built-in `container_network_*` metrics.
|
| 18 |
+
- **`pod_network_name_info`** is a gauge metric with a fixed value of `0`, published by the Network Metrics Daemon. Its purpose is to carry labels that map interface names to network attachment definitions.
|
| 19 |
+
- The `network_name` label is derived from the `k8s.v1.cni.cncf.io/network-status` annotation added by Multus β formatted as `<nad-namespace>/<nad-name>`.
|
| 20 |
+
- Standard kubelet metrics (e.g., `container_network_receive_bytes_total`) include pod name, namespace, and interface name, but do **not** identify the network purpose of the interface.
|
| 21 |
+
|
| 22 |
+
## Commands and Syntax
|
| 23 |
+
|
| 24 |
+
**PromQL join pattern** β enrich any `container_network_*` metric with the network name:
|
| 25 |
+
|
| 26 |
+
```promql
|
| 27 |
+
(container_network_receive_bytes_total) + on(namespace,pod,interface) group_left(network_name) ( pod_network_name_info )
|
| 28 |
+
```
|
| 29 |
+
|
| 30 |
+
This pattern uses `group_left(network_name)` to pull the `network_name` label from `pod_network_name_info` onto the existing container network metric, joining on `namespace`, `pod`, and `interface`.
|
| 31 |
+
|
| 32 |
+
**Example metric output:**
|
| 33 |
+
|
| 34 |
+
```
|
| 35 |
+
pod_network_name_info{interface="net0",namespace="namespacename",network_name="nadnamespace/firstNAD",pod="podname"} 0
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
## Relationships
|
| 39 |
+
|
| 40 |
+
- **Multus CNI**: Adds secondary interfaces and the `k8s.v1.cni.cncf.io/network-status` annotation that this metric relies on.
|
| 41 |
+
- **NetworkAttachmentDefinition (NAD)**: The network name label is derived from the NAD resource name and namespace; different NADs distinguish different network classes/CNIs.
|
| 42 |
+
- **Prometheus / Monitoring stack**: The PromQL queries assume the OpenShift monitoring stack (Prometheus) is scraping these metrics.
|
| 43 |
+
- **Kubelet metrics**: `pod_network_name_info` is designed to be joined with existing kubelet `container_network_*` metrics β it has no value on its own.
|
| 44 |
+
|
| 45 |
+
## Exam-Relevant Points
|
| 46 |
+
|
| 47 |
+
- The `pod_network_name_info` metric always has a fixed value of **0** β it exists solely as a label carrier for PromQL joins.
|
| 48 |
+
- The `network_name` label format is `<namespace>/<NetworkAttachmentDefinition name>`.
|
| 49 |
+
- The PromQL join technique uses `+ on(namespace,pod,interface) group_left(network_name)` to enrich existing container network metrics.
|
| 50 |
+
- There are **8** standard kubelet `container_network_*` metrics (4 receive, 4 transmit: bytes, errors, packets, packets_dropped).
|
| 51 |
+
- Without `pod_network_name_info`, secondary interface metrics are ambiguous because interface names (e.g., `net0`) don't indicate which network they belong to.
|
| 52 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-chang.md
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/advanced_networking/changing-cluster-network-mtu
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-advanced_networking-chang.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:17
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This page describes how to change the maximum transmission unit (MTU) for an OpenShift Container Platform cluster network after installation. The process is disruptive, requiring multiple rolling reboots of all cluster nodes, and is only supported with the OVN-Kubernetes network plugin. The migration involves a multi-step process: initiating the migration via CNO configuration, updating hardware MTU on nodes, and finalizing the migration.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Hardware MTU** vs **Cluster Network MTU**: The cluster network MTU is always less than the hardware MTU to account for overlay overhead. For OVN-Kubernetes, the overhead is **100 bytes**.
|
| 15 |
+
- MTU is auto-detected during installation from the primary network interface; post-install changes follow a migration workflow.
|
| 16 |
+
- **Only OVN-Kubernetes** supports changing the MTU value post-installation.
|
| 17 |
+
- If nodes have different MTU values, the cluster network MTU must be set to the **lowest node MTU minus the overlay overhead** (e.g., nodes with 9001 and 1500 β cluster MTU = 1400).
|
| 18 |
+
- The migration requires **at least two rolling reboots** of all nodes (one to prepare, one to finalize).
|
| 19 |
+
- You **cannot roll back** MTU during migration, only after migration completes.
|
| 20 |
+
- The Machine Config Operator (MCO) reboots **one node per pool at a time** by default.
|
| 21 |
+
- Use `ip -d link` to verify the maximum MTU (`maxmtu`) accepted by a network interface.
|
| 22 |
+
|
| 23 |
+
## Commands and Syntax
|
| 24 |
+
|
| 25 |
+
**Check current cluster MTU:**
|
| 26 |
+
```bash
|
| 27 |
+
oc describe network.config cluster
|
| 28 |
+
```
|
| 29 |
+
|
| 30 |
+
**Find primary network interface on a node:**
|
| 31 |
+
```bash
|
| 32 |
+
oc debug node/<node_name> -- chroot /host nmcli -g connection.interface-name c show ovs-if-phys0
|
| 33 |
+
```
|
| 34 |
+
|
| 35 |
+
**Begin MTU migration (patch CNO):**
|
| 36 |
+
```bash
|
| 37 |
+
oc patch Network.operator.openshift.io cluster --type=merge --patch \
|
| 38 |
+
'{"spec": { "migration": { "mtu": { "network": { "from": <overlay_from>, "to": <overlay_to> } , "machine": { "to" : <machine_to> } } } } }'
|
| 39 |
+
```
|
| 40 |
+
- `<overlay_from>`: current cluster network MTU
|
| 41 |
+
- `<overlay_to>`: target cluster network MTU (must be `<machine_to>` minus 100 for OVN-Kubernetes)
|
| 42 |
+
- `<machine_to>`: target hardware MTU
|
| 43 |
+
|
| 44 |
+
**Check machine config pool status:**
|
| 45 |
+
```bash
|
| 46 |
+
oc get machineconfigpools
|
| 47 |
+
# Success: UPDATED=true, UPDATING=false, DEGRADED=false
|
| 48 |
+
```
|
| 49 |
+
|
| 50 |
+
**Verify node machine config state:**
|
| 51 |
+
```bash
|
| 52 |
+
oc describe node | egrep "hostname|machineconfig"
|
| 53 |
+
```
|
| 54 |
+
|
| 55 |
+
**Finalize MTU migration:**
|
| 56 |
+
```bash
|
| 57 |
+
oc patch Network.operator.openshift.io cluster --type=merge --patch \
|
| 58 |
+
'{"spec": { "migration": null, "defaultNetwork":{ "ovnKubernetesConfig": { "mtu": <mtu> }}}}'
|
| 59 |
+
```
|
| 60 |
+
|
| 61 |
+
**Verify node interface MTU after migration:**
|
| 62 |
+
```bash
|
| 63 |
+
oc adm node-logs <node> -u ovs-configuration | grep configure-ovs.sh | grep mtu | grep <interface> | head -1
|
| 64 |
+
```
|
| 65 |
+
|
| 66 |
+
**DHCP MTU configuration (dnsmasq):**
|
| 67 |
+
```
|
| 68 |
+
dhcp-option-force=26,<mtu>
|
| 69 |
+
```
|
| 70 |
+
|
| 71 |
+
**NetworkManager conf.d file format:**
|
| 72 |
+
```ini
|
| 73 |
+
[connection-<interface>-mtu]
|
| 74 |
+
match-device=interface-name:<interface>
|
| 75 |
+
ethernet.mtu=<mtu>
|
| 76 |
+
```
|
| 77 |
+
|
| 78 |
+
**Butane config** creates MachineConfig objects that place the NetworkManager MTU config at `/etc/NetworkManager/conf.d/99-<interface>-mtu.conf` with separate configs for `master` and `worker` roles.
|
| 79 |
+
|
| 80 |
+
## Relationships
|
| 81 |
+
- **Cluster Network Operator (CNO)**: Validates migration parameters and writes temporary network configuration.
|
| 82 |
+
- **Machine Config Operator (MCO)**: Performs rolling reboots during migration steps; applies MachineConfig objects.
|
| 83 |
+
- **OVN-Kubernetes**: The only supported network plugin for MTU changes; has 100-byte overlay overhead.
|
| 84 |
+
- **Butane**: Used to generate MachineConfig YAML from `.bu` config files for NetworkManager settings.
|
| 85 |
+
- **NetworkManager**: Manages interface-level MTU on RHCOS nodes.
|
| 86 |
+
- Related to bare-metal/PXE installation networking, DHCP configuration, and jumbo frame support on switches/hypervisors.
|
| 87 |
+
|
| 88 |
+
## Exam-Relevant Points
|
| 89 |
+
- OVN-Kubernetes overlay overhead is exactly **100 bytes** β cluster MTU = hardware MTU - 100.
|
| 90 |
+
- Only **OVN-Kubernetes** supports post-install MTU changes (not OpenShift SDN).
|
| 91 |
+
- The migration is a **3-phase process**: (1) patch CNO with migration spec, (2) update hardware MTU on nodes, (3) finalize by setting `spec.migration` to `null` and updating `ovnKubernetesConfig.mtu`.
|
| 92 |
+
- The command to check current MTU is `oc describe network.config cluster`.
|
| 93 |
+
- The `Network.operator.openshift.io` resource (not `network.config`) is patched for migration.
|
| 94 |
+
- MCO updates **one machine per pool at a time** by default.
|
| 95 |
+
- Successful node update: `UPDATED=true`, `UPDATING=false`, `DEGRADED=false`.
|
| 96 |
+
- Node readiness is confirmed when `currentConfig` equals `desiredConfig` and state is `Done`.
|
| 97 |
+
- Three methods for hardware MTU: NetworkManager connection profile (default), DHCP, kernel command line/PXE.
|
| 98 |
+
- With mixed-MTU nodes, always use the **lowest** MTU minus overhead.
|
| 99 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-index.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/advanced_networking/index
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-advanced_networking-index.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:17
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This is the landing page for the Advanced Networking section of OpenShift Container Platform 4.17 documentation. It serves as an index for specialized networking topics beyond basic cluster networking, covering MTU changes, connectivity verification, Stream Control Transmission Protocol (SCTP), Precision Time Protocol (PTP) hardware, and secondary interface metrics.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Advanced networking** is a distinct category from basic OCP networking, covering specialized use cases
|
| 15 |
+
- Topics grouped under advanced networking include:
|
| 16 |
+
- **MTU changes** β modifying Maximum Transmission Unit size for cluster networks
|
| 17 |
+
- **Connectivity verification** β validating network connectivity within the cluster
|
| 18 |
+
- **SCTP (Stream Control Transmission Protocol)** β a transport-layer protocol alternative to TCP/UDP, relevant for telecom workloads
|
| 19 |
+
- **PTP (Precision Time Protocol) hardware** β hardware-based time synchronization for latency-sensitive workloads
|
| 20 |
+
- **Secondary interface metrics** β monitoring and metrics for additional (non-primary) network interfaces on pods
|
| 21 |
+
|
| 22 |
+
## Commands and Syntax
|
| 23 |
+
No commands or configuration syntax provided on this landing page β content is in the sub-pages.
|
| 24 |
+
|
| 25 |
+
## Relationships
|
| 26 |
+
- Falls under the broader **Networking** domain in OCP
|
| 27 |
+
- **SCTP and PTP** are particularly relevant to **telecom/5G/NFV** use cases (closely related to OCP's role in edge and telco deployments)
|
| 28 |
+
- **Secondary interface metrics** relates to **Multus CNI** and multiple network attachments on pods
|
| 29 |
+
- **MTU changes** connect to the **cluster network operator** and **OVN-Kubernetes / OpenShift SDN** CNI plugins
|
| 30 |
+
- **Connectivity verification** relates to **network diagnostics** and cluster health
|
| 31 |
+
|
| 32 |
+
## Exam-Relevant Points
|
| 33 |
+
- Know that SCTP is supported in OCP as a transport protocol (not just TCP/UDP)
|
| 34 |
+
- PTP hardware support is an advanced networking feature in OCP β relevant for time-sensitive applications
|
| 35 |
+
- MTU changes are a post-installation advanced networking operation
|
| 36 |
+
- Secondary interfaces (via Multus) can expose metrics β understand that OCP supports multiple network interfaces per pod
|
| 37 |
+
- Connectivity verification is a built-in cluster capability for network troubleshooting
|
| 38 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-legal.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/advanced_networking/legal-notice
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-advanced_networking-legal.md
|
| 4 |
+
---
|
| 5 |
+
# En Documentation Openshift_Container_Platform 417 Html Advanced_Networking Legal
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:17
|
| 9 |
+
|
| 10 |
+
This is just a legal notice/copyright page β it contains no technical content relevant to OpenShift expertise or certification study. No summary worth creating here. Skip this page.
|
| 11 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-netwo.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/advanced_networking/network-bonding-considerations
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-advanced_networking-netwo.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:17
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
Network bonding (link aggregation) in OpenShift Container Platform combines multiple physical network interfaces into a single logical interface for fault tolerance and load balancing. OpenShift supports two bonding types: Open vSwitch (OVS) bonding and kernel bonding, each with different modes, capabilities, and configuration approaches.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Network bonding / link aggregation**: Combining multiple NICs into one logical interface for redundancy and/or load balancing
|
| 15 |
+
- **OVS bonding**: Uses Open vSwitch to create bonds; MAC address management is centralized at the OVS bridge level; physical MAC addresses do not handle traffic directly
|
| 16 |
+
- **OVS `active-backup` mode**: One active port handles traffic; standby ports monitor link status and take over on failure; all ports share the same MAC address
|
| 17 |
+
- **OVS `balance-slb` mode**: Source load balancing across multiple physical interfaces without requiring switch-side negotiation; balances only across different MAC/VLAN combinations
|
| 18 |
+
- **Limitation of balance-slb**: All OVN-Kubernetes pod traffic uses the same MAC and VLAN, so pod traffic **cannot** be load-balanced across interfaces β balance-slb is useful for VM workloads with different MACs
|
| 19 |
+
- **OVS bridge architecture**: `br-ex` receives VM traffic β patch ports connect to `br-phy` β `br-phy` controls the SLB bond β physical NICs (e.g., `eno0`, `eno1`)
|
| 20 |
+
- **Kernel bonding**: Built-in Linux kernel feature; bond interfaces exist **outside** the bridge data path; default if no OVS bonds are configured; less customizable than OVS bonding
|
| 21 |
+
- **Kernel bonding `fail_over_mac`**: Only value `0` (`none`) is supported by Red Hat β all interfaces share the bond's MAC. Values `1` (`active`) and `2` (`follow`) are **not supported**
|
| 22 |
+
|
| 23 |
+
## Commands and Syntax
|
| 24 |
+
|
| 25 |
+
**NMState config for OVS balance-slb bond** (key fragment):
|
| 26 |
+
```yaml
|
| 27 |
+
- name: br-phy
|
| 28 |
+
type: ovs-bridge
|
| 29 |
+
state: up
|
| 30 |
+
bridge:
|
| 31 |
+
allow-extra-patch-ports: true
|
| 32 |
+
port:
|
| 33 |
+
- name: patch-phy-to-ex
|
| 34 |
+
- name: ovs-bond
|
| 35 |
+
link-aggregation:
|
| 36 |
+
mode: balance-slb
|
| 37 |
+
port:
|
| 38 |
+
- name: enp2s0
|
| 39 |
+
- name: enp3s0
|
| 40 |
+
```
|
| 41 |
+
|
| 42 |
+
**Base64-encode NMState config for MachineConfig embedding:**
|
| 43 |
+
```bash
|
| 44 |
+
base64 -w0 <nmstate_configuration>.yml
|
| 45 |
+
```
|
| 46 |
+
|
| 47 |
+
**MachineConfig manifest to apply bonding config:**
|
| 48 |
+
```yaml
|
| 49 |
+
apiVersion: machineconfiguration.openshift.io/v1
|
| 50 |
+
kind: MachineConfig
|
| 51 |
+
metadata:
|
| 52 |
+
labels:
|
| 53 |
+
machineconfiguration.openshift.io/role: master
|
| 54 |
+
name: 10-br-ex-master
|
| 55 |
+
spec:
|
| 56 |
+
config:
|
| 57 |
+
ignition:
|
| 58 |
+
version: 3.2.0
|
| 59 |
+
storage:
|
| 60 |
+
files:
|
| 61 |
+
- contents:
|
| 62 |
+
source: data:text/plain;charset=utf-8;base64,<base64_encoded_nmstate_configuration>
|
| 63 |
+
mode: 0644
|
| 64 |
+
overwrite: true
|
| 65 |
+
path: /etc/nmstate/openshift/cluster.yml
|
| 66 |
+
```
|
| 67 |
+
|
| 68 |
+
**Procedure summary:**
|
| 69 |
+
1. Define network interfaces in `install-config.yaml` under `networkConfig`
|
| 70 |
+
2. Create NMState `NodeNetworkConfigurationPolicy` with bridge/bond definitions
|
| 71 |
+
3. Base64-encode the NMState config
|
| 72 |
+
4. Embed in `MachineConfig` manifests for `master` and/or `worker` roles
|
| 73 |
+
5. Save manifests to `<installation_directory>/manifests`; MCO applies via rolling update
|
| 74 |
+
|
| 75 |
+
## Relationships
|
| 76 |
+
- **OVN-Kubernetes CNI plugin**: OVS bonding integrates natively with it
|
| 77 |
+
- **NMState operator**: Used to define network interface configurations (`NodeNetworkConfigurationPolicy`)
|
| 78 |
+
- **MachineConfig / MCO**: Delivers bonding configuration to nodes via Ignition
|
| 79 |
+
- **NetworkAttachmentDefinition (NAD)**: VMs connect to localnet NADs to access physical networks through the bonded interfaces
|
| 80 |
+
- **install-config.yaml**: Network interfaces must be defined here for bare-metal hosts
|
| 81 |
+
- **br-ex bridge**: Central OVS bridge in OVN-Kubernetes networking; bonding extends its connectivity via `br-phy`
|
| 82 |
+
|
| 83 |
+
## Exam-Relevant Points
|
| 84 |
+
- OVS bonding supports two modes: **`active-backup`** and **`balance-slb`**
|
| 85 |
+
- `balance-slb` does **not** load-balance OVN-Kubernetes pod traffic (same MAC/VLAN) β it benefits **VM workloads** with distinct MACs
|
| 86 |
+
- Kernel bonding only supports `fail_over_mac=0` (`none`); values `1` and `2` are **unsupported**
|
| 87 |
+
- Kernel bonding is the **default** when no OVS bonds are configured
|
| 88 |
+
- OVS manages MAC addresses at the **bridge level**, not at individual physical interfaces
|
| 89 |
+
- The NMState config is base64-encoded and delivered via **MachineConfig** at path `/etc/nmstate/openshift/cluster.yml`
|
| 90 |
+
- The `br-phy` bridge acts as the **SLB bond controller**; patch ports connect `br-ex` to `br-phy`
|
| 91 |
+
- MTU must be **manually set** on bond ports for `br-ex`
|
| 92 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-using.md
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/advanced_networking/using-ptp-hardware
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-advanced_networking-using.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:18
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This page covers Precision Time Protocol (PTP) hardware configuration in OpenShift Container Platform 4.17. It explains PTP concepts (grandmaster, boundary, and ordinary clocks), the linuxptp and gpsd software packages used for synchronization, how to install and configure the PTP Operator, and how to set up various clock configurations including grandmaster clocks with GNSS sources, boundary clocks, and dual/triple NIC setups for telco RAN deployments.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **PTP (Precision Time Protocol)** provides sub-microsecond clock accuracy using hardware support, more accurate than NTP
|
| 15 |
+
- **Three PTP clock types**: Grandmaster (authoritative time source, syncs to GNSS), Boundary (relays timing between upstream/downstream), Ordinary (single-port, source or destination)
|
| 16 |
+
- **Best Master Clock (BMC) algorithm** automatically creates and updates the leader-follower clock hierarchy
|
| 17 |
+
- **linuxptp package** provides `ts2phc`, `ptp4l`, `phc2sys`, and `pmc` daemons
|
| 18 |
+
- **gpsd package** provides `ubxtool`, `gpspipe`, `gpsd` for GNSS clock synchronization
|
| 19 |
+
- **PTP Operator** discovers PTP-capable devices, manages linuxptp services, and provides clock event notifications
|
| 20 |
+
- PTP Operator works **only on bare-metal infrastructure**
|
| 21 |
+
- **NTP/chronyd must be disabled** before enabling PTP (use MachineConfig CR)
|
| 22 |
+
- GNSS timing supported **only with Intel E810 Westport Channel NICs**
|
| 23 |
+
- **DPLL (Digital Phase-Locked Loop)** synchronizes clock phases between PTP nodes
|
| 24 |
+
- **Leap seconds** can disrupt RAN networks if unhandled
|
| 25 |
+
- **Fast event notifications** use pub-sub REST API via `cloud-event-proxy` sidecar over HTTP
|
| 26 |
+
- **Dual-NIC** configurations: one NIC gets GNSS, second receives timing via SMA1 Tx/Rx connections
|
| 27 |
+
- **3-card NIC** grandmaster clocks supported for D-RAN configurations
|
| 28 |
+
- **Highly available boundary clocks** use dual NICs with A-BMCA algorithm (ITU-T G.8275.1) to maintain sync if one source fails
|
| 29 |
+
- UDP hardware timestamping doesn't work with OVN-Kubernetes on `br-ex` interface (migration concern from openshift-sdn)
|
| 30 |
+
|
| 31 |
+
## Commands and Syntax
|
| 32 |
+
|
| 33 |
+
**Install PTP Operator (CLI):**
|
| 34 |
+
```bash
|
| 35 |
+
# Create namespace
|
| 36 |
+
oc create -f ptp-namespace.yaml # namespace: openshift-ptp
|
| 37 |
+
|
| 38 |
+
# Create OperatorGroup
|
| 39 |
+
oc create -f ptp-operatorgroup.yaml
|
| 40 |
+
|
| 41 |
+
# Subscribe
|
| 42 |
+
oc create -f ptp-sub.yaml # channel: "stable", source: redhat-operators
|
| 43 |
+
|
| 44 |
+
# Verify
|
| 45 |
+
oc get csv -n openshift-ptp -o custom-columns=Name:.metadata.name,Phase:.status.phase
|
| 46 |
+
```
|
| 47 |
+
|
| 48 |
+
**Discover PTP devices:**
|
| 49 |
+
```bash
|
| 50 |
+
oc get NodePtpDevice -n openshift-ptp -o yaml
|
| 51 |
+
```
|
| 52 |
+
|
| 53 |
+
**Key CRDs:**
|
| 54 |
+
- `NodePtpDevice.ptp.openshift.io` β auto-created per node listing PTP-capable NICs
|
| 55 |
+
- `PtpConfig` β configures linuxptp services (ptp4l, phc2sys, ts2phc)
|
| 56 |
+
|
| 57 |
+
**PtpConfig CR structure (grandmaster example):**
|
| 58 |
+
```yaml
|
| 59 |
+
apiVersion: ptp.openshift.io/v1
|
| 60 |
+
kind: PtpConfig
|
| 61 |
+
metadata:
|
| 62 |
+
name: grandmaster
|
| 63 |
+
namespace: openshift-ptp
|
| 64 |
+
spec:
|
| 65 |
+
profile:
|
| 66 |
+
- name: "grandmaster"
|
| 67 |
+
ptp4lOpts: "-2 --summary_interval -4"
|
| 68 |
+
phc2sysOpts: -r -u 0 -m -N 8 -R 16 -s $iface_master -n 24
|
| 69 |
+
ptpSchedulingPolicy: SCHED_FIFO
|
| 70 |
+
ptpSchedulingPriority: 10
|
| 71 |
+
plugins:
|
| 72 |
+
e810:
|
| 73 |
+
enableDefaultConfig: false
|
| 74 |
+
settings:
|
| 75 |
+
LocalMaxHoldoverOffSet: 1500
|
| 76 |
+
LocalHoldoverTimeout: 14400
|
| 77 |
+
MaxInSpecOffset: 1500
|
| 78 |
+
```
|
| 79 |
+
|
| 80 |
+
**Namespace YAML:**
|
| 81 |
+
```yaml
|
| 82 |
+
apiVersion: v1
|
| 83 |
+
kind: Namespace
|
| 84 |
+
metadata:
|
| 85 |
+
name: openshift-ptp
|
| 86 |
+
annotations:
|
| 87 |
+
workload.openshift.io/allowed: management
|
| 88 |
+
labels:
|
| 89 |
+
name: openshift-ptp
|
| 90 |
+
openshift.io/cluster-monitoring: "true"
|
| 91 |
+
```
|
| 92 |
+
|
| 93 |
+
## Relationships
|
| 94 |
+
- **PTP Operator** β installed via OLM (Subscription, OperatorGroup in `openshift-ptp` namespace)
|
| 95 |
+
- **MachineConfig** β used to disable chronyd before enabling PTP
|
| 96 |
+
- **OVN-Kubernetes** β migration from openshift-sdn affects UDP hardware timestamping on br-ex
|
| 97 |
+
- **Telco RAN / vRAN** β primary consumer of PTP; loss of sync can shut down radios
|
| 98 |
+
- **cloud-event-proxy sidecar** β delivers PTP fast event notifications to applications
|
| 99 |
+
- **Intel E810 NIC plugin** β hardware-specific configuration in PtpConfig CR
|
| 100 |
+
- **ITU-T G.8275.1** β standard for A-BMCA algorithm used in HA boundary clock leader selection
|
| 101 |
+
|
| 102 |
+
## Exam-Relevant Points
|
| 103 |
+
- PTP provides **sub-microsecond** accuracy with hardware support; more accurate than NTP
|
| 104 |
+
- PTP Operator runs **only on bare-metal** infrastructure
|
| 105 |
+
- **NTP must be disabled** (chronyd via MachineConfig) before enabling PTP
|
| 106 |
+
- GNSS sources require **Intel E810 Westport Channel NICs only**
|
| 107 |
+
- PTP Operator namespace is `openshift-ptp` with label `openshift.io/cluster-monitoring: "true"`
|
| 108 |
+
- The Operator auto-discovers PTP devices and creates `NodePtpDevice` CRs per node
|
| 109 |
+
- Three clock types: **Grandmaster** (GNSS-synced), **Boundary** (multi-port relay), **Ordinary** (single port)
|
| 110 |
+
- `ptp4l` implements boundary and ordinary clocks; `ts2phc` is used for grandmaster clock configs
|
| 111 |
+
- `phc2sys` synchronizes the **system clock to the PHC** on the NIC
|
| 112 |
+
- Fast event notifications use **pub-sub REST API** via `cloud-event-proxy` sidecar
|
| 113 |
+
- Dual-NIC boundary clocks provide **high availability** β node maintains sync if one timing source fails
|
| 114 |
+
- E810 NIC configuration uses a **plugin** stanza in the `PtpConfig` CR
|
| 115 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-verif.md
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/advanced_networking/verifying-connectivity-endpoint
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-advanced_networking-verif.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:18
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
## Overview
|
| 13 |
+
This page documents OpenShift's built-in network connectivity verification system. The Cluster Network Operator (CNO) runs a connectivity check controller that automatically performs TCP connection health checks between cluster resources every minute, storing results in `PodNetworkConnectivityCheck` objects in the `openshift-network-diagnostics` namespace.
|
| 14 |
+
|
| 15 |
+
## Key Concepts
|
| 16 |
+
- The **connectivity check controller** is managed by the CNO and runs connection tests every minute in parallel
|
| 17 |
+
- **Health check source**: a single pod replica set (Deployment) that initiates connections to endpoints specified in `PodNetworkConnectivityCheck` objects
|
| 18 |
+
- **Health check target**: a DaemonSet pod running on every node, listening for inbound health checks β enables testing connectivity to each node
|
| 19 |
+
- Results are stored in `PodNetworkConnectivityCheck` custom resources (API group: `controlplane.operator.openshift.io/v1alpha1`)
|
| 20 |
+
- All diagnostic resources live in the `openshift-network-diagnostics` namespace
|
| 21 |
+
- Connectivity checks verify TCP reachability to: Kubernetes API server (service + endpoints), OpenShift API server (service + endpoints), load balancers (internal + external), and health check targets (service + endpoints on every node)
|
| 22 |
+
- Diagnostics mode is configured via the `Network` CR (`config.openshift.io/v1`) named `cluster`, under `spec.networkDiagnostics`
|
| 23 |
+
- Mode can be `"All"` (default), `"Disabled"`, or empty string (equivalent to `All`)
|
| 24 |
+
- Pod placement for source/target pods is configurable via `nodeSelector` and `tolerations` under `sourcePlacement` and `targetPlacement`
|
| 25 |
+
- Node labels must be applied **before** updating the network diagnostics configuration β labels applied after are ignored
|
| 26 |
+
- Connection log reasons: `TCPConnect`, `TCPConnectError`, `DNSResolve`, `DNSError`
|
| 27 |
+
- The `PodNetworkConnectivityCheck` status tracks: `conditions`, `failures`, `successes`, and `outages` (with start/end logs)
|
| 28 |
+
|
| 29 |
+
## Commands and Syntax
|
| 30 |
+
|
| 31 |
+
```bash
|
| 32 |
+
# Edit connectivity check pod placement
|
| 33 |
+
oc edit network.config.openshift.io cluster
|
| 34 |
+
|
| 35 |
+
# Verify network diagnostics are enabled
|
| 36 |
+
oc get network.config.openshift.io cluster -o yaml
|
| 37 |
+
# Look for: status.conditions[].type: NetworkDiagnosticsAvailable with status: "True"
|
| 38 |
+
|
| 39 |
+
# List all connectivity check objects
|
| 40 |
+
oc get podnetworkconnectivitycheck -n openshift-network-diagnostics
|
| 41 |
+
|
| 42 |
+
# View detailed connectivity check results
|
| 43 |
+
oc get podnetworkconnectivitycheck <name> -n openshift-network-diagnostics -o yaml
|
| 44 |
+
|
| 45 |
+
# Verify source/target pod placement
|
| 46 |
+
oc get pods -n openshift-network-diagnostics -o wide
|
| 47 |
+
```
|
| 48 |
+
|
| 49 |
+
**Network diagnostics configuration YAML:**
|
| 50 |
+
```yaml
|
| 51 |
+
apiVersion: config.openshift.io/v1
|
| 52 |
+
kind: Network
|
| 53 |
+
metadata:
|
| 54 |
+
name: cluster
|
| 55 |
+
spec:
|
| 56 |
+
networkDiagnostics:
|
| 57 |
+
mode: "All" # "All", "Disabled", or "" (empty = All)
|
| 58 |
+
sourcePlacement:
|
| 59 |
+
nodeSelector:
|
| 60 |
+
checkNodes: groupA
|
| 61 |
+
tolerations:
|
| 62 |
+
- key: myTaint
|
| 63 |
+
effect: NoSchedule
|
| 64 |
+
operator: Exists
|
| 65 |
+
targetPlacement:
|
| 66 |
+
nodeSelector:
|
| 67 |
+
checkNodes: groupB
|
| 68 |
+
tolerations:
|
| 69 |
+
- key: myOtherTaint
|
| 70 |
+
effect: NoExecute
|
| 71 |
+
operator: Exists
|
| 72 |
+
```
|
| 73 |
+
|
| 74 |
+
## Relationships
|
| 75 |
+
- **Cluster Network Operator (CNO)**: manages the connectivity check controller and deploys source/target pods
|
| 76 |
+
- **Network CR** (`config.openshift.io/v1`): central configuration point for network diagnostics settings; also relates to `network.operator.openshift.io` CR's `spec.disableNetworkDiagnostics` field (the `networkDiagnostics` stanza overrides it)
|
| 77 |
+
- **Node scheduling**: ties into Kubernetes node selectors and tolerations for pod placement
|
| 78 |
+
- **Troubleshooting workflows**: use connectivity checks to diagnose or eliminate network issues when investigating cluster problems
|
| 79 |
+
- Source pod names follow the pattern `network-check-source-*`, targets follow `network-check-target-*`
|
| 80 |
+
- Object naming convention: `<source>-to-<target>` where target includes identifiers like `kubernetes-apiserver-endpoint`, `load-balancer-api-external`, `openshift-apiserver-service-cluster`, etc.
|
| 81 |
+
|
| 82 |
+
## Exam-Relevant Points
|
| 83 |
+
- Connectivity checks run **every minute** in parallel
|
| 84 |
+
- All objects are in the `openshift-network-diagnostics` namespace
|
| 85 |
+
- The `PodNetworkConnectivityCheck` object name format is `<source>-to-<target>`
|
| 86 |
+
- Diagnostics are configured on the `Network` CR named `cluster` (API: `config.openshift.io/v1`)
|
| 87 |
+
- Three diagnostics modes: `All`, `Disabled`, empty string (= `All`)
|
| 88 |
+
- Source pod is a **Deployment** (single replica); target pods are a **DaemonSet** (every node)
|
| 89 |
+
- Node labels must exist **before** updating diagnostics configuration
|
| 90 |
+
- To check if diagnostics are enabled, look for condition type `NetworkDiagnosticsAvailable` with status `"True"`
|
| 91 |
+
- Connection log `reason` values: `TCPConnect`, `TCPConnectError`, `DNSResolve`, `DNSError`
|
| 92 |
+
- Requires `cluster-admin` role to verify connectivity
|
| 93 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/advanced_networking
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-advanced_networking.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:18
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
The Advanced Networking section in OpenShift Container Platform 4.17 covers specialized networking topics beyond basic cluster networking, including MTU changes, connectivity verification, Stream Control Transmission Protocol (SCTP), Precision Time Protocol (PTP) hardware, and secondary interface metrics.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **MTU changes** β Modifying Maximum Transmission Unit sizes for cluster networks
|
| 15 |
+
- **Connectivity verification** β Tools/mechanisms to verify network connectivity within the cluster
|
| 16 |
+
- **SCTP (Stream Control Transmission Protocol)** β A transport-layer protocol supported as an advanced networking feature in OCP
|
| 17 |
+
- **PTP (Precision Time Protocol) hardware** β Hardware-based precision time synchronization for nodes
|
| 18 |
+
- **Secondary interface metrics** β Monitoring and metrics collection for secondary (non-primary) network interfaces
|
| 19 |
+
|
| 20 |
+
## Commands and Syntax
|
| 21 |
+
No specific commands provided on this index page β each subtopic has its own detailed page.
|
| 22 |
+
|
| 23 |
+
## Relationships
|
| 24 |
+
- Builds on top of the base **Cluster Networking** configuration (SDN/OVN-Kubernetes)
|
| 25 |
+
- **SCTP** relates to workloads requiring multi-streaming transport (e.g., telecom/5G)
|
| 26 |
+
- **PTP** relates to **node configuration** and is critical for telco/RAN workloads requiring sub-microsecond time sync
|
| 27 |
+
- **Secondary interface metrics** connects to **Multus CNI** and multiple network attachments
|
| 28 |
+
- **MTU changes** affect both **cluster network operator** configuration and **node network state**
|
| 29 |
+
|
| 30 |
+
## Exam-Relevant Points
|
| 31 |
+
- Know that OCP supports SCTP as an advanced protocol option beyond TCP/UDP
|
| 32 |
+
- PTP hardware support is a distinct advanced networking feature (important for telco use cases)
|
| 33 |
+
- MTU changes are classified as an advanced networking operation (not a day-1 install config change)
|
| 34 |
+
- Secondary interfaces can be monitored via dedicated metrics (ties into Multus/multiple networks)
|
| 35 |
+
- Connectivity verification is a built-in capability for troubleshooting network issues
|
| 36 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-api-index.md
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/api_overview/api-index
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-api_overview-api-index.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:19
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
|
| 12 |
+
This page provides the complete API index for OpenShift Container Platform 4.17, listing every API resource available in the platform alongside its API group. It serves as a reference catalog mapping resource kinds to their fully qualified API group versions, covering both upstream Kubernetes APIs and OpenShift-specific extensions.
|
| 13 |
+
|
| 14 |
+
## Key Concepts
|
| 15 |
+
|
| 16 |
+
- **API Groups** organize related resources under a common path (e.g., `apps/v1`, `config.openshift.io/v1`)
|
| 17 |
+
- **Core APIs** (API group `v1`) include fundamental resources: Pod, Service, ConfigMap, Secret, Namespace, Node, PersistentVolume, PersistentVolumeClaim, Endpoints, Event, LimitRange, ResourceQuota, ServiceAccount
|
| 18 |
+
- **OpenShift-specific API groups** extend Kubernetes with platform capabilities:
|
| 19 |
+
- `config.openshift.io/v1` β cluster-wide configuration (OAuth, Image, Network, Ingress, Infrastructure, Proxy, Scheduler, DNS, FeatureGate, ClusterVersion, ClusterOperator, APIServer, etc.)
|
| 20 |
+
- `operator.openshift.io/v1` β operator management resources
|
| 21 |
+
- `build.openshift.io/v1` β Build, BuildConfig, BuildLog, BuildRequest
|
| 22 |
+
- `route.openshift.io/v1` β Route (OpenShift's ingress mechanism)
|
| 23 |
+
- `image.openshift.io/v1` β ImageStream and related resources
|
| 24 |
+
- `apps.openshift.io/v1` β DeploymentConfig (legacy)
|
| 25 |
+
- `security.openshift.io/v1` β SecurityContextConstraints (SCC)
|
| 26 |
+
- `project.openshift.io/v1` β Project, ProjectRequest
|
| 27 |
+
- `quota.openshift.io/v1` β ClusterResourceQuota
|
| 28 |
+
- `oauth.openshift.io/v1` β OAuth tokens and clients
|
| 29 |
+
- `user.openshift.io/v1` β User, Group, Identity
|
| 30 |
+
- `template.openshift.io/v1` β Template, TemplateInstance
|
| 31 |
+
- **Some resources exist in multiple API groups** (e.g., ClusterRole exists in both `authorization.openshift.io/v1` and `rbac.authorization.k8s.io/v1`; DNS in both `config.openshift.io/v1` and `operator.openshift.io/v1`)
|
| 32 |
+
- **OLM (Operator Lifecycle Manager) APIs** under `operators.coreos.com` β CatalogSource, ClusterServiceVersion, Subscription, InstallPlan, OperatorGroup, OperatorCondition, OLMConfig
|
| 33 |
+
- **Monitoring APIs** β Prometheus, Alertmanager, PrometheusRule, ServiceMonitor, PodMonitor (under `monitoring.coreos.com/v1`); AlertingRule, AlertRelabelConfig (under `monitoring.openshift.io/v1`)
|
| 34 |
+
- **Machine management APIs** under `machine.openshift.io` β Machine, MachineSet, MachineHealthCheck, ControlPlaneMachineSet
|
| 35 |
+
- **Machine configuration APIs** under `machineconfiguration.openshift.io/v1` β MachineConfig, MachineConfigPool, KubeletConfig, ContainerRuntimeConfig
|
| 36 |
+
- **OVN networking APIs** under `k8s.ovn.org/v1` β EgressFirewall, EgressIP, EgressQoS, EgressService
|
| 37 |
+
- **Bare metal APIs** under `metal3.io/v1alpha1` β BareMetalHost, FirmwareSchema, Provisioning, etc.
|
| 38 |
+
- **Storage APIs** β CSIDriver, CSINode, StorageClass, VolumeSnapshot, VolumeSnapshotClass, VolumeSnapshotContent
|
| 39 |
+
|
| 40 |
+
## Commands and Syntax
|
| 41 |
+
|
| 42 |
+
No commands on this page β it is a pure reference index. To interact with these APIs:
|
| 43 |
+
|
| 44 |
+
```bash
|
| 45 |
+
# List all API resources on a cluster
|
| 46 |
+
oc api-resources
|
| 47 |
+
|
| 48 |
+
# Get resources from a specific API group
|
| 49 |
+
oc get clusterversion # config.openshift.io/v1
|
| 50 |
+
oc get machineconfig # machineconfiguration.openshift.io/v1
|
| 51 |
+
oc get route -n <namespace> # route.openshift.io/v1
|
| 52 |
+
|
| 53 |
+
# Explain a resource's schema
|
| 54 |
+
oc explain route.spec
|
| 55 |
+
```
|
| 56 |
+
|
| 57 |
+
## Relationships
|
| 58 |
+
|
| 59 |
+
- **config.openshift.io/v1** resources define cluster-wide settings consumed by operators tracked via **ClusterOperator**
|
| 60 |
+
- **operator.openshift.io/v1** resources configure individual operators that reconcile the config.openshift.io resources
|
| 61 |
+
- **OLM resources** (CatalogSource β Subscription β InstallPlan β ClusterServiceVersion) form the operator installation lifecycle
|
| 62 |
+
- **Machine API** chain: MachineSet β Machine β Node; MachineConfigPool β MachineConfig applies OS-level configuration
|
| 63 |
+
- **RBAC** resources (Role, ClusterRole, RoleBinding, ClusterRoleBinding) in `rbac.authorization.k8s.io/v1` mirror OpenShift's `authorization.openshift.io/v1` equivalents
|
| 64 |
+
- **Networking** spans multiple groups: NetworkPolicy (k8s), EgressFirewall/EgressIP (OVN), Route (OpenShift), Ingress (k8s), IngressController (operator)
|
| 65 |
+
|
| 66 |
+
## Exam-Relevant Points
|
| 67 |
+
|
| 68 |
+
- Know which API group a resource belongs to β especially `config.openshift.io/v1` vs `operator.openshift.io/v1`
|
| 69 |
+
- **SecurityContextConstraints** is under `security.openshift.io/v1` (OpenShift-specific, not standard Kubernetes)
|
| 70 |
+
- **Route** is `route.openshift.io/v1` β OpenShift's native ingress, distinct from Kubernetes Ingress (`networking.k8s.io/v1`)
|
| 71 |
+
- **DeploymentConfig** (`apps.openshift.io/v1`) is OpenShift-specific and legacy; **Deployment** (`apps/v1`) is the standard Kubernetes resource
|
| 72 |
+
- **ClusterVersion** (`config.openshift.io/v1`) tracks the cluster's current and desired version β key for upgrades
|
| 73 |
+
- **ClusterOperator** (`config.openshift.io/v1`) reports operator status β essential for troubleshooting
|
| 74 |
+
- Core v1 resources (Pod, Service, ConfigMap, Secret, Namespace, Node, PV, PVC) have no API group prefix
|
| 75 |
+
- **ImageStream** (`image.openshift.io/v1`) is OpenShift-specific for image management
|
| 76 |
+
- **MachineConfigPool** and **MachineConfig** are under `machineconfiguration.openshift.io/v1` β critical for node configuration
|
| 77 |
+
- **Project** vs **Namespace**: Project (`project.openshift.io/v1`) wraps Namespace (`v1`) with additional policy
|
| 78 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-compatibilit.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/api_overview/compatibility-guidelines
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-api_overview-compatibilit.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:19
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This page defines Red Hat's API compatibility guidelines for OpenShift Container Platform, covering how APIs are maintained across releases, what exceptions exist, and key terminology around release types and support tiers. It is essential reading for understanding what is and isn't guaranteed to remain stable between OCP versions.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
|
| 15 |
+
- **Forward compatibility only**: Applications built for OCP 4.14 are not guaranteed to work on 4.13 β they must run on an environment as new or newer than the one they target.
|
| 16 |
+
- **No direct etcd access**: All etcd operations must go through the API server or documented backup/restore procedures.
|
| 17 |
+
- **`unsupported<FieldName>` prefix**: API fields with this prefix have zero compatibility guarantees across or within releases.
|
| 18 |
+
- **Undocumented annotations**: Usage of annotations not explicitly mentioned in product docs is not assured across minor releases.
|
| 19 |
+
- **RHCOS filesystem modifications**: Not preserved across minor releases unless made through a supported Operator (MCO, Node Tuning Operator).
|
| 20 |
+
- **Cloud infrastructure modifications**: Not preserved unless made through a public product interface or documented supported configuration.
|
| 21 |
+
- **Functional defaults may differ**: A fresh install of version X may have different defaults than a cluster upgraded to version X from an earlier version.
|
| 22 |
+
- **API availability varies by topology**: Not all APIs are present in every installation topology (e.g., some topologies may restrict or omit certain APIs).
|
| 23 |
+
- **z-stream releases never break API/AOE compatibility** except for critical security issues.
|
| 24 |
+
- **EUS deprecation policy**: Deprecation is defined across minor releases, not EUS releases β EUS users may need to respond to deprecations when migrating between EUS versions by upgrading through each minor release sequentially.
|
| 25 |
+
|
| 26 |
+
## Commands and Syntax
|
| 27 |
+
|
| 28 |
+
No specific CLI commands on this page. The guidelines are policy-oriented, not procedural.
|
| 29 |
+
|
| 30 |
+
## Relationships
|
| 31 |
+
|
| 32 |
+
- **Machine Config Operator / Node Tuning Operator**: The supported interfaces for host OS modifications on RHCOS.
|
| 33 |
+
- **RHEL compatibility guidelines**: OCP inherits and extends RHEL ABI compatibility principles (avoid `proc`/`sys`/`debug` filesystems, `ioctls`, direct `cgroups` interaction).
|
| 34 |
+
- **API tiers**: References a tiered support model (defined elsewhere) that determines compatibility guarantees per API.
|
| 35 |
+
- **Cloud provider integrations**: Dynamic volume provisioning, service load balancers, pod workload identity, and compute management are integration points subject to both OCP and cloud vendor compatibility windows.
|
| 36 |
+
- **Developer Preview vs Technology Preview**: Two distinct pre-GA support levels β Developer Preview is unsupported and opt-in (may render cluster unsupportable); Technology Preview is partially supported but not production-ready.
|
| 37 |
+
|
| 38 |
+
## Exam-Relevant Points
|
| 39 |
+
|
| 40 |
+
- **Release versioning**: In `4.13.2` β 4 = major, 13 = minor, 2 = z-stream.
|
| 41 |
+
- **z-stream = no breaking changes** (except critical security).
|
| 42 |
+
- **AOE definition**: Containerized environment sharing the host kernel but isolated from host OS libraries/binaries. Does not include CNI plugin selection or admission hooks.
|
| 43 |
+
- **EUS**: Extended User Support β extended support window for critical fixes on select minor releases; upgrade path requires sequential minor release adoption.
|
| 44 |
+
- **Developer Preview**: Opt-in, unsupported, may render cluster unsupportable, can be removed at any time.
|
| 45 |
+
- **Technology Preview**: Opt-in, not fully supported, not for production use, provides early access to upcoming features.
|
| 46 |
+
- **Never depend on**: specific kernel versions, `proc`/`sys`/`debug` filesystems, direct `cgroups` interaction, `ioctls`, `unsupported`-prefixed fields, undocumented annotations, or system package config files.
|
| 47 |
+
- **Always use**: published client libraries, Operator-provided APIs over direct config file modification, API server for all cluster state access.
|
| 48 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-editing-kube.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/api_overview/editing-kubelet-log-level-verbosity
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-api_overview-editing-kube.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:20
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This page covers how to modify kubelet log verbosity levels in OpenShift Container Platform for troubleshooting node issues. It describes both temporary (one-time) and persistent methods for changing log levels, explains the meaning of each verbosity level, and provides commands for gathering kubelet logs from cluster nodes.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Kubelet log verbosity** is controlled via the `KUBELET_LOG_LEVEL` environment variable, configured through systemd drop-in files
|
| 15 |
+
- The **default log level is 2**, which provides useful steady-state information and is the recommended default
|
| 16 |
+
- Log levels **0β4 are debug-level**; levels **5β8 are trace-level**
|
| 17 |
+
- Systemd drop-in files use numeric ordering β `30-logging.conf` overrides `20-logging.conf`
|
| 18 |
+
- **One-time changes** are made directly on the node and don't survive reboots
|
| 19 |
+
- **Persistent changes** use a `MachineConfig` object, which survives reboots and is managed by the Machine Config Operator
|
| 20 |
+
|
| 21 |
+
## Commands and Syntax
|
| 22 |
+
|
| 23 |
+
**One-time kubelet log level change (via debug node):**
|
| 24 |
+
```bash
|
| 25 |
+
oc debug node/<node>
|
| 26 |
+
chroot /host
|
| 27 |
+
systemctl cat kubelet # check current log level
|
| 28 |
+
echo -e "[Service]\nEnvironment=\"KUBELET_LOG_LEVEL=8\"" > /etc/systemd/system/kubelet.service.d/30-logging.conf
|
| 29 |
+
systemctl daemon-reload
|
| 30 |
+
systemctl restart kubelet
|
| 31 |
+
```
|
| 32 |
+
|
| 33 |
+
**Revert one-time change:**
|
| 34 |
+
```bash
|
| 35 |
+
rm -f /etc/systemd/system/kubelet.service.d/30-logging.conf
|
| 36 |
+
systemctl daemon-reload
|
| 37 |
+
systemctl restart kubelet
|
| 38 |
+
```
|
| 39 |
+
|
| 40 |
+
**Persistent log level via MachineConfig:**
|
| 41 |
+
```yaml
|
| 42 |
+
apiVersion: machineconfiguration.openshift.io/v1
|
| 43 |
+
kind: MachineConfig
|
| 44 |
+
metadata:
|
| 45 |
+
labels:
|
| 46 |
+
machineconfiguration.openshift.io/role: master
|
| 47 |
+
name: 99-master-kubelet-loglevel
|
| 48 |
+
spec:
|
| 49 |
+
config:
|
| 50 |
+
ignition:
|
| 51 |
+
version: 3.2.0
|
| 52 |
+
systemd:
|
| 53 |
+
units:
|
| 54 |
+
- name: kubelet.service
|
| 55 |
+
enabled: true
|
| 56 |
+
dropins:
|
| 57 |
+
- name: 30-logging.conf
|
| 58 |
+
contents: |
|
| 59 |
+
[Service]
|
| 60 |
+
Environment="KUBELET_LOG_LEVEL=2"
|
| 61 |
+
```
|
| 62 |
+
|
| 63 |
+
**Gathering logs:**
|
| 64 |
+
```bash
|
| 65 |
+
oc adm node-logs --role master -u kubelet # master kubelet logs
|
| 66 |
+
oc adm node-logs --role worker -u kubelet # worker kubelet logs
|
| 67 |
+
journalctl -b -f -u kubelet.service # from inside the node
|
| 68 |
+
sudo tail -f /var/log/containers/* # container logs on node
|
| 69 |
+
# All nodes at once:
|
| 70 |
+
for n in $(oc get node --no-headers | awk '{print $1}'); do oc adm node-logs $n | gzip > $n.log.gz; done
|
| 71 |
+
```
|
| 72 |
+
|
| 73 |
+
## Relationships
|
| 74 |
+
- **MachineConfig / Machine Config Operator (MCO)**: Persistent log level changes are applied through MachineConfig objects, which the MCO rolls out to nodes
|
| 75 |
+
- **`oc debug node`**: The primary mechanism for accessing node internals for one-time troubleshooting
|
| 76 |
+
- **systemd**: Kubelet runs as a systemd service; log level is configured via systemd drop-in files
|
| 77 |
+
- **`oc adm node-logs`**: The cluster-external way to retrieve node-level service logs without SSH
|
| 78 |
+
- **Ignition**: MachineConfig uses Ignition spec (v3.2.0) to define systemd unit drop-ins
|
| 79 |
+
|
| 80 |
+
## Exam-Relevant Points
|
| 81 |
+
- The default kubelet log level is **2** (`KUBELET_LOG_LEVEL=2`)
|
| 82 |
+
- Log levels 0β4 = debug; 5β8 = trace
|
| 83 |
+
- One-time log changes go in `/etc/systemd/system/kubelet.service.d/30-logging.conf` and require `systemctl daemon-reload && systemctl restart kubelet`
|
| 84 |
+
- `oc adm node-logs --role <role> -u kubelet` gathers kubelet logs by node role without needing SSH
|
| 85 |
+
- Persistent changes require a **MachineConfig** with the `machineconfiguration.openshift.io/role` label targeting the correct pool (master/worker)
|
| 86 |
+
- `oc debug node/<node>` followed by `chroot /host` is the standard way to access a node's filesystem for troubleshooting
|
| 87 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-index.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/api_overview/index
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-api_overview-index.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:20
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This is the landing page for the OpenShift Container Platform 4.17 API overview documentation. It serves as an entry point to the API reference material but contains minimal substantive content itself β it primarily links to the detailed API documentation sections.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- OpenShift Container Platform exposes its functionality through a comprehensive **REST API**
|
| 15 |
+
- The API documentation covers OCP version **4.17** (with docs available across versions 3.0β4.21)
|
| 16 |
+
- The API overview is maintained by the **Red Hat OpenShift Documentation Team**
|
| 17 |
+
- Documentation is available in **multi-page**, **single-page**, and **PDF** formats
|
| 18 |
+
|
| 19 |
+
## Commands and Syntax
|
| 20 |
+
No commands or syntax are provided on this landing page. The actual API endpoints and usage are documented in sub-pages.
|
| 21 |
+
|
| 22 |
+
## Relationships
|
| 23 |
+
- **Kubernetes API**: OCP's API extends the upstream Kubernetes API with additional resources (Routes, DeploymentConfigs, BuildConfigs, etc.)
|
| 24 |
+
- **oc CLI**: The `oc` command-line tool is the primary client for interacting with the OCP API
|
| 25 |
+
- **OAuth/Authentication**: API access is governed by OCP's authentication and authorization mechanisms
|
| 26 |
+
- **Operators**: Many OCP APIs are provided by Operators via Custom Resource Definitions (CRDs)
|
| 27 |
+
|
| 28 |
+
## Exam-Relevant Points
|
| 29 |
+
- OpenShift Container Platform is **API-driven** β all cluster operations can be performed via the API
|
| 30 |
+
- The API is versioned and version-specific documentation exists for each OCP release
|
| 31 |
+
- Understanding the API structure is foundational for topics like automation, CI/CD integration, and custom controller development
|
| 32 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-understandin.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/api_overview/understanding-api-support-tiers
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-api_overview-understandin.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:20
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This page defines the API compatibility tier system used by Red Hat OpenShift Container Platform. It classifies all commercially supported APIs, components, and features into four tiers (1β4) with decreasing stability guarantees, maps specific API groups to those tiers, and describes the deprecation policy governing how and when APIs can be removed.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **API Tier 1**: Stable within a major release. Cannot be removed until a subsequent major release. Highest compatibility guarantee.
|
| 15 |
+
- **API Tier 2**: Stable for at least 9 months or 3 minor releases from deprecation announcement, whichever is longer.
|
| 16 |
+
- **API Tier 3**: Component-specific lifetime; minor-to-minor compatibility is not guaranteed. Default tier for API groups without explicit assignment. Operators from OperatorHub fall here.
|
| 17 |
+
- **API Tier 4**: No compatibility guaranteed. Can change at any time. `v1alpha1` APIs default to this tier. Internal CRDs used by Operators should be annotated as tier 4 via `operators.operatorframework.io/internal-objects`.
|
| 18 |
+
- **AOE (Application Operating Environment)**: The runtime environment compatibility level, governed by the same tier system.
|
| 19 |
+
- Cloud-specific and hardware-specific integrations have no compatibility beyond what the vendor provides.
|
| 20 |
+
- Developers should only depend on formally documented API behavior, not implementation-specific behavior or bugs.
|
| 21 |
+
- Deprecation policy covers: REST resources (API objects), fields, annotations (excluding version-specific qualifiers), and enumerated/constant values.
|
| 22 |
+
- Tier 1 rules: elements removed only by incrementing group version; round-trip between versions without info loss; cannot deprecate until an equally stable version exists.
|
| 23 |
+
|
| 24 |
+
## Commands and Syntax
|
| 25 |
+
No CLI commands on this page, but relevant annotations and conventions:
|
| 26 |
+
- `operators.operatorframework.io/internal-objects` β CSV annotation marking CRDs as internal/tier 4
|
| 27 |
+
- API group suffixes determine governance:
|
| 28 |
+
- `*.k8s.io` or `version.<name>` β Kubernetes deprecation policy
|
| 29 |
+
- `*.openshift.io` β OpenShift deprecation policy
|
| 30 |
+
- `monitoring.coreos.com` β All versions (including alpha/beta) are Tier 1
|
| 31 |
+
- `operators.coreos.com` β All versions (including alpha) are Tier 1
|
| 32 |
+
|
| 33 |
+
## Relationships
|
| 34 |
+
- **Kubernetes deprecation policy**: OCP inherits and normalizes upstream Kubernetes API versioning conventions (v1βTier 1, v1beta1βTier 2, v1alpha1βTier 4).
|
| 35 |
+
- **Operator Lifecycle Manager (OLM)**: APIs under `operators.coreos.com` are all Tier 1 regardless of version suffix.
|
| 36 |
+
- **OperatorHub / Operators**: Components delivered via OperatorHub are Tier 3 by default β developers must consult per-component compatibility docs.
|
| 37 |
+
- **CLI deprecation**: CLI elements inherit API tier of their underlying API, defaulting to Tier 1 for GA, Tier 3 for Tech Preview, Tier 4 for Developer Preview.
|
| 38 |
+
- **Component removal**: Governed by the highest-tier API the component exposes.
|
| 39 |
+
|
| 40 |
+
## Exam-Relevant Points
|
| 41 |
+
- **Tier 1 = stable within major release; Tier 2 = 9 months or 3 releases; Tier 3 = component-specific; Tier 4 = no guarantee.**
|
| 42 |
+
- `v1alpha1` APIs default to **Tier 4** (no compatibility), except for `monitoring.coreos.com` and `operators.coreos.com` where alpha is **Tier 1**.
|
| 43 |
+
- Any API group without an explicit tier assignment defaults to **Tier 3**.
|
| 44 |
+
- `route.openshift.io/v1`, `config.openshift.io/v1`, `oauth.openshift.io/v1` are all **Tier 1**.
|
| 45 |
+
- `console.openshift.io/v1` is notably **Tier 2**, not Tier 1.
|
| 46 |
+
- `security.openshift.io/v1` is Tier 1 **except** `RangeAllocation` (Tier 4) and `*Reviews` (Tier 2).
|
| 47 |
+
- GA CLI flags/commands are **Tier 1**; Tech Preview CLI elements are **Tier 3**; Developer Preview are **Tier 4**.
|
| 48 |
+
- Tier 1 APIs must round-trip between versions without information loss.
|
| 49 |
+
- Component deprecation timeline is dictated by its **highest-tier** API.
|
| 50 |
+
- This guidance does **not** cover layered OCP offerings.
|
| 51 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/api_overview
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-api_overview.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:21
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This is the landing page for the OpenShift Container Platform 4.17 API overview documentation. It serves as an entry point to API reference material for OCP, providing navigation to detailed API documentation. The page itself contains minimal substantive content beyond framing.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- OpenShift Container Platform exposes a comprehensive **API** that underpins all platform operations
|
| 15 |
+
- The API documentation is versioned per OCP release (this covers **4.17**)
|
| 16 |
+
- API docs are available in multi-page, single-page, and PDF formats
|
| 17 |
+
- The API is the foundational interface through which all OCP resources (pods, deployments, routes, builds, etc.) are managed
|
| 18 |
+
|
| 19 |
+
## Commands and Syntax
|
| 20 |
+
No specific commands or syntax are provided on this landing page.
|
| 21 |
+
|
| 22 |
+
## Relationships
|
| 23 |
+
- **Kubernetes API**: OCP's API extends the upstream Kubernetes API with additional resource types (Routes, BuildConfigs, DeploymentConfigs, ImageStreams, etc.)
|
| 24 |
+
- **oc CLI**: The `oc` command-line tool interacts with these APIs
|
| 25 |
+
- **Custom Resources (CRDs)**: Operators extend the API surface with custom resource definitions
|
| 26 |
+
- **RBAC**: API access is governed by role-based access control policies
|
| 27 |
+
|
| 28 |
+
## Exam-Relevant Points
|
| 29 |
+
- OpenShift Container Platform builds on and extends the Kubernetes API
|
| 30 |
+
- Every `oc` command corresponds to an underlying API call
|
| 31 |
+
- Understanding the API group structure (e.g., `apps.openshift.io`, `route.openshift.io`, `build.openshift.io`) is important for RBAC and resource management
|
| 32 |
+
- API versions follow the OCP release versioning (docs are version-specific)
|
| 33 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-about-the-mu.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/architecture/about-the-multicluster-engine-for-kubernetes-operator
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-architecture-about-the-mu.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:21
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
The multicluster engine for Kubernetes Operator addresses the challenge of managing the lifecycle of multiple Kubernetes clusters at scale. It provides full lifecycle management for OpenShift Container Platform clusters and partial lifecycle management for other Kubernetes distributions. It is available either as a standalone operator included with OpenShift Container Platform / OpenShift Kubernetes Engine subscriptions, or as part of Red Hat Advanced Cluster Management for Kubernetes (RHACM).
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Multicluster engine Operator**: An operator for managing the lifecycle of a fleet of Kubernetes clusters at scale
|
| 15 |
+
- **Two delivery modes**: Standalone operator (included with OCP subscription) or as part of RHACM
|
| 16 |
+
- **Delivered separately** from the core OCP payload β must be installed after deploying OCP
|
| 17 |
+
- **Full lifecycle management** for managed OCP clusters; **partial lifecycle** for other Kubernetes distributions
|
| 18 |
+
- **RHACM relationship**: Multicluster engine is an integral part of RHACM and is enabled by default when RHACM is installed
|
| 19 |
+
|
| 20 |
+
## Commands and Syntax
|
| 21 |
+
No specific CLI commands are documented on this page. Installation is referenced via the RHACM documentation: "Installing and upgrading multicluster engine operator."
|
| 22 |
+
|
| 23 |
+
## Key Capabilities (when enabled on OCP)
|
| 24 |
+
- **Hosted control planes** (based on HyperShift): Operate OCP clusters in a hyperscale manner with centralized hosted control planes
|
| 25 |
+
- **Hive**: Provisions self-managed OCP clusters to the hub and performs initial cluster configuration
|
| 26 |
+
- **klusterlet agent**: Registers managed clusters to the hub
|
| 27 |
+
- **Infrastructure Operator**: Manages Assisted Service deployment for on-premise bare metal and vSphere OCP installations (including single-node OpenShift). Includes **GitOps Zero Touch Provisioning (ZTP)** for fully automated bare metal and vSphere provisioning using GitOps workflows
|
| 28 |
+
- **Open cluster management**: Provides resources for managing Kubernetes clusters
|
| 29 |
+
|
| 30 |
+
## Relationships
|
| 31 |
+
- **OpenShift Container Platform**: Multicluster engine runs on top of OCP and extends it with fleet management
|
| 32 |
+
- **Red Hat Advanced Cluster Management (RHACM)**: Multicluster engine is a subset of RHACM; RHACM provides additional capabilities beyond what multicluster engine alone offers
|
| 33 |
+
- **HyperShift**: The upstream project that hosted control planes are based on
|
| 34 |
+
- **Assisted Service / Infrastructure Operator**: Ties into bare metal and vSphere provisioning workflows
|
| 35 |
+
- **GitOps ZTP**: Integrates with the Infrastructure Operator for automated edge/bare metal deployments
|
| 36 |
+
- **Hive**: The provisioning component for self-managed clusters
|
| 37 |
+
|
| 38 |
+
## Exam-Relevant Points
|
| 39 |
+
- Multicluster engine is **included with OCP subscription** but **delivered separately** from the core payload β it must be explicitly installed
|
| 40 |
+
- It provides **full lifecycle** for OCP clusters but only **partial lifecycle** for non-OCP Kubernetes
|
| 41 |
+
- **Hosted control planes** (HyperShift-based) enable hyperscale cluster operations
|
| 42 |
+
- **Hive** provisions self-managed clusters; **klusterlet** registers managed clusters to the hub
|
| 43 |
+
- **Infrastructure Operator** handles bare metal and vSphere installations, including single-node OpenShift
|
| 44 |
+
- **GitOps ZTP** automates bare metal and vSphere cluster creation with GitOps workflows
|
| 45 |
+
- If you need capabilities **beyond** what multicluster engine provides, use **RHACM**
|
| 46 |
+
- Multicluster engine is **enabled by default** in RHACM
|
| 47 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-admission-pl.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/architecture/admission-plug-ins
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-architecture-admission-pl.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:21
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
Admission plugins in OpenShift Container Platform intercept API requests after authentication and authorization to enforce policies such as security, resource limits, and configuration requirements. They run sequentially in an admission chain, and the chain can be extended dynamically using webhook admission plugins that call external webhook servers.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Admission chain**: Plugins run in sequence; if any plugin rejects a request, the entire chain aborts and returns an error
|
| 15 |
+
- **Two types of webhook admission plugins**: mutating (runs first, can modify resources and validate) and validating (runs after mutating, validates only)
|
| 16 |
+
- **Default plugins**: OCP 4.17 ships with a large set of default validating and mutating plugins that are required for proper cluster functioning
|
| 17 |
+
- **Webhook parallelism**: When webhooks are called, they are called in parallel; all must approve or the request is denied (only the first denial reason is returned)
|
| 18 |
+
- **Failure policy**: Webhooks can be configured with `Fail` (deny on error) or `Ignore` (accept on error); `Ignore` can cause unpredictable behavior
|
| 19 |
+
- **TLS required**: Communication between webhook admission plugin and webhook server must use TLS
|
| 20 |
+
- **Maximum webhook timeout**: 13 seconds (cannot be changed)
|
| 21 |
+
- **Highly privileged projects** (`default`, `kube-public`, `kube-system`, `openshift`, `openshift-infra`, `openshift-node`, and projects with `openshift.io/run-level` label `0` or `1`) bypass admission plugins like pod security admission, SCCs, cluster resource quotas, and image reference resolution
|
| 22 |
+
|
| 23 |
+
## Commands and Syntax
|
| 24 |
+
|
| 25 |
+
**Webhook configuration resources:**
|
| 26 |
+
- `MutatingWebhookConfiguration` (kind) β `admissionregistration.k8s.io/v1beta1`
|
| 27 |
+
- `ValidatingWebhookConfiguration` (kind) β `admissionregistration.k8s.io/v1beta1`
|
| 28 |
+
|
| 29 |
+
**Key fields in webhook config:**
|
| 30 |
+
```yaml
|
| 31 |
+
webhooks:
|
| 32 |
+
- name: <webhook_name>
|
| 33 |
+
clientConfig:
|
| 34 |
+
service:
|
| 35 |
+
namespace: default
|
| 36 |
+
name: kubernetes
|
| 37 |
+
path: <webhook_url>
|
| 38 |
+
caBundle: <ca_signing_certificate> # PEM-encoded, base64
|
| 39 |
+
rules:
|
| 40 |
+
- operations: [create, update, delete, connect]
|
| 41 |
+
apiGroups: [""]
|
| 42 |
+
apiVersions: ["*"]
|
| 43 |
+
resources: [<resource>]
|
| 44 |
+
failurePolicy: Fail | Ignore
|
| 45 |
+
sideEffects: None
|
| 46 |
+
```
|
| 47 |
+
|
| 48 |
+
**Deploying a dynamic webhook (high-level procedure):**
|
| 49 |
+
1. Build and publish webhook server container image
|
| 50 |
+
2. Create CA key/cert, sign webhook server's CSR
|
| 51 |
+
3. `oc new-project my-webhook-namespace`
|
| 52 |
+
4. Define and apply RBAC rules: `oc auth reconcile -f rbac.yaml`
|
| 53 |
+
5. Deploy webhook as DaemonSet: `oc apply -f webhook-daemonset.yaml`
|
| 54 |
+
6. Create TLS secret: `oc apply -f webhook-secret.yaml`
|
| 55 |
+
7. Create ServiceAccount and Service: `oc apply -f webhook-service.yaml`
|
| 56 |
+
8. Register as aggregated API server via `APIService` resource
|
| 57 |
+
9. Create the `ValidatingWebhookConfiguration` or `MutatingWebhookConfiguration`
|
| 58 |
+
|
| 59 |
+
## Relationships
|
| 60 |
+
- **Security Context Constraints (SCCs)**: `security.openshift.io/SecurityContextConstraint` is a default admission plugin
|
| 61 |
+
- **Resource Quotas**: Both `ResourceQuota` and `quota.openshift.io/ClusterResourceQuota` are default validating plugins
|
| 62 |
+
- **RBAC**: Webhook servers use RBAC for access control; `system:auth-delegator` ClusterRole is used for authentication delegation
|
| 63 |
+
- **API Server**: Admission plugins are part of the API server request processing pipeline (after authn/authz, before persistence)
|
| 64 |
+
- **Pod Security**: Pod security admission does not work in highly privileged projects
|
| 65 |
+
- **Aggregated API Servers**: Webhook servers are typically configured as aggregated API servers for internal credential use and RBAC integration
|
| 66 |
+
- **SR-IOV, Scheduling, Networking**: Specific default plugins handle network policy, node selectors, tolerations, and ingress
|
| 67 |
+
|
| 68 |
+
## Exam-Relevant Points
|
| 69 |
+
- Mutating admission plugins run **before** validating admission plugins
|
| 70 |
+
- If **any** plugin in the admission chain rejects, the **entire chain** is aborted
|
| 71 |
+
- The maximum webhook timeout is **13 seconds** and **cannot be changed**
|
| 72 |
+
- `failurePolicy: Ignore` unconditionally accepts requests when the webhook is unavailable β this is risky
|
| 73 |
+
- Default projects (`default`, `kube-public`, `kube-system`, `openshift`, `openshift-infra`, `openshift-node`) are highly privileged and **bypass** admission plugin functionality like SCCs, pod security admission, and cluster resource quotas
|
| 74 |
+
- Webhook communication **must** use TLS
|
| 75 |
+
- When multiple webhooks deny a request, only the **first denial reason** is returned
|
| 76 |
+
- Common webhook use cases: namespace reservation, SR-IOV network resource limiting, toleration definitions, pod priority class validation
|
| 77 |
+
- The two webhook configuration resource kinds are `MutatingWebhookConfiguration` and `ValidatingWebhookConfiguration`
|
| 78 |
+
- Webhooks are called **in parallel**, not sequentially (the overall mutating/validating phases are sequential, but webhooks within each phase run in parallel)
|
| 79 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-architecture.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/architecture/architecture-rhcos
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-architecture-architecture.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:22
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
|
| 12 |
+
Red Hat Enterprise Linux CoreOS (RHCOS) is the immutable, container-optimized operating system that underpins OpenShift Container Platform 4.x. It is the **only supported OS for control plane nodes** and the default for worker nodes (though RHEL can be used for workers). RHCOS is configured at provisioning time via Ignition config files, and all subsequent changes are managed remotely through the Machine Config Operator (MCO), enforcing a "controlled immutability" model.
|
| 13 |
+
|
| 14 |
+
## Key Concepts
|
| 15 |
+
|
| 16 |
+
- **RHCOS is based on RHEL** β same kernel, RPM packages, systemd init system, and security standards.
|
| 17 |
+
- **Controlled immutability** β the OS is mostly read-only; configuration is managed by the cluster, not by admins logging into nodes.
|
| 18 |
+
- **CRI-O is the only container engine** in OpenShift clusters (not Docker). It can use `runC` or `crun` as the container runtime.
|
| 19 |
+
- **Container tools**: `podman` (run/manage containers), `skopeo` (copy/sign images), `crictl` (CRI-O debugging) replace the Docker CLI. Direct use on RHCOS is discouraged except for debugging.
|
| 20 |
+
- **rpm-ostree** delivers transactional, atomic OS upgrades via container images. Rollback is a single reboot.
|
| 21 |
+
- **bootupd** handles firmware and bootloader updates (UEFI and legacy BIOS) on x86_64, ppc64le, aarch64.
|
| 22 |
+
- **Filesystem layout**:
|
| 23 |
+
- `/usr` β read-only (OS binaries/libraries)
|
| 24 |
+
- `/etc`, `/boot`, `/var` β writable, but only intended to be changed by the MCO
|
| 25 |
+
- `/var/lib/containers` β container image graph storage
|
| 26 |
+
- **Ignition** is the first-boot provisioning utility; it runs from initramfs, configures disks/files/users, and the machine is ready without a reboot.
|
| 27 |
+
- **Ignition is declarative** β partial configurations are not possible; if setup fails, the machine is not added to the cluster.
|
| 28 |
+
- **Ignition supports RAID but not LVM**.
|
| 29 |
+
- Ignition config files contain certificates that **expire after 24 hours**; use them within **12 hours** of generation.
|
| 30 |
+
- **Default user**: `core` (SSH key injected via Ignition).
|
| 31 |
+
|
| 32 |
+
## Commands and Syntax
|
| 33 |
+
|
| 34 |
+
```bash
|
| 35 |
+
# Generate Ignition config files
|
| 36 |
+
openshift-install create ignition-configs --dir $HOME/testconfig
|
| 37 |
+
# Produces: bootstrap.ign, master.ign, worker.ign
|
| 38 |
+
|
| 39 |
+
# View Ignition config contents
|
| 40 |
+
cat $HOME/testconfig/bootstrap.ign | jq
|
| 41 |
+
|
| 42 |
+
# Decode base64-encoded file content from Ignition
|
| 43 |
+
echo <base64-string> | base64 --decode
|
| 44 |
+
|
| 45 |
+
# List machine config pools
|
| 46 |
+
oc get machineconfigpools
|
| 47 |
+
|
| 48 |
+
# List all machine configs
|
| 49 |
+
oc get machineconfig
|
| 50 |
+
|
| 51 |
+
# See files managed by a specific machine config
|
| 52 |
+
oc describe machineconfigs 01-worker-container-runtime | grep Path:
|
| 53 |
+
```
|
| 54 |
+
|
| 55 |
+
## Relationships
|
| 56 |
+
|
| 57 |
+
- **Machine Config Operator (MCO)** β manages all post-installation OS configuration and upgrades for RHCOS nodes; applies MachineConfig objects.
|
| 58 |
+
- **MachineConfigPool** β groups nodes (master/worker) and their rendered machine configs.
|
| 59 |
+
- **Ignition** β handles first-boot configuration; MCO takes over afterward using the same Ignition config spec format.
|
| 60 |
+
- **install-config.yaml** β feeds into `openshift-install` which generates Ignition configs.
|
| 61 |
+
- **Day-1 vs Day-2 customizations** β Day-1 via Ignition/manifests during install; Day-2 via MachineConfig CRs or Operator custom resources after cluster is running.
|
| 62 |
+
- **Bootstrap machine** β serves Ignition configs to control plane nodes; workers get configs from control plane nodes (via API endpoint on port 22623).
|
| 63 |
+
- **ContainerRuntimeConfig CR** β used to switch between `runC` and `crun`.
|
| 64 |
+
|
| 65 |
+
## Exam-Relevant Points
|
| 66 |
+
|
| 67 |
+
- RHCOS is **mandatory for control plane nodes**; workers can optionally run RHEL.
|
| 68 |
+
- The container engine is **CRI-O** (not Docker) β this is frequently tested.
|
| 69 |
+
- Ignition runs **only on first boot** from initramfs; subsequent changes go through the MCO.
|
| 70 |
+
- Ignition is **declarative, not procedural** β machines cannot be partially configured.
|
| 71 |
+
- Ignition config certificates expire after **24 hours**; best practice is to use within **12 hours**.
|
| 72 |
+
- Machine configs are applied in **lexicographic order** (00* through 99*); last file wins for conflicts.
|
| 73 |
+
- The rendered MachineConfig is a **union** of all input MachineConfig objects for a pool.
|
| 74 |
+
- `/usr` is **read-only**; `/etc`, `/boot`, `/var` are writable but MCO-managed.
|
| 75 |
+
- Worker Ignition configs reference the bootstrap/control plane via `https://api.<cluster>:22623/config/worker`.
|
| 76 |
+
- Prefer **Kubernetes workload objects** (DaemonSet, Deployment) over node-level customization to reduce upgrade risk.
|
| 77 |
+
- Day-1 customization examples: kernel arguments, disk encryption (FIPS), kernel modules, chronyd settings.
|
| 78 |
+
- `rpm-ostree` upgrades are **atomic** with single-reboot rollback capability.
|
| 79 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-control-plan.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/architecture/control-plane
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-architecture-control-plan.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:22
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
The OpenShift Container Platform control plane consists of control plane (master) machines that manage the cluster and its worker nodes. It relies on machine config pools (MCPs) for node configuration management, Operators (both cluster and add-on) for managing cluster functions, and etcd as the persistent data store. The Cluster Version Operator (CVO) and Machine Config Operator coordinate upgrades across the cluster.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
|
| 15 |
+
- **Control plane machines** manage workloads on compute/worker machines; cluster upgrades are driven by the CVO, MCO, and individual Operators
|
| 16 |
+
- **Machine Config Pools (MCPs)** group machines by role for unified configuration management; two defaults: `master` and `worker`
|
| 17 |
+
- **Custom MCPs** inherit from the worker pool; they can target changes to specific node groups (e.g., `infra`) while still receiving worker pool changes
|
| 18 |
+
- **A node can only belong to one MCP** β custom pools take priority over the worker pool based on node labels
|
| 19 |
+
- **Configuration drift** occurs when a node's actual config doesn't match its MCP's machine config; the MCD detects this and marks the node `degraded`
|
| 20 |
+
- **Degraded nodes** are online and operational but cannot be updated
|
| 21 |
+
- **Infra nodes** labeled with the `infra` role running only infra workloads do **not** count toward subscription charges (must also use taints to prevent user workload scheduling)
|
| 22 |
+
- **Exactly three control plane nodes** are required for production; bare metal clusters can scale up to five
|
| 23 |
+
- **Control plane and node versions must match** (temporary skew allowed during upgrades)
|
| 24 |
+
- **kubelet must not be newer than kube-apiserver**; can be up to 1 minor version older (odd OCP versions) or 2 minor versions older (even OCP versions)
|
| 25 |
+
- **CRI-O** is the container engine (not Docker); both CRI-O and kubelet run as **systemd services** directly on the host
|
| 26 |
+
- **Worker node services**: CRI-O, kubelet, service proxy, runC/crun container runtime
|
| 27 |
+
- **Kubernetes control plane components**: API server, etcd, controller manager, scheduler
|
| 28 |
+
- **OpenShift-specific control plane components**: OpenShift API server, OpenShift controller manager, OpenShift OAuth API server, OpenShift OAuth server
|
| 29 |
+
- **Two Operator management systems**: Cluster Operators (managed by CVO, installed by default) and add-on Operators (managed by OLM, optional)
|
| 30 |
+
- **OLM does not manage cluster Operators** β those are managed by the CVO
|
| 31 |
+
- **OperatorHub** catalog sources: Red Hat Operators, certified Operators, community Operators, and custom catalogs
|
| 32 |
+
- **etcd** is a consistent, distributed key-value store; the primary data store for Kubernetes; requires fast, low-latency I/O
|
| 33 |
+
|
| 34 |
+
## Commands and Syntax
|
| 35 |
+
|
| 36 |
+
No direct CLI commands in this page, but key administrative references:
|
| 37 |
+
|
| 38 |
+
- View Cluster Operators: **Administration β Cluster Settings** in the web console
|
| 39 |
+
- `ClusterOperator` objects represent each cluster Operator
|
| 40 |
+
- `installer-*` and `revision-pruner-*` pods run as root, writing to `/etc/kubernetes` in namespaces:
|
| 41 |
+
- `openshift-etcd`
|
| 42 |
+
- `openshift-kube-apiserver`
|
| 43 |
+
- `openshift-kube-controller-manager`
|
| 44 |
+
- `openshift-kube-scheduler`
|
| 45 |
+
|
| 46 |
+
## Relationships
|
| 47 |
+
|
| 48 |
+
- **MCO β MCPs**: MCO manages MCPs and facilitates updates; MCD detects configuration drift
|
| 49 |
+
- **CVO β Cluster Operators**: CVO manages all default cluster Operators
|
| 50 |
+
- **OLM β Add-on Operators**: OLM manages optional Operators installed via OperatorHub
|
| 51 |
+
- **etcd β Control Plane**: etcd stores all cluster state; watched by controllers and schedulers
|
| 52 |
+
- **Machine API β Compute Machine Sets**: machine sets under `machine-api` namespace control compute machines (distinct from MCPs under MCO namespace)
|
| 53 |
+
- **Control Plane Machine Sets**: manage control plane machines on supported cloud providers
|
| 54 |
+
- **Operator SDK β Custom Operators β OLM**: developers author Operators, bundle them into custom catalogs
|
| 55 |
+
|
| 56 |
+
## Exam-Relevant Points
|
| 57 |
+
|
| 58 |
+
1. **Default MCPs are `master` and `worker`** β custom MCPs for control plane are not supported
|
| 59 |
+
2. **Custom MCPs inherit from the worker pool** β non-inheriting custom pools are unsupported by the MCO
|
| 60 |
+
3. **A node belongs to exactly one MCP** β custom pools take priority over worker pool
|
| 61 |
+
4. **Infra nodes don't count toward subscriptions** if properly labeled and tainted
|
| 62 |
+
5. **Removing `worker` label without a custom pool makes a node unmanaged** by the MCO
|
| 63 |
+
6. **Three control plane nodes required for production** (up to five on bare metal)
|
| 64 |
+
7. **kubelet version skew**: up to 1 minor version older for odd OCP releases, up to 2 for even releases
|
| 65 |
+
8. **CRI-O is the container engine**, not Docker β runs as a systemd service
|
| 66 |
+
9. **Two Operator systems**: CVO for cluster Operators, OLM for add-on Operators β they are separate
|
| 67 |
+
10. **etcd requires fast, low-latency I/O** due to high-frequency small writes
|
| 68 |
+
11. **Configuration drift** β node marked `degraded` β online but cannot be updated
|
| 69 |
+
12. **MCO applies pool updates independently** β pools update in parallel with each other
|
| 70 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-index.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/architecture/index
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-architecture-index.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:23
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This is the top-level landing page for the OpenShift Container Platform 4.17 Architecture documentation. It serves as an entry point to detailed architectural topics covering platform and application architecture in OpenShift Container Platform.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- OpenShift Container Platform 4.17 has a dedicated **Architecture** documentation section covering both **platform architecture** and **application architecture**
|
| 15 |
+
- The architecture docs are available across many OCP versions (from 3.0 through 4.21), indicating architecture is a foundational documentation area
|
| 16 |
+
- This is a hub page β the substantive content lives in sub-pages beneath it
|
| 17 |
+
|
| 18 |
+
## Commands and Syntax
|
| 19 |
+
None on this page (it is a navigation/landing page).
|
| 20 |
+
|
| 21 |
+
## Relationships
|
| 22 |
+
- Parent topic for all architecture sub-pages (likely covering control plane, worker nodes, networking architecture, storage architecture, etc.)
|
| 23 |
+
- Connects to the broader OCP 4.17 documentation set
|
| 24 |
+
- Architecture understanding is foundational to installation, operations, networking, and security topics
|
| 25 |
+
|
| 26 |
+
## Exam-Relevant Points
|
| 27 |
+
- OpenShift Container Platform distinguishes between **platform architecture** (infrastructure, control plane, operators) and **application architecture** (how workloads are structured and deployed)
|
| 28 |
+
- The current version documented here is **4.17** β version awareness matters for exam contexts
|
| 29 |
+
|
| 30 |
+
---
|
| 31 |
+
|
| 32 |
+
*Note: This source page is a table-of-contents landing page with minimal substantive content. The real architectural detail will be in the child pages beneath this section.*
|
| 33 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-ocm-overview.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/architecture/ocm-overview-ocp
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-architecture-ocm-overview.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:23
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
Red Hat OpenShift Cluster Manager (OCM) is a managed service providing a single dashboard to install, modify, operate, and upgrade OpenShift clusters. It supports OpenShift Container Platform (self-managed), Red Hat OpenShift Service on AWS (ROSA), and OpenShift Dedicated clusters, offering lifecycle management from installation through ongoing operations.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **OpenShift Cluster Manager (OCM)** β centralized web-based management console for all OpenShift clusters in an organization
|
| 15 |
+
- Accessible at `console.redhat.com/openshift` with a Red Hat account that belongs to an OpenShift organization
|
| 16 |
+
- Supports three cluster types: OCP (self-installed), ROSA, and OpenShift Dedicated
|
| 17 |
+
- **Cluster ID** β unique identifier used for CLI commands against the cluster
|
| 18 |
+
- **Domain prefix** β defaults to the cluster name, used throughout the cluster
|
| 19 |
+
- **Delete Protection** β can be enabled/disabled per cluster to prevent accidental deletion
|
| 20 |
+
- **Insights Advisor** β leverages Remote Health functionality to identify risks to security, performance, availability, and stability
|
| 21 |
+
- **Machine pools** β groupings of compute nodes that can be created/edited if quota is available
|
| 22 |
+
- **Update strategy** β can be automatic (scheduled day/time) or manual
|
| 23 |
+
|
| 24 |
+
## Commands and Syntax
|
| 25 |
+
No CLI commands are described on this page. All interactions are through the web UI at:
|
| 26 |
+
```
|
| 27 |
+
https://console.redhat.com/openshift
|
| 28 |
+
```
|
| 29 |
+
|
| 30 |
+
## Relationships
|
| 31 |
+
- **Insights Advisor** connects to the Remote Health / Telemetry subsystem of OCP
|
| 32 |
+
- **Access control tab** relates to identity providers and RBAC β cluster owners can grant "Cluster Editor" roles
|
| 33 |
+
- **Machine pools** relate to cluster scaling, node labels, taints, and AWS security groups
|
| 34 |
+
- **OIDC configuration** ties into authentication and identity management
|
| 35 |
+
- **Networking tab** relates to cluster network configuration (address/prefix)
|
| 36 |
+
- OCM is the management layer above the individual cluster β it does not replace the in-cluster web console but complements it (the "Open console" action launches the cluster's own web console)
|
| 37 |
+
|
| 38 |
+
## Exam-Relevant Points
|
| 39 |
+
- OCM URL: `console.redhat.com/openshift`
|
| 40 |
+
- Prerequisites: Red Hat account in an OpenShift organization; organization must have specified quota for cluster creation
|
| 41 |
+
- Key cluster tabs: Overview, Access control, Add-ons, Networking, Insights Advisor, Machine pools, Support, Settings
|
| 42 |
+
- The **Cluster ID** is used when issuing CLI commands to the cluster
|
| 43 |
+
- Update strategy options: automatic (specific day/time) or manual
|
| 44 |
+
- Cluster owners can grant the **Cluster Editor** role to other users via the Access control tab
|
| 45 |
+
- Notification contacts for cluster alerts are configured in the **Support** tab
|
| 46 |
+
- Machine pool editing allows changing node count per availability zone, node labels, and taints
|
| 47 |
+
- The **Control plane type** field only appears for clusters using hosted control plane architecture
|
| 48 |
+
- Availability zones can be **single** or **multizone**
|
| 49 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-understandin.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/architecture/understanding-development
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-architecture-understandin.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:23
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This page covers the fundamentals of developing containerized applications for OpenShift Container Platform, progressing from building simple containers through creating Kubernetes manifests to developing Operators. It explains the tools, base images, registries, workload types, and supporting components available in the OCP ecosystem.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Container development lifecycle**: Build image β push to registry β create K8s manifest β store in Git β optionally create an Operator
|
| 15 |
+
- **Container build tools**: `buildah`, `podman`, and `skopeo` are daemonless, rootless tools preferred over Docker; they produce industry-standard OCI images
|
| 16 |
+
- **CRI-O** is the container engine running on every worker and control plane node in OCP clusters (not supported standalone outside OCP)
|
| 17 |
+
- **Red Hat Universal Base Images (UBI)**: Freely redistributable base images (standard, init, minimal variants) based on RHEL β no Red Hat subscription required to share
|
| 18 |
+
- **Source-to-Image (S2I)**: Special runtime base images that let you insert code into a ready-to-run environment (Node.js, Perl, Python, etc.)
|
| 19 |
+
- **Pods** are the basic deployable unit in Kubernetes (not containers); pods can contain multiple containers sharing network, storage, and IPC
|
| 20 |
+
- **Services** group pods together, provide stable IP addresses, and enable load balancing; they persist until explicitly deleted
|
| 21 |
+
- **Red Hat Registry**: `registry.redhat.io` (authenticated, current) and `registry.access.redhat.com` (unauthenticated, deprecated)
|
| 22 |
+
- **Quay.io**: Red Hat-owned public registry; stores OCP components, container images, Helm charts, and Operators
|
| 23 |
+
- **Red Hat Quay**: Private registry option with geo-replication, Git build triggers, and Clair image scanning
|
| 24 |
+
- **OCP includes a built-in private container registry** installed with the cluster
|
| 25 |
+
- **OperatorHub**: Marketplace for Operators from Red Hat, certified partners, and community β available in every OCP 4.x cluster
|
| 26 |
+
- **Templates**: One-off application definitions with parameterized resource lists; shared templates often placed in the `openshift` namespace (accessible from all namespaces)
|
| 27 |
+
|
| 28 |
+
## Commands and Syntax
|
| 29 |
+
```bash
|
| 30 |
+
# Build a container image using buildah
|
| 31 |
+
buildah build-using-dockerfile .
|
| 32 |
+
|
| 33 |
+
# Build using docker
|
| 34 |
+
docker build .
|
| 35 |
+
|
| 36 |
+
# Push image to registry
|
| 37 |
+
podman push quay.io/myrepo/myapp:latest
|
| 38 |
+
docker push quay.io/myrepo/myapp:latest
|
| 39 |
+
|
| 40 |
+
# Pull and run
|
| 41 |
+
podman run <image_name>
|
| 42 |
+
docker run <image_name>
|
| 43 |
+
|
| 44 |
+
# Apply a Kubernetes manifest
|
| 45 |
+
oc apply -f <manifest.yaml>
|
| 46 |
+
```
|
| 47 |
+
|
| 48 |
+
## Relationships
|
| 49 |
+
- **Workload types map to application needs**:
|
| 50 |
+
- Run-to-completion β `Job` / `CronJob`
|
| 51 |
+
- Long-running β `Deployment` / `DeploymentConfig`
|
| 52 |
+
- High availability β `Deployment` with `ReplicaSet`
|
| 53 |
+
- Every-node β `DaemonSet`
|
| 54 |
+
- Identity/numbering requirements β `StatefulSet`
|
| 55 |
+
- Lifecycle management β `Operator` (with OLM)
|
| 56 |
+
- **Networking**: `NetworkPolicy` for fine-grained control; `Ingress` for external-to-internal routing
|
| 57 |
+
- **Storage**: `Volumes` and `PersistentVolumes` for on-disk storage needs
|
| 58 |
+
- **CI/CD and GitOps**: Manifests stored in Git; CI pipelines build images and push to registries
|
| 59 |
+
- **Operator Lifecycle Manager (OLM)**: Manages Operator installation and updates; cluster admins expose Operators to selected namespaces
|
| 60 |
+
|
| 61 |
+
## Exam-Relevant Points
|
| 62 |
+
- **Docker as container runtime is deprecated** in Kubernetes 1.20 (but Docker-built images still work with all runtimes including CRI-O)
|
| 63 |
+
- **CRI-O** runs on every node in OCP β it is the container runtime, not Docker
|
| 64 |
+
- **UBI images are freely redistributable** without a Red Hat subscription
|
| 65 |
+
- **S2I images** are accessible from the Developer perspective β +Add β Developer Catalog
|
| 66 |
+
- **`registry.redhat.io`** requires authentication; `registry.access.redhat.com` is deprecated
|
| 67 |
+
- **Pods** (not containers) are the basic unit of deployment, scaling, and management in Kubernetes
|
| 68 |
+
- **Services** provide stable networking; resolved by name within the cluster
|
| 69 |
+
- **StatefulSets** are for apps needing stable identity/numbering and independent storage (databases, zookeeper)
|
| 70 |
+
- **DaemonSets** ensure a pod runs on every node (or a subset via node labels) β used for DNS, monitoring
|
| 71 |
+
- **Templates** go in the `openshift` namespace for cluster-wide availability
|
| 72 |
+
- **OperatorHub** is available in every OCP 4.x cluster
|
| 73 |
+
- **`oc apply`** is the command to deploy Kubernetes manifests
|
| 74 |
+
- Operators encode operational knowledge (backups, upgrades, scaling) and automate maintenance tasks
|
| 75 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/architecture
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-architecture.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:24
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This is the top-level landing page for the OpenShift Container Platform 4.17 Architecture documentation. It serves as an index page introducing the architecture section, which covers the platform and application architecture of OpenShift Container Platform. The page itself contains no substantive technical content β it links to sub-pages that contain the actual architectural details.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- OpenShift Container Platform 4.17 is the version documented
|
| 15 |
+
- The architecture section covers both **platform architecture** (infrastructure, control plane, nodes) and **application architecture** (how workloads run on the platform)
|
| 16 |
+
- Documentation is maintained by the Red Hat OpenShift Documentation Team
|
| 17 |
+
- Available in multi-page, single-page, and PDF formats
|
| 18 |
+
|
| 19 |
+
## Commands and Syntax
|
| 20 |
+
None on this page (index/landing page only).
|
| 21 |
+
|
| 22 |
+
## Relationships
|
| 23 |
+
- This is the parent page for all architecture sub-topics, which typically include:
|
| 24 |
+
- **Installation and update architecture** β how the platform is deployed
|
| 25 |
+
- **Control plane architecture** β API server, etcd, controllers, scheduler
|
| 26 |
+
- **Node architecture** β kubelet, CRI-O, worker nodes
|
| 27 |
+
- **Networking architecture** β SDN/OVN-Kubernetes, Services, Routes
|
| 28 |
+
- **Storage architecture** β persistent volumes, CSI drivers
|
| 29 |
+
- **RHCOS (Red Hat Enterprise Linux CoreOS)** β the immutable OS layer
|
| 30 |
+
- Foundational to understanding all other OCP documentation sections
|
| 31 |
+
|
| 32 |
+
## Exam-Relevant Points
|
| 33 |
+
- OpenShift Container Platform 4.17 is a current supported version
|
| 34 |
+
- Understanding the distinction between **platform architecture** and **application architecture** is fundamental to the exam
|
| 35 |
+
- The architecture section is the conceptual foundation β exam questions often test understanding of how components relate to each other at the architectural level
|
| 36 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authentication_and_author.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/authentication_and_authorization/legal-notice
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-authentication_and_author.md
|
| 4 |
+
---
|
| 5 |
+
# En Documentation Openshift_Container_Platform 417 Html Authentication_And_Author
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:24
|
| 9 |
+
|
| 10 |
+
This is just a legal notice / copyright page β it contains no technical content relevant to OpenShift expertise or certification. No summary needed; skipping.
|
| 11 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-author.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/authorization_apis/authorization-apis
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-authorization_apis-author.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:24
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This page catalogs the Authorization API resources available in OpenShift Container Platform 4.17. These APIs span two API groups β the OpenShift-native `authorization.openshift.io/v1` and the upstream Kubernetes `authorization.k8s.io/v1` and `authentication.k8s.io/v1` β and provide mechanisms for checking user/group permissions, requesting tokens, and reviewing authentication status.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Two parallel API groups** exist for authorization: OpenShift's `authorization.openshift.io/v1` (6 resources) and Kubernetes' `authorization.k8s.io/v1` (4 resources). Both provide similar access review capabilities.
|
| 15 |
+
- **AccessReview resources** answer "can user X do action Y?" β they are the mechanism for programmatic authorization checks.
|
| 16 |
+
- **Local vs. cluster-scoped**: Resources prefixed with "Local" (e.g., `LocalSubjectAccessReview`, `LocalResourceAccessReview`) are namespace-scoped; non-local variants operate cluster-wide.
|
| 17 |
+
- **ResourceAccessReview** returns *which* users/groups can perform an action (OpenShift-only, no Kubernetes equivalent listed).
|
| 18 |
+
- **SubjectAccessReview** checks whether a *specific* user/group can perform an action.
|
| 19 |
+
- **SelfSubjectAccessReview / SelfSubjectRulesReview** let the *current* user check their own permissions.
|
| 20 |
+
- **SelfSubjectRulesReview** (k8s) explicitly warns: should be used for UI show/hide only, **NOT** for driving external authorization decisions (confused deputy / cache concerns).
|
| 21 |
+
- **SubjectRulesReview** (OpenShift) lets you check what *another* user can do in a namespace.
|
| 22 |
+
- **TokenRequest** requests a token for a service account.
|
| 23 |
+
- **TokenReview** authenticates a bearer token to a known user; results may be cached by the webhook token authenticator.
|
| 24 |
+
- **SelfSubjectReview** (authentication) returns the user info the API server has about the requesting user; respects impersonation.
|
| 25 |
+
- All OpenShift authorization resources are **Compatibility level 1** β stable within a major release for β₯12 months or 3 minor releases.
|
| 26 |
+
|
| 27 |
+
## Commands and Syntax
|
| 28 |
+
No specific CLI commands are shown on this reference page, but these APIs are typically consumed via:
|
| 29 |
+
```bash
|
| 30 |
+
# Check if you can perform an action
|
| 31 |
+
oc auth can-i <verb> <resource> [-n <namespace>]
|
| 32 |
+
|
| 33 |
+
# Check if another user can perform an action
|
| 34 |
+
oc auth can-i <verb> <resource> --as=<user>
|
| 35 |
+
|
| 36 |
+
# List your permissions in a namespace
|
| 37 |
+
oc auth can-i --list [-n <namespace>]
|
| 38 |
+
|
| 39 |
+
# Create a TokenRequest for a service account
|
| 40 |
+
oc create token <service-account-name>
|
| 41 |
+
```
|
| 42 |
+
Programmatically, these are `POST`-based resources (you create a review object and the API server responds with the result).
|
| 43 |
+
|
| 44 |
+
## Relationships
|
| 45 |
+
- **RBAC**: These APIs *query* the RBAC system (Roles, ClusterRoles, RoleBindings, ClusterRoleBindings) β they don't define policy, they evaluate it.
|
| 46 |
+
- **Authentication APIs**: `TokenRequest`, `TokenReview`, and `SelfSubjectReview` bridge authentication and authorization β establishing identity before checking permissions.
|
| 47 |
+
- **Service Accounts**: `TokenRequest` ties directly to service account token management (bound tokens with audience/expiry).
|
| 48 |
+
- **Impersonation**: `SelfSubjectReview` reflects impersonated identity, connecting to the `--as` / impersonation header mechanism.
|
| 49 |
+
- **OAuth / Identity Providers**: These APIs operate downstream of authentication β once identity is established by OAuth or other providers, these APIs evaluate what that identity can do.
|
| 50 |
+
|
| 51 |
+
## Exam-Relevant Points
|
| 52 |
+
- Know the difference between **OpenShift** (`authorization.openshift.io`) and **Kubernetes** (`authorization.k8s.io`) authorization API groups β OpenShift has `ResourceAccessReview` and `SubjectRulesReview` which Kubernetes does not.
|
| 53 |
+
- **`SelfSubjectRulesReview`** should NOT be used for external authorization decisions β only for UI hints. `SubjectAccessReview` is the correct API for authorization decisions.
|
| 54 |
+
- **`LocalSubjectAccessReview`** is namespace-scoped, making it easier to grant namespace-scoped permissions that include the ability to check permissions.
|
| 55 |
+
- **`TokenReview`** responses may be **cached** by the webhook authenticator β important for understanding token revocation behavior.
|
| 56 |
+
- `oc auth can-i` is the CLI equivalent of creating SubjectAccessReview / SelfSubjectAccessReview resources.
|
| 57 |
+
- All listed OpenShift authorization resources are type `object` with **Compatibility level 1** stability guarantees.
|
| 58 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-index.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/authorization_apis/index
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-authorization_apis-index.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:24
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
This is the reference landing page for OpenShift Container Platform 4.17 Authorization API objects. It serves as an index to the detailed specifications of all authorization-related API resources in OpenShift.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Authorization APIs** are a distinct category of API objects in OpenShift Container Platform, separate from other API groups (e.g., networking, storage, workloads)
|
| 15 |
+
- These APIs govern **access control** β determining who can do what within a cluster
|
| 16 |
+
- The authorization API group covers the Kubernetes and OpenShift-specific resources that enforce RBAC and permissions
|
| 17 |
+
- Available across OCP versions from 3.x through 4.17+
|
| 18 |
+
|
| 19 |
+
## Commands and Syntax
|
| 20 |
+
No specific commands or syntax provided on this index page. Authorization API objects are typically interacted with via:
|
| 21 |
+
```bash
|
| 22 |
+
oc api-resources --api-group=authorization.openshift.io
|
| 23 |
+
oc api-resources --api-group=rbac.authorization.k8s.io
|
| 24 |
+
```
|
| 25 |
+
|
| 26 |
+
## Relationships
|
| 27 |
+
- **RBAC resources**: Roles, ClusterRoles, RoleBindings, ClusterRoleBindings are core authorization API objects
|
| 28 |
+
- **OpenShift-specific authorization**: SubjectAccessReview, LocalSubjectAccessReview, SelfSubjectAccessReview, SelfSubjectRulesReview
|
| 29 |
+
- Connects to **Authentication APIs** (authn establishes identity; authz determines permissions)
|
| 30 |
+
- Relates to **Security Context Constraints (SCCs)** which control pod-level permissions
|
| 31 |
+
- Ties into **OAuth and identity providers** for determining user/group membership used in bindings
|
| 32 |
+
|
| 33 |
+
## Exam-Relevant Points
|
| 34 |
+
- Authorization APIs are a **separate API group** from authentication β know the distinction
|
| 35 |
+
- OpenShift extends Kubernetes RBAC with additional authorization API objects (e.g., `authorization.openshift.io` group)
|
| 36 |
+
- Understanding which API objects fall under "authorization" vs other categories is testable
|
| 37 |
+
- The authorization API reference covers OCP-specific objects beyond standard Kubernetes RBAC
|
| 38 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-legal-.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/authorization_apis/legal-notice
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-authorization_apis-legal-.md
|
| 4 |
+
---
|
| 5 |
+
# En Documentation Openshift_Container_Platform 417 Html Authorization_Apis Legal
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:24
|
| 9 |
+
|
| 10 |
+
This is just a legal notice/copyright page β it contains no technical content relevant to OpenShift expertise or certification. There's nothing meaningful to summarize here. Skip this page.
|
| 11 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-localr.md
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/authorization_apis/localresourceaccessreview-authorization-openshift-io-v1
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-authorization_apis-localr.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:25
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
LocalResourceAccessReview is an OpenShift-specific authorization API resource (`authorization.openshift.io/v1`) that allows querying which users and groups are authorized to perform a specified action within a particular namespace. It is a Compatibility Level 1 resource, meaning it is stable within a major release for at least 12 months or 3 minor releases.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Purpose**: Determines *who* (users and groups) can perform a specific action on a specific resource in a given namespace
|
| 15 |
+
- **Namespace-scoped**: Unlike `ResourceAccessReview` (cluster-wide), this is scoped to a particular namespace
|
| 16 |
+
- **Request-only resource**: You POST a review request describing an action; the response lists authorized users/groups
|
| 17 |
+
- **Required fields**: `namespace`, `verb`, `resourceAPIGroup`, `resourceAPIVersion`, `resource`, `resourceName`, `path`, `isNonResourceURL`
|
| 18 |
+
- **Supported verbs**: `get`, `list`, `watch`, `create`, `update`, `delete`
|
| 19 |
+
- **Non-resource URLs**: Can also check access to non-resource URL paths (outside the resource hierarchy) via `isNonResourceURL` and `path` fields
|
| 20 |
+
- **API group**: `authorization.openshift.io/v1` β this is an OpenShift-specific API, not the upstream Kubernetes `authorization.k8s.io` API
|
| 21 |
+
|
| 22 |
+
## Commands and Syntax
|
| 23 |
+
|
| 24 |
+
**API Endpoint:**
|
| 25 |
+
```
|
| 26 |
+
POST /apis/authorization.openshift.io/v1/namespaces/{namespace}/localresourceaccessreviews
|
| 27 |
+
```
|
| 28 |
+
|
| 29 |
+
**Example request body structure:**
|
| 30 |
+
```json
|
| 31 |
+
{
|
| 32 |
+
"apiVersion": "authorization.openshift.io/v1",
|
| 33 |
+
"kind": "LocalResourceAccessReview",
|
| 34 |
+
"namespace": "my-project",
|
| 35 |
+
"verb": "create",
|
| 36 |
+
"resource": "pods",
|
| 37 |
+
"resourceAPIGroup": "",
|
| 38 |
+
"resourceAPIVersion": "v1",
|
| 39 |
+
"resourceName": "",
|
| 40 |
+
"path": "",
|
| 41 |
+
"isNonResourceURL": false
|
| 42 |
+
}
|
| 43 |
+
```
|
| 44 |
+
|
| 45 |
+
**Query parameters:**
|
| 46 |
+
- `dryRun` β set to `All` to validate without persisting
|
| 47 |
+
- `fieldValidation` β `Ignore` (default pre-v1.23), `Warn` (default v1.23+), or `Strict`
|
| 48 |
+
|
| 49 |
+
**Response codes:** 200 OK, 201 Created, 202 Accepted, 401 Unauthorized
|
| 50 |
+
|
| 51 |
+
## Relationships
|
| 52 |
+
- **LocalResourceAccessReview vs ResourceAccessReview**: Local is namespace-scoped; `ResourceAccessReview` is cluster-scoped
|
| 53 |
+
- **LocalResourceAccessReview vs LocalSubjectAccessReview**: LocalResourceAccessReview asks "who can do X?"; `LocalSubjectAccessReview` asks "can user Y do X?"
|
| 54 |
+
- **RBAC connection**: Results reflect the effective RBAC policies (Roles, RoleBindings, ClusterRoles, ClusterRoleBindings)
|
| 55 |
+
- **OpenShift-specific**: Part of the `authorization.openshift.io` API group, complementing the upstream Kubernetes `SubjectAccessReview` in `authorization.k8s.io`
|
| 56 |
+
- **CLI equivalent**: `oc adm policy who-can <verb> <resource> -n <namespace>` uses this API under the hood
|
| 57 |
+
|
| 58 |
+
## Exam-Relevant Points
|
| 59 |
+
- LocalResourceAccessReview answers **"who can do this?"** within a namespace β distinguish from SubjectAccessReview which answers **"can this user do this?"**
|
| 60 |
+
- The API group is `authorization.openshift.io/v1` (OpenShift-specific, not upstream Kubernetes)
|
| 61 |
+
- It is **namespace-scoped** β the namespace is part of the URL path
|
| 62 |
+
- The only HTTP method supported is **POST** (it's a create-only subresource)
|
| 63 |
+
- Know the distinction: `LocalResourceAccessReview` (namespace) vs `ResourceAccessReview` (cluster-wide)
|
| 64 |
+
- Compatibility Level 1 = stable API guaranteed for 12 months or 3 minor releases
|
| 65 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-locals.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/authorization_apis/localsubjectaccessreview-authorization-k8s-io-v1
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-authorization_apis-locals.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:25
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
## Overview
|
| 13 |
+
LocalSubjectAccessReview is a Kubernetes authorization API resource (`authorization.k8s.io/v1`) that checks whether a user or group can perform a specific action within a given namespace. It is namespace-scoped, making it easier to grant namespace-level policies that include permissions checking.
|
| 14 |
+
|
| 15 |
+
## Key Concepts
|
| 16 |
+
- **Namespace-scoped authorization check**: Unlike `SubjectAccessReview` (cluster-scoped), `LocalSubjectAccessReview` operates within a specific namespace
|
| 17 |
+
- **Spec is required**: The `spec` field is the only required field and describes the access request
|
| 18 |
+
- **Two attribute types** (exactly one must be set):
|
| 19 |
+
- `resourceAttributes` β for resource requests (e.g., can user X get pods?)
|
| 20 |
+
- `nonResourceAttributes` β for non-resource requests (e.g., can user X access /healthz?)
|
| 21 |
+
- **Status fields**:
|
| 22 |
+
- `allowed` (required boolean) β whether the action would be permitted
|
| 23 |
+
- `denied` (optional boolean) β explicit denial; if both `allowed` and `denied` are false, the authorizer has no opinion
|
| 24 |
+
- `evaluationError` β indicates an error during the check, but authorization may still proceed
|
| 25 |
+
- `reason` β explains why access was allowed or denied
|
| 26 |
+
- The `user` field without `groups` is interpreted as "what if user were not a member of any groups"
|
| 27 |
+
- Wildcard `"*"` can be used for group, resource, verb, and version fields to mean "all"
|
| 28 |
+
|
| 29 |
+
## Commands and Syntax
|
| 30 |
+
**API Endpoint:**
|
| 31 |
+
```
|
| 32 |
+
POST /apis/authorization.k8s.io/v1/namespaces/{namespace}/localsubjectaccessreviews
|
| 33 |
+
```
|
| 34 |
+
|
| 35 |
+
**Query parameters:** `dryRun`, `fieldValidation` (Ignore/Warn/Strict)
|
| 36 |
+
|
| 37 |
+
**Response codes:** 200 OK, 201 Created, 202 Accepted, 401 Unauthorized
|
| 38 |
+
|
| 39 |
+
**Example spec structure:**
|
| 40 |
+
```yaml
|
| 41 |
+
apiVersion: authorization.k8s.io/v1
|
| 42 |
+
kind: LocalSubjectAccessReview
|
| 43 |
+
metadata:
|
| 44 |
+
namespace: my-namespace
|
| 45 |
+
spec:
|
| 46 |
+
user: "jane"
|
| 47 |
+
groups: ["developers"]
|
| 48 |
+
resourceAttributes:
|
| 49 |
+
namespace: "my-namespace"
|
| 50 |
+
verb: "get"
|
| 51 |
+
resource: "pods"
|
| 52 |
+
group: ""
|
| 53 |
+
version: "v1"
|
| 54 |
+
```
|
| 55 |
+
|
| 56 |
+
## Relationships
|
| 57 |
+
- **SubjectAccessReview** β cluster-scoped equivalent for checking permissions across the entire cluster
|
| 58 |
+
- **SelfSubjectAccessReview** β allows a user to check their own permissions
|
| 59 |
+
- **RBAC (Roles/RoleBindings)** β the authorization backend that typically evaluates these reviews
|
| 60 |
+
- **Namespace policies** β LocalSubjectAccessReview is the mechanism for programmatically verifying namespace-scoped RBAC grants
|
| 61 |
+
|
| 62 |
+
## Exam-Relevant Points
|
| 63 |
+
- LocalSubjectAccessReview is **namespace-scoped**; SubjectAccessReview is **cluster-scoped**
|
| 64 |
+
- Exactly **one of** `resourceAttributes` or `nonResourceAttributes` must be set in the spec
|
| 65 |
+
- The `allowed` field in `.status` is **required**; `denied` is optional
|
| 66 |
+
- When `allowed=false` and `denied=false`, the authorizer has **no opinion** (not the same as denied)
|
| 67 |
+
- The `verb` field in `resourceAttributes` uses Kubernetes API verbs (`get`, `list`, `watch`, `create`, `update`, `delete`, `proxy`), not HTTP verbs
|
| 68 |
+
- The `verb` field in `nonResourceAttributes` uses standard **HTTP verbs**
|
| 69 |
+
- Empty string `""` for namespace in LocalSubjectAccessReview defaults to the review's own namespace
|
| 70 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-resour.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/authorization_apis/resourceaccessreview-authorization-openshift-io-v1
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-authorization_apis-resour.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:25
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
ResourceAccessReview is an OpenShift-specific authorization API resource (`authorization.openshift.io/v1`) that allows requesting a list of which users and groups are authorized to perform a specified action. It is a cluster-scoped review (not namespace-scoped) and is classified as Compatibility Level 1, meaning it is stable within a major release for at least 12 months or 3 minor releases.
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **Purpose**: Determines *who* (users and groups) can perform a given action, as opposed to determining *whether* a specific user can perform an action (which is what SubjectAccessReview does).
|
| 15 |
+
- **Cluster-scoped**: The endpoint has no namespace prefix β it operates at the cluster level.
|
| 16 |
+
- **Required fields**: `namespace`, `verb`, `resourceAPIGroup`, `resourceAPIVersion`, `resource`, `resourceName`, `path`, `isNonResourceURL`.
|
| 17 |
+
- **Verb values**: One of `get`, `list`, `watch`, `create`, `update`, `delete`.
|
| 18 |
+
- **Non-resource URLs**: Supports checking access to non-resource URL paths (outside the resource hierarchy) via `isNonResourceURL` and `path`.
|
| 19 |
+
- **OpenShift-specific**: This is an OpenShift extension (`authorization.openshift.io/v1`), not a upstream Kubernetes API.
|
| 20 |
+
|
| 21 |
+
## Commands and Syntax
|
| 22 |
+
|
| 23 |
+
**API Endpoint:**
|
| 24 |
+
```
|
| 25 |
+
POST /apis/authorization.openshift.io/v1/resourceaccessreviews
|
| 26 |
+
```
|
| 27 |
+
|
| 28 |
+
**Example body structure:**
|
| 29 |
+
```json
|
| 30 |
+
{
|
| 31 |
+
"apiVersion": "authorization.openshift.io/v1",
|
| 32 |
+
"kind": "ResourceAccessReview",
|
| 33 |
+
"namespace": "my-namespace",
|
| 34 |
+
"verb": "get",
|
| 35 |
+
"resource": "pods",
|
| 36 |
+
"resourceAPIGroup": "",
|
| 37 |
+
"resourceAPIVersion": "v1",
|
| 38 |
+
"resourceName": "",
|
| 39 |
+
"path": "",
|
| 40 |
+
"isNonResourceURL": false
|
| 41 |
+
}
|
| 42 |
+
```
|
| 43 |
+
|
| 44 |
+
**Query parameters:**
|
| 45 |
+
- `dryRun` β simulate without persisting (valid value: `All`)
|
| 46 |
+
- `fieldValidation` β controls handling of unknown/duplicate fields (`Ignore`, `Warn`, `Strict`)
|
| 47 |
+
|
| 48 |
+
**Response codes:** 200 OK, 201 Created, 202 Accepted, 401 Unauthorized.
|
| 49 |
+
|
| 50 |
+
## Relationships
|
| 51 |
+
- **LocalResourceAccessReview**: The namespace-scoped counterpart β checks who can perform an action within a specific namespace.
|
| 52 |
+
- **SubjectAccessReview / SelfSubjectAccessReview**: The inverse question β checks whether a *specific* user/subject can perform an action, rather than listing *all* authorized users.
|
| 53 |
+
- **RBAC (Roles, ClusterRoles, RoleBindings, ClusterRoleBindings)**: ResourceAccessReview evaluates the results of RBAC policies to produce its answer.
|
| 54 |
+
- **`oc adm policy who-can`**: The CLI command that likely uses this API under the hood to answer "who can perform action X on resource Y."
|
| 55 |
+
|
| 56 |
+
## Exam-Relevant Points
|
| 57 |
+
- ResourceAccessReview answers "who can do X?" β it returns users and groups authorized for a specific action.
|
| 58 |
+
- It is an OpenShift-specific API under `authorization.openshift.io/v1`, not a standard Kubernetes API.
|
| 59 |
+
- The API is cluster-scoped (no namespace in the URL path).
|
| 60 |
+
- Required fields include `verb`, `resource`, `namespace`, `resourceAPIGroup`, and `resourceAPIVersion`.
|
| 61 |
+
- Valid verbs are: `get`, `list`, `watch`, `create`, `update`, `delete`.
|
| 62 |
+
- Compatibility Level 1 means stable for 12 months or 3 minor releases minimum.
|
| 63 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-selfsu.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/authorization_apis/selfsubjectrulesreview-authorization-k8s-io-v1
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-authorization_apis-selfsu.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:26
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
|
| 12 |
+
SelfSubjectRulesReview is a Kubernetes authorization API resource (`authorization.k8s.io/v1`) that enumerates the set of actions the current user can perform within a specific namespace. It is designed for UI purposes (show/hide actions) and quick permission reasoning, but explicitly should **not** be used by external systems for authorization decisions.
|
| 13 |
+
|
| 14 |
+
## Key Concepts
|
| 15 |
+
|
| 16 |
+
- **Purpose**: Lets the current user discover what actions they are allowed to perform in a given namespace
|
| 17 |
+
- **Results may be incomplete**: The returned list depends on the server's authorization mode and any errors during evaluation
|
| 18 |
+
- **Additive rules model**: If a rule appears in the results, the subject definitely has that permission, even if the list is incomplete
|
| 19 |
+
- **Not for authorization decisions**: External systems should use `SubjectAccessReview` or `LocalAccessReview` instead β using SelfSubjectRulesReview raises confused deputy, caching, and correctness concerns
|
| 20 |
+
- **Two rule categories in status**:
|
| 21 |
+
- `resourceRules` β actions allowed on Kubernetes resources (verbs: get, list, watch, create, update, delete, proxy)
|
| 22 |
+
- `nonResourceRules` β actions allowed on non-resource URLs (verbs: get, post, put, delete, patch, head, options)
|
| 23 |
+
- **`incomplete` flag**: Boolean in status indicating whether the results are partial (e.g., when an external authorizer doesn't support rules evaluation)
|
| 24 |
+
- **`evaluationError`**: String field reporting errors during rule evaluation
|
| 25 |
+
|
| 26 |
+
## Commands and Syntax
|
| 27 |
+
|
| 28 |
+
**API Endpoint:**
|
| 29 |
+
```
|
| 30 |
+
POST /apis/authorization.k8s.io/v1/selfsubjectrulesreviews
|
| 31 |
+
```
|
| 32 |
+
|
| 33 |
+
**Spec** (required field):
|
| 34 |
+
```yaml
|
| 35 |
+
spec:
|
| 36 |
+
namespace: "my-namespace" # Required β namespace to evaluate rules for
|
| 37 |
+
```
|
| 38 |
+
|
| 39 |
+
**Status response structure:**
|
| 40 |
+
```yaml
|
| 41 |
+
status:
|
| 42 |
+
incomplete: false
|
| 43 |
+
evaluationError: ""
|
| 44 |
+
resourceRules:
|
| 45 |
+
- apiGroups: [""]
|
| 46 |
+
resources: ["pods"]
|
| 47 |
+
resourceNames: []
|
| 48 |
+
verbs: ["get", "list", "watch"]
|
| 49 |
+
nonResourceRules:
|
| 50 |
+
- nonResourceURLs: ["/healthz"]
|
| 51 |
+
verbs: ["get"]
|
| 52 |
+
```
|
| 53 |
+
|
| 54 |
+
**Query parameters:** `dryRun`, `fieldValidation` (Ignore/Warn/Strict)
|
| 55 |
+
|
| 56 |
+
**HTTP responses:** 200 OK, 201 Created, 202 Accepted, 401 Unauthorized
|
| 57 |
+
|
| 58 |
+
## Relationships
|
| 59 |
+
|
| 60 |
+
- **SubjectAccessReview / LocalSubjectAccessReview**: The correct alternatives for programmatic authorization decisions (SelfSubjectRulesReview is only for UI/informational use)
|
| 61 |
+
- **RBAC**: The rules returned reflect the cumulative effect of Roles, ClusterRoles, RoleBindings, and ClusterRoleBindings
|
| 62 |
+
- **Namespace-scoped**: Requires a namespace in the spec; evaluates permissions within that namespace context
|
| 63 |
+
- **Wildcard `*`**: Used across apiGroups, resources, resourceNames, verbs, and nonResourceURLs to mean "all"
|
| 64 |
+
|
| 65 |
+
## Exam-Relevant Points
|
| 66 |
+
|
| 67 |
+
- SelfSubjectRulesReview is for **UI display purposes only**, not for driving authorization decisions
|
| 68 |
+
- The correct APIs for authorization decisions are **SubjectAccessReview** and **LocalSubjectAccessReview**
|
| 69 |
+
- Results can be **incomplete** β the `incomplete` boolean and `evaluationError` string indicate this
|
| 70 |
+
- Authorization rules are **additive** β presence in the list confirms permission even if the list is incomplete
|
| 71 |
+
- The spec requires a **namespace** field
|
| 72 |
+
- The API group is `authorization.k8s.io/v1`
|
| 73 |
+
- Only supports **POST** (create) β no GET/LIST/DELETE operations
|
| 74 |
+
- `resourceRules` cover API resources; `nonResourceRules` cover URL paths like `/healthz`
|
| 75 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-subjec.md
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/authorization_apis/subjectaccessreview-authorization-k8s-io-v1
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-authorization_apis-subjec.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:26
|
| 9 |
+
|
| 10 |
+
## Overview
|
| 11 |
+
SubjectAccessReview is a Kubernetes authorization API resource (`authorization.k8s.io/v1`) used in OpenShift to programmatically check whether a specific user or group can perform a given action. It enables imperative authorization queries against the cluster's authorization layer (typically RBAC).
|
| 12 |
+
|
| 13 |
+
## Key Concepts
|
| 14 |
+
- **SubjectAccessReview** checks if a user/group is authorized to perform an action β returns allowed/denied status
|
| 15 |
+
- The `spec` field is required and must contain exactly one of `resourceAttributes` or `nonResourceAttributes`
|
| 16 |
+
- **ResourceAttributes**: checks access to Kubernetes resources (pods, services, etc.) with fields for group, name, namespace, resource, subresource, verb, and version
|
| 17 |
+
- **NonResourceAttributes**: checks access to non-resource URL paths (e.g., `/healthz`) using HTTP verbs
|
| 18 |
+
- The `user` field specifies the subject to test; if `groups` is omitted, the check treats the user as having no group memberships
|
| 19 |
+
- `extra` maps to authenticator-provided extra info (passed through to the authorizer)
|
| 20 |
+
- **Status fields**: `allowed` (required boolean), `denied` (optional boolean), `reason` (human-readable explanation), `evaluationError` (error during check that may not be fatal)
|
| 21 |
+
- If both `allowed` and `denied` are false, the authorizer has no opinion (neither permits nor denies)
|
| 22 |
+
- Wildcard `"*"` can be used for group, resource, verb, and version to mean "all"
|
| 23 |
+
|
| 24 |
+
## Commands and Syntax
|
| 25 |
+
|
| 26 |
+
**API Endpoint:**
|
| 27 |
+
```
|
| 28 |
+
POST /apis/authorization.k8s.io/v1/subjectaccessreviews
|
| 29 |
+
```
|
| 30 |
+
|
| 31 |
+
**Example: Check if user "jane" can get pods in namespace "dev":**
|
| 32 |
+
```yaml
|
| 33 |
+
apiVersion: authorization.k8s.io/v1
|
| 34 |
+
kind: SubjectAccessReview
|
| 35 |
+
spec:
|
| 36 |
+
user: "jane"
|
| 37 |
+
resourceAttributes:
|
| 38 |
+
namespace: "dev"
|
| 39 |
+
verb: "get"
|
| 40 |
+
resource: "pods"
|
| 41 |
+
```
|
| 42 |
+
|
| 43 |
+
**Using `oc` CLI:**
|
| 44 |
+
```bash
|
| 45 |
+
oc auth can-i get pods --as=jane -n dev
|
| 46 |
+
```
|
| 47 |
+
|
| 48 |
+
**Query parameters:** `dryRun` (skip persistence), `fieldValidation` (Ignore/Warn/Strict for unknown fields)
|
| 49 |
+
|
| 50 |
+
**HTTP responses:** 200 OK, 201 Created, 202 Accepted, 401 Unauthorized
|
| 51 |
+
|
| 52 |
+
## Relationships
|
| 53 |
+
- **SelfSubjectAccessReview**: similar but checks the calling user's own permissions (no `user`/`groups` fields)
|
| 54 |
+
- **LocalSubjectAccessReview**: namespace-scoped variant (defaults empty namespace to the target namespace)
|
| 55 |
+
- **RBAC (Roles, ClusterRoles, RoleBindings, ClusterRoleBindings)**: the authorization backend that SubjectAccessReview queries against
|
| 56 |
+
- **Authentication/User Info**: the `user`, `groups`, `uid`, and `extra` fields mirror what the authenticator provides
|
| 57 |
+
- **`oc auth can-i`**: CLI wrapper around SubjectAccessReview and SelfSubjectAccessReview
|
| 58 |
+
|
| 59 |
+
## Exam-Relevant Points
|
| 60 |
+
- SubjectAccessReview is **cluster-scoped** (not namespaced) β there is a single endpoint, not per-namespace
|
| 61 |
+
- Exactly **one of** `resourceAttributes` or `nonResourceAttributes` must be set in the spec
|
| 62 |
+
- The `allowed` field in `.status` is **required**; `denied`, `reason`, and `evaluationError` are optional
|
| 63 |
+
- Empty string for `namespace` in resourceAttributes means **"all namespaces"** for namespace-scoped resources in SubjectAccessReview
|
| 64 |
+
- Resource verbs are Kubernetes verbs (`get`, `list`, `watch`, `create`, `update`, `delete`, `proxy`), not HTTP verbs β HTTP verbs are used only for nonResourceAttributes
|
| 65 |
+
- The `oc auth can-i --as=<user>` command is the practical CLI equivalent of creating a SubjectAccessReview
|
| 66 |
+
|
entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-tokenr.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
source_url: https://docs.redhat.com/en/documentation/openshift_container_platform/4.17/html/authorization_apis/tokenreview-authentication-k8s-io-v1
|
| 3 |
+
source: sources/en-documentation-openshift_container_platform-417-html-authorization_apis-tokenr.md
|
| 4 |
+
---
|
| 5 |
+
# Overview
|
| 6 |
+
|
| 7 |
+
**Date:** 2026-03-05
|
| 8 |
+
**Time:** 13:26
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
## Overview
|
| 13 |
+
The TokenReview resource (`authentication.k8s.io/v1`) is a Kubernetes API object used to authenticate a bearer token and resolve it to a known user. OpenShift exposes TokenReview through both the standard Kubernetes endpoint and an OpenShift-specific OAuth endpoint. TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver.
|
| 14 |
+
|
| 15 |
+
## Key Concepts
|
| 16 |
+
- **TokenReview** is a `POST`-only API β it validates a token and returns user identity information; it does not create persistent resources.
|
| 17 |
+
- The `spec` field is **required** and contains the opaque bearer token to validate.
|
| 18 |
+
- **Audiences**: Both `spec` and `status` carry an `audiences` field. The spec declares which audiences the token should be valid for; the status returns the intersection of requested and actual audiences.
|
| 19 |
+
- If no audiences are specified in the spec, the default audience is the Kubernetes API server itself.
|
| 20 |
+
- The `status.authenticated` boolean indicates whether the token mapped to a known user.
|
| 21 |
+
- `status.user` returns resolved identity: `username`, `uid`, `groups`, and optional `extra` key-value pairs.
|
| 22 |
+
- A `uid` uniquely identifies a user across time β if a user is deleted and recreated with the same name, the UID will differ.
|
| 23 |
+
|
| 24 |
+
## Commands and Syntax
|
| 25 |
+
**API Endpoints (POST only):**
|
| 26 |
+
- `/apis/authentication.k8s.io/v1/tokenreviews` β standard Kubernetes endpoint
|
| 27 |
+
- `/apis/oauth.openshift.io/v1/tokenreviews` β OpenShift OAuth endpoint
|
| 28 |
+
|
| 29 |
+
**Query Parameters:**
|
| 30 |
+
- `dryRun=All` β process all stages without persisting (though TokenReview is non-mutating anyway)
|
| 31 |
+
- `fieldValidation` β `Ignore` (pre-v1.23 default), `Warn` (v1.23+ default), or `Strict`
|
| 32 |
+
|
| 33 |
+
**Response Codes:** 200 OK, 201 Created, 202 Accepted, 401 Unauthorized
|
| 34 |
+
|
| 35 |
+
**Example spec structure:**
|
| 36 |
+
```yaml
|
| 37 |
+
apiVersion: authentication.k8s.io/v1
|
| 38 |
+
kind: TokenReview
|
| 39 |
+
spec:
|
| 40 |
+
token: "<bearer-token>"
|
| 41 |
+
audiences:
|
| 42 |
+
- "https://kubernetes.default.svc"
|
| 43 |
+
```
|
| 44 |
+
|
| 45 |
+
## Relationships
|
| 46 |
+
- **Authentication & Authorization chain**: TokenReview is the programmatic way to verify tokens, used by webhook token authenticators and API server authentication plugins.
|
| 47 |
+
- **OAuth tokens**: The OpenShift-specific endpoint (`oauth.openshift.io/v1`) ties into OpenShift's OAuth server and OAuth access tokens.
|
| 48 |
+
- **ServiceAccount tokens**: Projected service account tokens can be validated via TokenReview with audience restrictions.
|
| 49 |
+
- **RBAC**: After TokenReview resolves identity, authorization decisions (via SubjectAccessReview, Roles, ClusterRoles) use the returned user/group info.
|
| 50 |
+
- Related APIs: **SubjectAccessReview** (authorization check), **SelfSubjectAccessReview**, **OAuthAccessToken**.
|
| 51 |
+
|
| 52 |
+
## Exam-Relevant Points
|
| 53 |
+
- TokenReview has **two endpoints** in OpenShift: the Kubernetes-native one and the OpenShift OAuth one.
|
| 54 |
+
- The `spec` field is the only **required** field on the TokenReview object.
|
| 55 |
+
- `status.authenticated = true` with an empty `status.audiences` means the token is valid for the Kubernetes API server audience specifically.
|
| 56 |
+
- Audience-aware clients **must** validate that a compatible audience is returned in `status.audiences`.
|
| 57 |
+
- TokenReview results **may be cached** by the webhook token authenticator β this is a performance and security consideration.
|
| 58 |
+
- The API group is `authentication.k8s.io/v1` (Kubernetes-native) or `oauth.openshift.io/v1` (OpenShift).
|
| 59 |
+
|