Skip to content

docs: fix blocking errors and trim the self-install guides - #1107

Open
pditommaso wants to merge 1 commit into
chris-self-installfrom
docs/self-install-review-fixes
Open

docs: fix blocking errors and trim the self-install guides#1107
pditommaso wants to merge 1 commit into
chris-self-installfrom
docs/self-install-review-fixes

Conversation

@pditommaso

Copy link
Copy Markdown
Collaborator

Stacked on #1106base is chris-self-install, not master. Merge #1106 first, or merge this into it.

Addresses the review on #1106. Every claim was verified against src/main at 1e4e10d before being fixed.

Deployments that would not work as documented

Fix Why
aws-build: add wave.scan.reports.path Scan was enabled without it. ObjectStorageOperationsFactory.create0 throws on a null path, and Application.groovy:43 uses eagerInitSingletons(true) — Wave failed to boot.
aws-build: create wave-build-pvc in both namespaces The claim existed only in wave; jobs run in wave.build.k8s.namespace (wave-build). PVCs are namespaced, so every build, scan, and mirror pod stayed Pending.
aws-build: add the noarch node selector K8sHelper.getNoArchSelector returns an empty map without it, so the mirror and blob-cache pods KubeMirrorStrategy/KubeTransferStrategy create schedule outside the build node group.
aws-build: create the S3 bucket <s3-bucket> was referenced by the IAM policy and the logs/locks paths but never created, and was missing from the requirements.
aws-build: restore WAVE_JVM_OPTS src/main/jib/launch.sh defaults to -Xmx850m regardless of the 4 GiB limit. The comment notes that setting the variable replaces the default option set.
docker-compose: move credentials into wave.registries Nothing in src/main reads DOCKER_USER/DOCKER_PAT. They work only via the config.yml the image ships (build.gradle:184) — the same file this guide mounts over.
kubernetes-lite: fold registries: into the ConfigMap It was a second top-level wave: block; Wave loads one YAML document, so appending it dropped wave.db.* and wave.server.url.
kubernetes-lite: add kubectl apply, complete the ingress Five manifests were printed with no apply step, and the "AWS ALB" ingress had no ingressClassName or annotations, so /service-info could not pass.
Restore endpoints.health in both guides jdbc and disk-space are on by default (micronaut-management + micronaut-jdbc-hikari, no endpoints: in application.yml). Master's compose guide disabled them; the new guides probe /health for liveness.
configure-wave: stop hardcoding MICRONAUT_ENVIRONMENTS The literals re-added lite, which gates out JobManager, JobServiceImpl, both job queues and cleanup via @Requires(missingBeans = WaveLite).
reference: restore kebab-case on six keys The merge reverted wave.denyHosts, wave.blobCache.s5cmdImage and four wave.blobCache.storage.* keys, undoing #1096. They still bind from YAML — Micronaut hyphenates — but lose env-var overridability, which is how blob-cache credentials are injected.
Use wave.capabilities.anonymous-access application.yml:56-63 makes wave.allowAnonymous a legacy alias, and the reference documented the toggle twice. Adds a pointer to MICRONAUT_ENVIRONMENTS=strict.
Fix how-wave-works.md:126 Still linked ./configuration.md, renamed here to install/reference.md.

Simplification

Guides shrank, the reference absorbed the detail:

configure-wave.md   333 → 194     reference.md   684 → 751
aws-build.md        549 → 536     troubleshoot.md  36 →  81
  • The seven-registry pre-creation matrix moved out of the EKS guide into reference.md#registry-pre-creation.
  • Bottlerocket user-namespace setup moved to troubleshoot.md, reached from a note where builds are configured.
  • Cut: the SMTP settings table, the duplicate ECR-cache walkthrough (which used a different repo name than aws-build creates), the third IRSA explanation, and the EC2-instance-profile section for Docker builds — a path index.md says is unsupported.
  • The IAM section keeps the Wave delta (policy, trust policy, service-account annotation) and links Assign IAM roles to Kubernetes service accounts for the procedure. Shell variables moved to the top of the page, so the ECR and S3 commands no longer use $AWS_REGION before it is set.
  • Sizing prerequisites are now per-replica and match the manifests, rather than asking for 12 GB and an m5a.2xlarge for a one-replica stack.
  • "Production enhancements" dropped; build-pod egress kept as a checklist item, since build pods run user-supplied Dockerfiles.

