Skip to content

Commit 3f0aa8e

Browse files
stuggiclaude
andcommitted
[b/r] Document credential rotation gap and EDPM deployment requirement
After restore, credentials (ApplicationCredentials, RabbitMQ) may have been rotated between the backup and restore point. EDPM nodes still have the credentials from their last deployment run, which may not match the restored control plane state. Document that an EDPM deployment is required after restore to resync all credentials on dataplane nodes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent c9b5e5c commit 3f0aa8e

3 files changed

Lines changed: 30 additions & 4 deletions

File tree

docs/dev/backup-restore/restore/06-manual-database-restore.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,11 +175,33 @@ oc get pods -n openstack
175175
oc get openstackcontrolplane -n openstack
176176
```
177177

178+
## Important: Credential Rotation and EDPM Nodes
179+
180+
If credentials or certificates were rotated between the backup and the restore, EDPM nodes
181+
may still have newer credentials/certs that don't match the restored control plane state.
182+
This applies to:
183+
184+
- **ApplicationCredentials**: The restored Keystone DB contains old ACs. The openstack-operator
185+
will create new AC CRs on reconciliation, which generates new AC secrets. EDPM nodes still
186+
have the credentials from the last deployment run, which may not match.
187+
Additionally, if the backup is old, restored ACs may already be expired in the DB,
188+
requiring immediate rotation.
189+
- **RabbitMQ**: The restored credentials (via `*-restored-user` secrets) match the backup,
190+
but EDPM nodes may have been updated with newer credentials since.
191+
- **TLS/CA certificates**: If CAs were rotated between backup and restore, the restored
192+
control plane uses the old CA. EDPM nodes may have certificates signed by a newer CA,
193+
causing TLS trust failures in both directions.
194+
195+
**An EDPM deployment is required after restore** to resync all credentials and certificates
196+
on the dataplane nodes with the restored control plane state.
197+
178198
## Next Steps
179199

180200
After database restore, RabbitMQ credential restore, and annotation removal, proceed to:
181201
1. **Order 60**: Restore DataPlane resources (if applicable)
182-
2. **Re-enable InstanceHa**: After verifying the restored cloud is fully operational,
202+
2. **Run an EDPM deployment**: Required to resync credentials on dataplane nodes with
203+
the restored control plane, especially if credentials were rotated between backup and restore.
204+
3. **Re-enable InstanceHa**: After verifying the restored cloud is fully operational,
183205
re-enable InstanceHa (it was restored with `spec.disabled: True` to prevent fencing):
184206
```bash
185207
oc patch instanceha <name> -n openstack --type merge -p '{"spec":{"disabled":"False"}}'

docs/dev/backup-restore/restore/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Restores must be executed in sequence. Wait for each restore to complete before
1818
| `06b-restore-rabbitmq-secrets.yaml` | - | Secrets (to temp ns) | Restore secrets to `openstack-restore-tmp`, copy `*-default-user` as `*-restored-user`, create RabbitMQUser CRs |
1919
| *(Step 9 in playbook)* | - | **Manual** | Remove deployment-stage annotation, wait for control plane ready |
2020
| `07-restore-order-60-dataplane.yaml` | 60 | OpenStackDataPlaneNodeSet | DataPlane resources (optional) |
21+
| *(Post-restore)* | - | **Manual** | Run EDPM deployment to resync credentials (required if credentials were rotated between backup and restore) |
2122
| *(Final step)* | - | **Manual** | Re-enable InstanceHa (`spec.disabled: False`) after verifying the restored cloud is operational |
2223

2324
## Prerequisites

docs/dev/backup-restore/restore/restore-openstack.yaml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -683,9 +683,12 @@
683683
- "ControlPlane: {{ ctlplane_name.stdout }}"
684684
- "Restore suffix: {{ restore_suffix }}"
685685
- ""
686-
- "IMPORTANT: InstanceHa was restored with spec.disabled=True."
687-
- "After verifying the restored cloud is fully operational,"
688-
- "re-enable InstanceHa manually:"
686+
- "IMPORTANT: Post-restore steps required:"
687+
- ""
688+
- "1. Run an EDPM deployment to resync credentials on dataplane nodes"
689+
- " (required if credentials were rotated between backup and restore)"
690+
- ""
691+
- "2. Re-enable InstanceHa (restored with spec.disabled=True):"
689692
- " oc patch instanceha <name> -n {{ openstack_namespace }} --type merge -p '{\"spec\":{\"disabled\":\"False\"}}'"
690693
- ""
691694
- "To verify:"

0 commit comments

Comments
 (0)