You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-`cloudflare-operator-system` - Cloudflare operator, tunnel deployment, DNS API secret
33
34
34
35
## Certificate Management
35
36
@@ -54,6 +55,16 @@ spec:
54
55
- `ingress.config.openshift.io/cluster`- componentRoutes for console/oauth certs
55
56
- `apiserver.config.openshift.io/cluster`- API server cert
56
57
58
+
## Cloudflare Tunnel DNS Management
59
+
60
+
Public `*.makeitwork.cloud` app DNS records are operator-managed from `TunnelBinding` resources.
61
+
62
+
- Keep `TunnelBinding.tunnelRef.disableDNSUpdates: false` for operator-managed DNS
63
+
- `subjects[].name`must match the real Kubernetes `Service` name in the same namespace
64
+
- cloudflare-operator stores ownership metadata in `_managed.<fqdn>` TXT records
65
+
- Do not delete CNAME records without deleting matching `_managed.<fqdn>` TXT records; stale TXT `DnsId` values cause reconcile failures (`81044`)
66
+
- The old `dns-adoption-job` hook is intentionally not used
67
+
57
68
## SOPS/KSOPS Encryption
58
69
59
70
Secrets encrypted with age. Each directory with secrets has a KSOPS generator file.
@@ -133,6 +144,10 @@ annotations:
133
144
134
145
6. **OAuth Replace=true causes sync failures** - The `argocd.argoproj.io/sync-options: Replace=true` annotation causes ArgoCD to delete+create resources. OpenShift protects singleton resources like `oauths.config.openshift.io/cluster` from deletion. Use `ServerSideApply=true` instead for these resources.
135
146
147
+
7. **Cloudflare stale TXT records break DNS reconciliation** - If `_managed.<fqdn>` TXT records point to deleted CNAME IDs, cloudflare-operator attempts update-by-stale-ID and fails with `Record does not exist. (81044)`. Remove stale `_managed.*` TXT records, then reconcile TunnelBindings.
148
+
149
+
8. **TunnelBinding subject name is service lookup key** - `subjects[].name` is used to read the Kubernetes Service object. If this name does not exist, operator status falls back to `http_status:404`.
0 commit comments