Repository navigation
Conversation
The production delivery counterpart to Full-Stack Automation with ACP: the reference design (component selection, topologies, node pools and taint scheme, single persistent /var/cpaas disk, per-cluster observability), the end-to-end delivery flow including the DR domain- switch sequencing, the acp-delivery-charts rendering workflow, plugin placement by pool layout, machine configuration order, sizing by derivation from the capacity pages, and evidence-based acceptance. Encodes decisions verified in real ACP 4.3 deliveries. Tracking: AIT-74918 under Epic AIT-74911. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The link checker strips .md/.mdx but not .markdown, so the relative link resolved to a non-existent .markdown.html route and failed the build. Reference the article by title instead; titles are searchable in this knowledge base. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The delivery charts are withdrawn: hand-orchestrating the Cluster API manifests is the product reality on ACP 4.3, and no chart tooling will be maintained for the released lines. Section 3 now points at the product pages that hold the complete manifests (global install Step 4, the DR increments, Huawei DCS "Using YAML"), and keeps only what those pages scatter or deliveries get wrong: naming as a hard requirement on both sides, credentials out of applied manifests, one manifest set per cluster, reading shared values from global via the DCS page's placeholder table, keeping the provider literals, maxSurge 0 for persistent-disk pools, the three DR increments identical on both sides, and a pre-apply checklist. Wherever a product page already states a rule, the article links instead of restating it. The sizing and archive sentences that referred to chart values or rendered output are reworded to match. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The product documentation this article links to adopted the acp/specs platform glossary (alauda/acp-docs#1187, alauda/immutable-infra-docs #221/#222): "traditional OS" is now "non-Alauda OS" and "bootstrap host" is "bootstrap node". Follow the same wording so a reader moving between the article and the linked pages sees one name per concept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gate R&D confirmed that an Alauda OS global installation does not need two bootstrap nodes — the primary and standby installations can share one. The delivery flow now provisions one bootstrap node for both, the "never reuse one bootstrap node" line is removed, and the single-cluster topology no longer lists "one bootstrap node" as if it distinguished it from the multi-cluster case. Stage 5 also listed "CPU meets x86-64-v2" as a pass criterion for the bootstrap node. The installation guide states that baseline applies to cluster nodes, not to the bootstrap node; the criterion now points at the guide's bootstrap node requirements instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Corrects the previous commit. R&D has now confirmed (2026-10-15) that a disaster-recovery delivery of an Alauda OS global needs two bootstrap nodes, one to install the primary and one to install the standby; the shared-bootstrap reading was a misunderstanding. Stage 5 provisions two again, "Never reuse one bootstrap node for both sides" is back, and the single-cluster notes list one bootstrap node as what sets them apart. Kept from the previous commit: the bootstrap node has no x86-64-v2 pass criterion (that baseline applies to cluster nodes), and the wrapped "bootstrap host" now reads "bootstrap node". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nifests
Replace the ACP 4.3 "orchestrate and link" DCS draft with five ACP 4.4
articles that let a delivery engineer complete a standard delivery by
filling in parameter files and applying the given manifests:
- How to Deliver ACP with Immutable Infrastructure (common): reference
design, parameter files and the render helpers (site.env + one file
per cluster, envsubst with an explicit variable list, Bash fallback),
delivery flow, platform plugins (Machine Configuration, MetalLB,
Ingress NGINX, VictoriaMetrics, ClickHouse + Keeper + Kafka logging),
machine configuration, sizing and acceptance commands.
- Huawei DCS, Huawei Cloud Stack and Bare Metal: global primary and
standby (disaster recovery) plus workload clusters.
- VMware vSphere: workload clusters only.
Every manifest is assembled from the ACP 4.4 product documentation,
uses ${VAR} placeholders documented in a parameter table, keeps
credentials out of files and command lines, and is followed by the
check that proves the step worked. The articles say they must be
validated in a staging environment before a production delivery.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Three corrections to the ACP 4.4 Immutable Infrastructure articles. Local storage is TopoLVM. The reference design replaces the open "choose a StorageClass whose volumes survive node replacement" guidance with the selected system: the console-driven install, the node-local constraint the product states (application-layer replication only, no independent persistence guarantee, ReadWriteOnce), and the StorageClass values this delivery chooses. Two gaps are stated rather than papered over: TopoLVM needs one unformatted disk per node, which only vSphere documents how to provide, and the product's `lvm2` prerequisite assumes a mutable node. The logging stack install is deferred. Its deployment scheme is being revised, so the manifests and checks are removed and the section now points at the Logging Service documentation while keeping the placement, storage and sizing decisions this design already fixes. The log pool, its nodes and its disks stay in the provider manifests. Disaster recovery no longer explains steps with "`cpaas-system` is excluded from synchronization". The rule set works on key prefixes with a maintained deny-list; most objects cross, Secrets included. Each `global` side keeps its own plugins, because `ModuleInfo` objects named `global-` are excluded, and its own machine configuration, which is not synchronized at all — so machine configuration is applied on both sides. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This branch was successfully deployed
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.
What
Five ACP 4.4 articles for delivering ACP on Immutable Infrastructure (Alauda OS nodes). A delivery engineer fills in parameter files and applies the given manifests in order, with a check after each step. This replaces the earlier ACP 4.3 draft of the DCS article, which only orchestrated and linked product pages and had no YAML.
How_to_Deliver_ACP_with_Immutable_Infrastructure.md(start here)How_to_Deliver_ACP_on_Huawei_DCS_with_Immutable_Infrastructure.mdglobalprimary + standby (DR) and workload clusters; Self-built VIP (DCS Provider v1.0.22+)How_to_Deliver_ACP_on_Huawei_Cloud_Stack_with_Immutable_Infrastructure.mdglobalprimary + standby (DR) and workload clusters; provider-created ELBHow_to_Deliver_ACP_on_Bare_Metal_with_Immutable_Infrastructure.mdglobalprimary + standby (DR),globalas the management cluster, workload clusters; Alive Self-built VIPHow_to_Deliver_ACP_on_VMware_vSphere_with_Immutable_Infrastructure.mdglobalruns on another provider); Self-built VIP (vSphere Provider v1.0.17+)Suggested reading order: the common article's Reference design and Prepare the parameter files, then one provider article end to end, then the common article from Install the platform plugins on.
Conventions shared by all five
site.envplus one env file per cluster, using the same variable names (global-primary.env,global-standby.env,wl-<name>.env). Variable names follow the product docs.${VAR}placeholders. Every variable is listed in a parameter table with an obviously fake example.rendersubstitutes only the variables defined in those files (envsubstwith an explicit list, plus a Bash fallback), so a literal$in embedded scripts survives.apply_renderedrefuses leftover placeholders and runs a server-side dry run before applying.infrapool. Single-cluster, dedicated pools and worker pools are given as variants.Validation status
Decisions applied after the first review (2026-10-18)
lvm2prerequisite assumes a mutable node, which Alauda OS is not.logpool, its nodes and its disks stay in the provider manifests.cpaas-systemis excluded from synchronization" — that claim is in the product documentation but not in the implementation. The rule set works on etcd key prefixes with a maintained deny-list, so most objects cross, Secrets included. Eachglobalside keeps its own plugins (ModuleInfonames starting withglobal-are excluded) and its own machine configuration, which is not synchronized at all; machine configuration is therefore applied on both sides.infrapool, so there is no untainted node until they are added.Open questions for product / R&D
These are recorded in the articles as items to validate or confirm.
lvm2and the TopoLVM node components? The install page's prerequisite is to install the package on the node, which a read-only root filesystem does not allow. Without this, TopoLVM is unusable here.spec.storageentirely. Hardware plans depend on the answer.global(and 11780 on workload clusters)? Should etcd-sync's Active Global Cluster ETCD Endpoints be the VIP or the node IPs?console.cert.thirdPartyblock? It is mandatory for disaster recovery and documented nowhere.KubeadmControlPlanefile entry (what the DR pages say) orHCSCluster.spec.encryptionProviderConfigRef(what the CRD calls "Required for disaster recovery")? Also whetherBaremetalClusterreally has that field, which its CRD does not show.contentFrom.secretsupported for the encryption config, and should the provider also be installed on the standbyglobal?Product documentation defects found while writing these articles are tracked separately, including a security one: several pages create Secrets with
--dry-run=client -o yaml | kubectl apply, which records the key material in an annotation.Twin product-doc work: the ACP 4.4 Communication Matrix that these articles link for port approvals is being rewritten in alauda/acp-docs#1196 (#1197 / #1198 for 4.3 / master).
🤖 Generated with Claude Code