Commit 03683d2
PRODENG-3446: add airgapped multi-hop upgrade smoke test (customer scenario)
Adds TestAirgappedMultiHopUpgrade, a smoke test that exercises the full
upgrade chain reported by the Vocalink customer: install with MCR 25.0 /
MKE 3.8.8 / MSR 2.9.27, then upgrade through 3.8.11 → 3.8.12 (MCR 29.2)
→ 3.9.2 → latest MKE 3.x / MCR 29.x. All post-install upgrade steps pull
images from an internal DTR exposed on a non-standard port (4443) via an
NLB, simulating an airgapped registry configuration.
Key design decisions
--------------------
- Image preload strategy: rather than pushing images to DTR (which requires
namespace provisioning and hits DTR auth edge cases), all upgrade images
are pulled from docker.io/mirantis on every node and tagged with the DTR
registry address. Launchpad's "Pull MKE images" phase runs docker image
inspect before docker pull; finding the image locally it skips the pull
entirely. This exercises Launchpad's imageRepo feature without requiring
actual DTR push/pull.
- SSH key compatibility: Terraform's tls_private_key emits OpenSSH-format
ed25519 keys that golang.org/x/crypto/ssh.ParsePrivateKey rejects. All
remote commands use the system ssh binary (sshRun/sshRunScript) to avoid
Go-side key parsing.
- DTR image listing: UCP bootstrapper uses "images --list"; DTR 2.x uses
"images" (the --list flag is unrecognised and causes help text on stdout
with exit 0). The preload script filters output for valid image-reference
patterns and falls back to the plain "images" subcommand automatically.
- Dynamic latest-version step: fetchLatestMKEVersion queries Docker Hub
tags for mirantis/ucp; fetchLatestMCRChannel probes the Mirantis apt
repository (channels are non-sequential so the probe scans the full
range rather than stopping at the first 404). The dynamic step is
appended only when it differs from the last fixed step.
Supporting changes
------------------
- examples/terraform/aws-simple: add msr_port variable (default 443) so
the NLB can expose DTR on a non-standard port; all other smoke tests are
unaffected. --dtr-external-url appends :PORT only when port != 443.
- test/platforms.go: fix RHEL8 MCR install — disable the container-tools
module stream before installing MCR to prevent the system runc from
conflicting with Mirantis's containerd.io-runc.
- Makefile: add smoke-airgapped-multi-hop target (-timeout 200m).
- .github/workflows/smoke-tests.yaml: add smoke-airgapped-multi-hop CI job
triggered by the smoke-test or smoke-airgapped-multi-hop PR labels.
Tested: two passing runs (2537s with 3 fixed steps; 3329s with 4 steps
including the dynamic latest-version step MKE 3.9.3 / MCR stable-29.4).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent 8484015 commit 03683d2
7 files changed
Lines changed: 674 additions & 5 deletions
File tree
- .github/workflows
- examples/terraform/aws-simple
- test
- smoke
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
85 | 85 | | |
86 | 86 | | |
87 | 87 | | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
69 | 74 | | |
70 | 75 | | |
71 | 76 | | |
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
56 | | - | |
57 | | - | |
| 56 | + | |
| 57 | + | |
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
| |||
188 | 188 | | |
189 | 189 | | |
190 | 190 | | |
191 | | - | |
| 191 | + | |
192 | 192 | | |
193 | 193 | | |
194 | 194 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
76 | | - | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
77 | 80 | | |
78 | 81 | | |
79 | 82 | | |
| |||
0 commit comments