docs: add no-SSH alternative for manual MKE backup prerequisite - #50
Draft
james-nesbitt wants to merge 1 commit into
Draft
docs: add no-SSH alternative for manual MKE backup prerequisite#50james-nesbitt wants to merge 1 commit into
james-nesbitt wants to merge 1 commit into
Conversation
The upgrade-with-controller.md Prerequisites section requires a manual MKE backup to exist on each manager before applying a ClusterUpgrade CR, and documents an SSH + `docker run` command as the only method. A vanilla bootc-mke3 install revokes SSH/sudo on every manager as its last install step by default (disable_sshd_after_install / revoke_sudo_after_install, both true by default in ansible/vars/common-vars.yml), leaving an operator who kept the hardened defaults with no way to run the documented command. Add docs/examples/mke-manual-backup-job.yaml.example: a privileged, hostPID/hostNetwork, host-root-bind-mount Job (the same pattern cluster-upgrade-controller/machine-config-controller use for their own node-mutating SUC Jobs) that chroots into the host and runs the identical docker run ... mirantis/ucp ... backup command against the node's own Docker socket, over kubectl only. It reuses the system-upgrade ServiceAccount, which is already granted the needed privileged/hostPID/hostNetwork/hostBindMounts UCPAuthorization attributes at install time, so no extra MKE grant is required. Cross-reference this alternative from the Prerequisites section, framed explicitly as an alternative for the no-SSH case, not a replacement for the documented SSH method. Written by AI: claude-sonnet-5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PRODENG-3628
Fixes one of the impediments discovered running the
bootc-e2e-testskill's Phases A–G end-to-end against a real 33-nodebootc-mke3cluster (3 managers + 30 no-touch workers) on AWS — build MCR 29.4.1 / MKE 3.9.4 / Rocky 9.8 (dev, AMI-based), account 533267045383, region us-east-2, 2026-08-05.Observed
docs/operations-guide/upgrade-with-controller.md's Prerequisites section requires a manual MKE backup to already exist on each manager before applying aClusterUpgradeCR, and documents the only method as SSH +docker run:A vanilla
bootc-mke3install revokes SSH/sudo on every manager as its last install step by default (disable_sshd_after_install/revoke_sudo_after_install, bothtrueby default inansible/vars/common-vars.yml). An operator who followed the documented, recommended hardened defaults has no way to run this without first re-enabling the SSH access they were told to disable — the doc doesn't acknowledge or resolve this conflict.Changed
docs/examples/mke-manual-backup-job.yaml.example: a kube-native,kubectl-only alternative. It's a privileged,hostPID/hostNetwork, host-root-bind-mountJob— the identical patterncluster-upgrade-controllerandmachine-config-controlleralready use for their own node-mutating SUC Jobs (seedocs/operations-guide/controller-security-analysis.md§1) — thatchroot /hosts and runs the samedocker run ... mirantis/ucp ... backup --no-passphrase --file ...command against the node's own Docker socket. It reuses thesystem-upgradeServiceAccount, which is already granted the neededprivileged/hostPID/hostNetwork/hostBindMountsUCPAuthorization attributes at install time (ansible/tasks/suc-priv-grant-tasks.yml), so no extra MKE grant is required. Backups run "on each manager" per the documented procedure, so the manifest is designed to be copied/applied once per manager (nodeNamepinned) — documented in the manifest's own header comments, along with idempotency (safe to re-run; each run just writes another timestamped tar).docs/operations-guide/upgrade-with-controller.md's Prerequisites section to cross-reference the new manifest as the no-SSH alternative, explicitly naming thedisable_sshd_after_install/revoke_sudo_after_installconflict as the reason it exists. The existing SSH-based instructions remain the documented default (simpler when SSH is available) — this is framed as an alternative, not a replacement.Verification
docs/examples/mke-manual-backup-job.yaml.examplevalidated as a structurally valid KubernetesJobmanifest viakubeconform -strict(no local cluster available in this sandbox to runkubectl apply --dry-run=clientagainst — it requires network access to a cluster's OpenAPI schema even in--dry-run=clientmode on this kubectl version;kubeconformperforms the same offline OpenAPI schema validation):Summary: 1 resource found in 1 file - Valid: 1, Invalid: 0, Errors: 0, Skipped: 0.Written by AI: claude-sonnet-5