Lab Infrastructure

Architecture Decision Record

Decision history for how this wiki is managed.

ADR 0001: Document Cluster Access Without Storing Secrets

Date: 2026-05-07

Status: Accepted

Context

The workspace needs a lightweight record of available lab clusters and how to access them through dl385.

dl385 is the jump host for this environment. OpenShift and RKE2 cluster operations are expected to be run from dl385, not directly from a local laptop.

Access was verified for:

PlatformClustersCLI
OpenShifthub-dc, hub-dr, spoke-dc, spoke-droc
RKE2rke2, rke2-drkubectl

The kubeconfig files live on dl385 under ~/.kube/configs/. These files may contain sensitive credentials and must not be copied into the workspace.

Decision

Document cluster access in INFRASTRUCTURE.md, including:

Keep agent operating guidance in AGENTS.md so future edits preserve the same safety and documentation conventions.

Consequences

Follow-Up

If the workspace grows, split ADRs into docs/adr/ and keep this decision as docs/adr/0001-document-cluster-access-without-storing-secrets.md.

ADR 0002: Keep an Aggressive Changelog

Date: 2026-05-07

Status: Accepted

Context

The wiki now contains infrastructure access details, deployment automation, and operating guidance. Small documentation changes can have operational impact because people may use this repository as a source of truth for cluster access and deployment state.

The user requested aggressive change tracking.

Decision

Maintain CHANGELOG.md as a required, newest-first history of meaningful repository changes.

Every meaningful tracked-file change must include:

The changelog must be updated in the same commit as the change it records whenever practical.

Consequences

ADR 0003: Track Durable Project Memory In Git

Date: 2026-05-07

Status: Accepted

Context

The user wants project memory to survive laptop changes. The repository already tracks infrastructure documentation, deployment automation, ADRs, and a changelog, but durable handoff context was spread across multiple files and conversation history.

Some project context is safe to store in git, such as repo URLs, deployment project names, workflow files, bootstrap steps, and references to where secrets live. Secret values themselves are not safe to store in git.

Decision

Maintain MEMORY.md as the tracked durable memory file for the project.

MEMORY.md should record:

MEMORY.md must not record:

Consequences

ADR 0004: Use dl385 As The Cluster Jump Host

Date: 2026-05-07

Status: Accepted

Context

OpenShift and RKE2 cluster access is available from dl385. The user clarified that dl385 is specifically the jump host for cluster operations.

The local laptop should not be treated as the direct execution environment for OpenShift or RKE2 access. It may hold this repository and local documentation tooling, but cluster commands should be run after SSHing to dl385.

Decision

Use dl385 as the required jump host for cluster access.

Operational pattern:

ssh ze@dl385

From dl385:

Do not assume kubeconfigs or cluster network access are available from a replacement laptop.

Consequences

ADR 0005: Use Vault Kubernetes Auth For RKE2 Vault Replication Export

Date: 2026-05-07

Status: Accepted

Context

The RKE2 DC Vault replication export CronJob had been authenticating with a static VAULT_TOKEN stored in Kubernetes Secret vault/vault-replicator.

That token expired or was otherwise invalidated, which caused export jobs to fail with:

The cluster already had a Vault kubernetes/ auth mount and a dedicated Kubernetes ServiceAccount for the replication job.

Decision

Move the DC Vault replication export CronJob to Vault Kubernetes auth.

Implementation shape:

The GitOps source of truth for the workload manifests is:

http://30.30.30.5/infra/gitops-rke2.git
clusters/dc/manifests/vault-replication

Consequences