benthomasson Claude Opus 4.6 commited on
Commit
600330f
Β·
unverified Β·
1 Parent(s): d860a4c

Initial commit: OpenShift expert EEM knowledge base for HuggingFace

Browse files

3,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
Files changed (50) hide show
  1. .gitignore +3 -0
  2. CLAUDE.md +41 -0
  3. README.md +163 -0
  4. entries/2026/03/05/documentation-red_hat_openshift_cluster_observability_operator-1-latest-html-abo.md +35 -0
  5. entries/2026/03/05/en-documentation-builds_for_red_hat_openshift-17.md +49 -0
  6. entries/2026/03/05/en-documentation-monitoring_stack_for_red_hat_openshift-417-html-managing_alerts.md +111 -0
  7. entries/2026/03/05/en-documentation-monitoring_stack_for_red_hat_openshift-421.md +44 -0
  8. entries/2026/03/05/en-documentation-openshift_cluster_manager-1-latest.md +34 -0
  9. entries/2026/03/05/en-documentation-openshift_container_platform-410-html-single-storage-index.md +89 -0
  10. entries/2026/03/05/en-documentation-openshift_container_platform-415-html-cli_tools-openshift-cli-o.md +66 -0
  11. entries/2026/03/05/en-documentation-openshift_container_platform-415-html-operators-understanding-o.md +141 -0
  12. entries/2026/03/05/en-documentation-openshift_container_platform-415-html-operators-user-tasks.md +148 -0
  13. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-index.md +31 -0
  14. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-learn_more_about_op.md +52 -0
  15. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-oke-about.md +43 -0
  16. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-providing-feedback-.md +13 -0
  17. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about-welcome-index.md +29 -0
  18. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-about.md +31 -0
  19. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-assoc.md +52 -0
  20. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-chang.md +99 -0
  21. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-index.md +38 -0
  22. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-legal.md +11 -0
  23. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-netwo.md +92 -0
  24. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-using.md +115 -0
  25. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking-verif.md +93 -0
  26. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-advanced_networking.md +36 -0
  27. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-api-index.md +78 -0
  28. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-compatibilit.md +48 -0
  29. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-editing-kube.md +87 -0
  30. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-index.md +32 -0
  31. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview-understandin.md +51 -0
  32. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-api_overview.md +33 -0
  33. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-about-the-mu.md +47 -0
  34. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-admission-pl.md +79 -0
  35. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-architecture.md +79 -0
  36. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-control-plan.md +70 -0
  37. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-index.md +33 -0
  38. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-ocm-overview.md +49 -0
  39. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture-understandin.md +75 -0
  40. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-architecture.md +36 -0
  41. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authentication_and_author.md +11 -0
  42. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-author.md +58 -0
  43. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-index.md +38 -0
  44. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-legal-.md +11 -0
  45. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-localr.md +65 -0
  46. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-locals.md +70 -0
  47. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-resour.md +63 -0
  48. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-selfsu.md +75 -0
  49. entries/2026/03/05/en-documentation-openshift_container_platform-417-html-authorization_apis-subjec.md +66 -0
  50. 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
+