docs: clarify global immutable-OS install (kubeadm config source, boot SSH key, bootstrap teardown)#113
docs: clarify global immutable-OS install (kubeadm config source, boot SSH key, bootstrap teardown)#113chinameok wants to merge 5 commits into
Conversation
…t SSH key, bootstrap teardown) Gaps found while reproducing a no-UI `global` install on Huawei DCS: - Step 4 told you to "keep the release manifest's" kubeadm files without defining what/where that manifest is. Point to the concrete source: the Complete KubeadmControlPlane Configuration appendix in the DCS create-cluster guide (or the dcs-kubernetes-<major.minor>-files Secret). - The ignition-required `boot` user / non-empty sshAuthorizedKeys was stated in the create-cluster guide but not restated in the global DCS requirements, so a manifest assembled from the thin fragment can omit it and fail. - Added a Decommission step plus a warning that `kubectl delete cluster global` cascades into deleting the live control-plane VMs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
WalkthroughDocumentation-only updates to ChangesGlobal Install Documentation
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Readers previously had to assemble the global DCS manifest from a differential fragment plus the create-cluster appendix plus the infrastructure page. Add a "Worked Example" section with a complete, copy-pasteable manifest (Secret, DCSIpHostnamePool, DCSMachineTemplate, KubeadmControlPlane, DCSCluster, Cluster) including the global-specific annotations (is-global, cluster-type, os-family, kube-ovn-version, kube-ovn-join-cidr, registry-address) and a "Values to Replace" table, linked from Step 4. Derived from a real no-UI DCS global install; sanitized to RFC5737 example IPs and placeholders. The three large kubeadm files use the dcs-kubernetes-<ver>-files Secret with an inline-from-appendix fallback. Non-DR (no encryption-provider.conf). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The worked-example and decommission sections linked to #verification and
#step-1/4/5 anchors, but those headings carry no explicit {#id}, so doom lint
flags them as unmatched. Reference those sections as plain text instead, matching
the page's existing style. Verified with yarn lint (0 errors) and yarn build.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Deploying alauda-immutable-infra with
|
| Latest commit: |
845a5fa
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://ac5b6303.alauda-immutable-infra.pages.dev |
| Branch Preview URL: | https://docs-global-install-no-ui-cl.alauda-immutable-infra.pages.dev |
Rename the example resource names, hostnames, and machineNames from global-master-* to global-cp-* across the page (worked example plus the Step 4 fragments) to follow current Kubernetes inclusive terminology. The kube-ovn/role=master node label is left unchanged because it is a kube-ovn-recognized value; an inline comment marks it as do-not-rename. Verified with yarn lint (0 errors) and yarn build. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…rade stall #4 (confirmed against cpaas-installer code): the installer auto-migrates the DCS credential Secret to the global cluster ONLY when it is named ait-credential-secret (installer_dcs.go dcsImportDCSCredentialSecret, hardcoded name; Secrets are excluded from the etcdctl resource migration). Name the worked-example Secret ait-credential-secret so it is carried over, and add a Decommission note: if the credential Secret has a different name, copy it to the global cluster manually or the DCS provider there cannot reconcile (e.g. scale-out fails). #2: add a Common Stalls row for the silent installer hang where stopping the host firewall after KIND starts flushes the KIND bridge SNAT masquerade, so the CAPI controllers in KIND cannot reach the new control-plane subnet (KCP stuck EtcdClusterHealthy=Unknown). Fix: re-add the 172.18.0.0/16 masquerade rule. Verified with yarn lint (0 errors) and yarn build. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Why
Make
docs/en/global/install.mdxsufficient for another person to reproduce a fully no-UIglobalinstall on Huawei DCS (CLI/API only). Gaps were found by actually doing that install and diffing against the docs.Changes (
docs/en/global/install.mdx)Clarity / correctness
dcs-kubernetes-<ver>-filesSecret), instead of the undefined "release manifest".bootuser / SSH key in the global DCS requirements.kubectl delete cluster globalcascades into deleting the live control-plane VMs.Complete worked example
4. New "Worked Example: Complete
globalManifest for Huawei DCS" — one copy-pasteable file (Secret,DCSIpHostnamePool,DCSMachineTemplate,KubeadmControlPlane,DCSCluster,Cluster) with the global-specific annotations that were missing (is-global,cluster-type,os-family,kube-ovn-version,kube-ovn-join-cidr,registry-address) and a "Values to Replace" table. Sanitized to RFC 5737 IPs / placeholders.Operational gaps recovered from a deploy runbook
5. DCS credential Secret migration — confirmed against cpaas-installer code (
installer_dcs.godcsImportDCSCredentialSecret): the installer auto-migrates the credential Secret to theglobalcluster only when it is namedait-credential-secret(Secrets are excluded from the etcdctl resource migration). The worked example now uses that name; a Decommission note tells anyone using a different name to copy it manually, else theglobalDCS provider has no credentials and can't reconcile (scale-out fails).6. Bootstrap NAT stall — Common Stalls row: stopping the host firewall after KIND starts can flush the KIND bridge SNAT masquerade → CAPI controllers in KIND can't reach the new control-plane subnet → KCP stuck
EtcdClusterHealthy=Unknown, installer hangs. Fix: re-add the172.18.0.0/16masquerade rule.Inclusive terminology
7.
master→cpin example identifiers across the page; kept the functionalkube-ovn/role=masterlabel (commenteddo not rename).Still deliberately out of scope
os-familysemantics (KubeOS must setkubeosor the node won't boot) — owned separately by the docs owner; the worked example carries theos-familyfield but not the version-gated rule.maskformat was already standardized onmasterby #110.Validation
Each push validated with
yarn install+yarn lint(0 errors) +yarn buildin a scratch clone (the in-repo/workspacesvolume is too small fornode_modules).Summary by CodeRabbit
Documentation
bootuser SSH authorized-keys list, and reiterated the validation behavior for ignition