T12: Harbor onboarding root (iac) #27
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lab/iac#27
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
Harbor at
https://harbor.animeteamspeak.moeis already wired into the lab identity layer —kanidm/oauth2.tf:279declares the OIDC app (kanidm_oauth2_basic.harbor) with groupsharbor_admins/harbor_editors/harbor_superadmins/harbor_users— but its platform config (projects, robot accounts, members, registries, gc policies) is not yet declared in iac. Onboard it as a new tofu-managed root usinggoharbor/terraform-provider-harbor(registry.terraform.io/goharbor/harbor, latest v3.12.4; tested against Harbor 2.13–2.15, Terraform 1.12–1.14).What to build
New top-level
harbor/root mirroring thekanidm//vault/layout:provider.tf:variables.tf,main.tf,modules/,scripts/import.shper the kanidm/vault patternpilot resources: existing projects, project members, robot accounts — imported, not recreated (same import.sh approach as kanidm's groups/oauth2)
any registries / replication / gc / retention policy currently configured by hand, or explicitly deferred (see decisions)
Credentials
No credentials in git, same rule as kanidm/vault. Bootstrap once by hand with an admin account (or a robot account directly), then inject the runner token into tofu-controller via the
Terraformobject'svarsFrom. Prefer a scoped robot accountbearer_tokenover username/password. If the runner token is not admin, setrobot_prefixexplicitly (auto-detection calls the admin API).Decisions to make
bearer_tokenvs admin username/password for bootstrapgroup-<app>-<capability>consumerAcceptance criteria
harbor/root runstofu planclean with no drift vs existing Harbor statevarsFromTerraformCR for the harbor root in flux-clusters (clusters/mini/iac/, per T10 pattern), reconciled ReadyBlocked by
T10: tofu-controller sync for provider roots (#25) — needed for in-cluster apply of the new root (and its own blocker T7 #9). Not required to author and plan the root locally.