Skip to content

Commit 0924d33

Browse files
committed
docs: address review feedback on ztvp-certificates doc
- Add link to the chart directory - Fix "ArgoCD" to "Argo CD" - Remove hardcoded sync-wave numbers to avoid staleness - Renumber phases 8.5/8.6 to 8.1/8.2 - Clarify service CA is read from within the Job Pod - Add "ConfigMap" qualifier to ztvp-trusted-ca references - Link to ACM fromConfigMap documentation - Replace wave numbers with relative ordering in sync table Signed-off-by: Min Zhang <minzhang@redhat.com>
1 parent 759016e commit 0924d33

1 file changed

Lines changed: 23 additions & 23 deletions

File tree

docs/ztvp-certificates.md

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
# ZTVP Certificates
22

3-
The `ztvp-certificates` chart manages CA certificate extraction, validation,
3+
The [`ztvp-certificates`](../charts/ztvp-certificates/) chart manages CA certificate extraction, validation,
44
bundling, and distribution across the Zero Trust Validated Pattern. It runs as
5-
an ArgoCD-managed application in the `openshift-config` namespace at sync-wave
6-
**21**, ensuring certificates are available before any workload that needs TLS
7-
verification.
5+
an application managed by Argo CD in the `openshift-config` namespace, ensuring
6+
certificates are available before any workload that needs TLS verification.
87

98
## Architecture
109

@@ -35,7 +34,7 @@ verification.
3534
|---|---|
3635
| **ServiceAccount / RBAC** | Grants the extraction Job read access to secrets, configmaps, ingresscontrollers, and proxy across namespaces |
3736
| **ConfigMap (script)** | Holds the templated `extract-certificates.sh` script |
38-
| **Job (initial)** | Runs once at first sync (sync-wave 23, `Prune=false`) to populate the CA bundle |
37+
| **Job (initial)** | Runs once at first sync to populate the CA bundle |
3938
| **CronJob** | Runs on schedule (default daily at 02:00) for automatic rotation |
4039
| **ACM Policy + Placement** | Distributes the `ztvp-trusted-ca` ConfigMap into target namespaces via ACM governance |
4140
| **ManagedClusterSetBinding** | Binds the `default` ManagedClusterSet in `openshift-config` so the Placement can target `local-cluster` |
@@ -56,8 +55,8 @@ configuration.
5655
| 6 -- Validation | `validation.enabled` | Checks minimum size and `openssl x509` parse for every `.crt` |
5756
| 7 -- Combine | always | Concatenates all `.crt` files into `tls-ca-bundle.pem`; fails if bundle < 100 bytes |
5857
| 8 -- ConfigMap | always | `oc apply` the `ztvp-trusted-ca` ConfigMap with annotations recording extraction metadata |
59-
| 8.5 -- Proxy CA | `proxyCA.enabled` | Creates a separate ConfigMap with ingress + service CAs only |
60-
| 8.6 -- Proxy Patch | `proxyCA.enabled` | Patches `proxy/cluster` to set `trustedCA` (only if not already set to another value) |
58+
| 8.1 -- Proxy CA | `proxyCA.enabled` | Creates a separate ConfigMap with ingress + service CAs only |
59+
| 8.2 -- Proxy Patch | `proxyCA.enabled` | Patches `proxy/cluster` to set `trustedCA` (only if not already set to another value) |
6160
| 9 -- Image Pull Trust | `imagePullTrust.enabled` | Creates a ConfigMap keyed by registry hostname and patches `image.config.openshift.io/cluster` |
6261
| 10 -- Rollout | `rollout.enabled` | Restarts Deployments/StatefulSets that consume the certificate bundle |
6362

@@ -79,12 +78,12 @@ signed by a public CA.
7978

8079
1. The Job auto-detects the ingress CA from each `IngressController`'s router
8180
secret in `openshift-ingress`.
82-
2. The service CA is read from `openshift-service-ca.crt`.
81+
2. The service CA is read from `openshift-service-ca.crt` from within the Job Pod.
8382
3. If a cluster-wide proxy bundle exists, it is included.
84-
4. All certificates are combined into `ztvp-trusted-ca` and distributed via
83+
4. All certificates are combined into `ztvp-trusted-ca` ConfigMap and distributed via
8584
ACM Policy to target namespaces.
8685
5. A proxy CA ConfigMap (`ztvp-proxy-ca`) is created with ingress + service
87-
CAs and `proxy/cluster` is patched so the Cluster Network Operator injects
86+
CAs and the `proxy/cluster` is patched so the Cluster Network Operator injects
8887
these CAs into all workloads automatically.
8988

9089
No platform override file is needed. The chart's default `values.yaml` handles
@@ -114,11 +113,11 @@ proxyCA:
114113
> `proxyCA.enabled: true`. They are retained for clarity and backward
115114
> compatibility with older chart versions.
116115

117-
**Behavior is identical to Scenario 1** -- Phases 8.5 and 8.6 run by default:
116+
**Behavior is identical to Scenario 1** -- Phases 8.1 and 8.2 run by default:
118117

119-
1. Phase 8.5 builds a proxy-specific bundle containing only the ingress and
118+
1. Phase 8.1 builds a proxy-specific bundle containing only the ingress and
120119
service CAs (the Cluster Network Operator merges these with system CAs).
121-
2. Phase 8.6 patches `proxy/cluster` to set `spec.trustedCA.name` to
120+
2. Phase 8.2 patches `proxy/cluster` to set `spec.trustedCA.name` to
122121
`ztvp-proxy-ca`.
123122
3. The CNO propagates the merged bundle to every node, making the ingress CA
124123
trusted system-wide for all pods without explicit volume mounts.
@@ -244,7 +243,7 @@ openshift-config/ztvp-trusted-ca ---ACM Policy---> qtodo/ztvp-trusted-ca
244243
...
245244
```
246245

247-
The policy uses `fromConfigMap` hub templates so that the ConfigMap data is
246+
The policy uses [`fromConfigMap`](https://docs.redhat.com/en/documentation/red_hat_advanced_cluster_management_for_kubernetes/2.12/html-single/governance/index#fromConfigMap-function) hub templates so that the ConfigMap data is
248247
always sourced from the hub cluster's copy. Target namespaces are configured
249248
via `distribution.targetNamespaces`.
250249

@@ -276,17 +275,18 @@ metadata:
276275

277276
## Sync Wave Ordering
278277

279-
The chart's resources are ordered within the ArgoCD sync:
278+
The chart's resources are ordered within the Argo CD sync:
280279

281-
| Wave | Resources |
280+
| Order | Resources |
282281
|---|---|
283-
| 22 | ServiceAccount, RBAC (Role, RoleBinding, ClusterRole, ClusterRoleBinding) |
284-
| 23 | Initial Job, CronJob, ConfigMap (script) |
285-
| 25 | ManagedClusterSetBinding |
286-
| 26 | ACM Policy, PlacementBinding, Placement |
287-
288-
The application itself sits at sync-wave **21** in `values-hub.yaml`, ensuring
289-
it deploys before operators and workloads that depend on the CA bundle.
282+
| 1st | ServiceAccount, RBAC (Role, RoleBinding, ClusterRole, ClusterRoleBinding) |
283+
| 2nd | Initial Job, CronJob, ConfigMap (script) |
284+
| 3rd | ManagedClusterSetBinding |
285+
| 4th | ACM Policy, PlacementBinding, Placement |
286+
287+
The application itself is deployed early in the overall sync order (via
288+
`values-hub.yaml`), ensuring it runs before operators and workloads that depend
289+
on the CA bundle.
290290

291291
## Configuration Reference
292292

0 commit comments

Comments
 (0)