Reference and verification

  • Added wave.build.enabled, wave.mirror.enabled, wave.blob-cache.enabled, wave.job-manager.max-running-jobs, and the mail.smtp.* keys; finished the truncated wave.accounts entry; corrected five (required) labels on settings that ship defaults.
  • Noted that the documented env vars only take effect where config.yml interpolates them — the root cause of the DOCKER_USER issue.
  • post-install.md now covers mirror and scan, the features aws-build enables. Flags checked against wave-cli App.java: --mirror needs --build-repo and conflicts with --containerfile/--conda-package/--freeze; --scan-mode takes none|async|required.
  • troubleshoot.md added to the sidebar with front matter; post-install moved ahead of aws-build.

Checks

  • All 39 docs: every internal link and heading anchor resolves; all 25 sidebar ids map to a file.
  • All 21 YAML blocks in the install guides parse, including the config.yml embedded in each ConfigMap.
  • Config keys, defaults, IAM actions, and Micronaut environments re-checked against src/main.

Two judgement calls worth a look: the four aws iam / eks describe-cluster commands are kept rather than fully replaced by the AWS link, on the grounds that an install guide should be followable end to end; and the database SQL block stays duplicated across both Lite guides for the same reason.

🤖 Generated with Claude Code

Follow-up to #1106. Addresses the review findings in three groups.

Deployments that would not work as documented:

- aws-build: scan was enabled without wave.scan.reports.path. The bean
  factory throws on a null path and Application starts Micronaut with
  eagerInitSingletons(true), so Wave failed to boot.
- aws-build: wave-build-pvc existed only in the `wave` namespace while
  build jobs run in `wave-build`. PVCs are namespaced, so every build,
  scan, and mirror pod stayed Pending. Now created in both.
- aws-build: added the missing `noarch` node selector key. Without it
  getNoArchSelector returns an empty map and mirror and blob cache pods
  schedule outside the build node group.
- aws-build: the S3 bucket referenced by the IAM policy and the build
  logs and locks paths is now created, and listed as a requirement.
- aws-build: restored WAVE_JVM_OPTS. launch.sh defaults to -Xmx850m
  regardless of the 4Gi container limit.
- docker-compose: DOCKER_USER and DOCKER_PAT are not read by Wave. They
  work only where config.yml interpolates them, and this guide replaces
  the config.yml that does. Moved into wave.registries.
- kubernetes-lite: the registry snippet was a second top-level `wave:`
  block, which would drop wave.db.* and wave.server.url. Folded into the
  single ConfigMap.
- kubernetes-lite: added the missing `kubectl apply` step, and completed
  the ALB ingress with ingressClassName and annotations so the
  /service-info check in post-install can pass.
- Restored the endpoints.health guard dropped from master. jdbc and
  disk-space are on by default, so a brief Postgres blip turned the
  liveness probe red.
- configure-wave: the MICRONAUT_ENVIRONMENTS examples re-added `lite`,
  which gates out JobManager and cleanup via @requires(missingBeans).
- reference: restored kebab-case on six keys the merge reverted to
  camelCase, undoing #1096 - they still bind from YAML but lose env-var
  overridability.
- Production checklist now uses wave.capabilities.anonymous-access
  instead of the wave.allowAnonymous legacy alias, and mentions the
  strict environment.
- Fixed how-wave-works link to the renamed configuration reference.

Simplification, per the review rubric:

- Moved the seven-registry pre-creation matrix out of the EKS guide and
  into the reference.
- Moved Bottlerocket user-namespace setup to troubleshoot.
- Cut the SMTP settings table, the duplicate ECR cache walkthrough, the
  third IRSA explanation, and the EC2-instance-profile section for
  Docker builds, which the install paths do not support.
- Trimmed the IAM narration to the Wave-specific delta and linked the
  AWS IRSA procedure.
- Dropped "Production enhancements", keeping build-pod egress as a
  checklist item.
- Made the sizing prerequisites per-replica so they match the manifests.

Reference and verification:

- Added wave.build.enabled, wave.mirror.enabled, wave.blob-cache.enabled,
  wave.job-manager.max-running-jobs and the mail.smtp.* keys; finished
  the truncated wave.accounts entry; corrected five (required) labels on
  settings that ship defaults.
- post-install now covers the mirror and scan checks for the features
  aws-build enables.
- Added troubleshoot to the sidebar and gave it front matter; moved
  post-install ahead of aws-build.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant