Commit Graph

1755 Commits

Author SHA1 Message Date
abuckit a013378869 ci: harden workflow helper scripts 2026-06-17 19:14:32 -04:00
abuckit ab4a101ab0 fix: resolve dependabot alerts 2026-06-17 09:18:34 -04:00
abuckit fcdfe06d32 test: stabilize truncated part resiliency heal 2026-06-16 13:22:23 -04:00
abuckit 518c532960 test: cover FastOpen encryption and metrics 2026-06-15 22:53:50 -04:00
abuckit 7672c1703a chore: remove duplicate FastOpen metrics 2026-06-15 22:36:26 -04:00
abuckit 0fe7bd110a Align FastOpen design doc and trim docs 2026-06-13 21:36:51 -04:00
abuckit 6344ff1289 feat: add FastOpen lazy replacement 2026-06-09 23:42:18 -04:00
abuckit 5d77f36c3c docs: add FastGet phase 1 design plan 2026-06-09 15:48:26 -04:00
abuckit 5d28a361c4 docs: add single-trip benchmark handoff 2026-06-08 14:04:35 -04:00
abuckit bb8b663c0f docs: record single-trip phase-1 benchmark results
Document the container A/B on the corrected single-pool rig (one 16-drive
EC:4 set, 2 MiB non-inlined objects):

- single-trip proven directly: with xl.meta and the canonical data dir
  deleted on all drives, FAST_GET=1 still serves byte-exact from the shadow
  (multi-pool returned 404).
- cold single-stream TTFB ~26% lower (server-side trace) / ~21% (curl),
  captured paired on the same requests; saturated throughput flat on the
  seek-free loopback medium.
- record the two rig traps (multi-pool xl.meta pre-read; inline cutoff is
  per-shard, so EC:4 inlines everything below ~1.5 MiB).

Design note: the on-disk shadow header should be variable-length with a
self-describing payload so fields can evolve without lockstep; the fixed
1024-byte positional header is a phase-1 shortcut.
2026-06-04 16:00:26 -04:00
abuckit e0e3955742 test: wire cluster rig for single-trip benchmark 2026-06-04 11:52:04 -04:00
abuckit 87ca27b872 docs: record single-trip smoke validation 2026-06-04 11:09:59 -04:00
abuckit 29982574ef feat: add single-trip GET phase 1 prototype 2026-06-04 09:10:40 -04:00
abuckit f4b729273c docs(kms): pin epoch-key derivation, split MVP vs phase-2 security
Address security review: specify the exact epoch-key derivation scheme
(deterministic KMS MAC, or random-and-wrap) since cloud KMS GenerateDataKey
is random by default and would otherwise make keys unrecoverable. Promote
authenticated metadata binding, basic token scoping, a minimal revocation
path, and bounded historical cache into MVP requirements; keep full replay
protection and coordinated revocation as phase-2. Add the accepted-residual-
risk note and a multi-instance proxy section.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 15:53:44 -04:00
abuckit 88210b94ee docs(kms): revise KES replacement design to keep master key in KMS
Switch the design to a true-HSM model where the master key never leaves
the KMS, unlike KES/MinKMS which load it into memory. The KMS produces an
epoch key per window; bucket and object keys derive locally. Adds the
two-window model (12h epoch + ~15min Buckit cache TTL), corrected near-zero
cost analysis, the bounded-compromise security framing, and clarifies that
only the bucket key is cached.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 14:39:25 -04:00
abuckit 822d5d374d docs(kms): add KES replacement design
Design for replacing deprecated MinIO KES with an open-source approach:
a cached per-cluster encryption key in Buckit (L1) plus a stateless
KMS-auth proxy (Fargate, L2) that holds the cloud credentials so they
never live in Buckit. Covers cost analysis, the two-tier cache, security
boundary (credential isolation vs. key-material exposure), and open
decisions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 22:52:51 -04:00
abuckit 42f49f3cc3 docs(manager): mark M1-M9 landed; document shipped installer approach
M9 reflects what shipped: embedded UI bundle, signed multi-platform
release pipeline + gh-pages download site, bm update self-update, and
the install.sh/install.ps1 per-user installers (Homebrew/Scoop dropped).
Refresh the Progress and resuming notes (mock layer removed; TS refs
ported to Go).
2026-05-31 12:00:21 -04:00
abuckit 019a533215 docs: rebrand package paths and update backend design milestones 2026-05-22 21:53:01 -04:00
abuckit 359e4edef9 fix: resolve CI failures in shfmt and decom tests
- packaging/scripts: convert 4-space indentation to tabs (shfmt)
- docs/distributed/decom*.sh: add consistent trailing slashes to
  mc ls bucket paths so before/after diffs compare identical formats
2026-05-19 11:30:13 -04:00
abuckit 0801586b3b docs(manager): backend design; history page simplification; migrate TODOs
Add docs/manager/backend-design.md — companion to ui-architecture.md
covering the backend that replaces the in-memory mock: package
layout, bbolt schema, REST surface derived from the UI, unified
operation orchestration pipeline, security model, SSH layer,
and on-demand refresh.

Lays out the fork strategy for the MinIO Go ecosystem. bm aims for
full mc CLI parity, so we fork wholesale rather than selectively
port. One coordinated pass forks Tier 1 (mc, madmin-go, minio-go,
pkg, cli) and Tier 2 (selfupdate, colorjson, kms-go) under
buckit-io/* — no upstream rebase obligation thereafter. CLI uses
the forked urfave/cli framework; HTTP backend uses the forked
madmin-go directly. Tier 3 specialised libraries stay as upstream
deps. Includes an alias bridge so forked mc commands resolve
cluster names from the bm store.

ui-architecture.md updated to match the simplified History page:
single source (UI-initiated mutable actions), structured row shape
(opKind/opLabel/clusterId/clusterName/hostScope/result), status
filter chips, no CLI source column.

phase1-implementation.md picks up TODOs from prior design rounds:
M8 cutover writes a systemd drop-in to run buckit as MinIO's
user/group; rollback-to-MinIO becomes a cluster Action visible when
migratedFrom is set.
2026-05-18 19:05:24 -04:00
abuckit 56244d2fff docs(manager): envfile layer, M5 preflight TODOs, bm alias auto-save
- request-flow.md § 10.1: OS-level environment file as the layer that
  feeds the process before .minio.sys is reachable. Covers the three
  conventional paths (/etc/default/minio, /etc/minio/config.env,
  /etc/sysconfig/minio), what lives there (root creds, MINIO_VOLUMES,
  KMS bootstrap), and why those can't move into config.json.
- phase1-implementation.md: TODOs for M5 preflight (stale
  .minio.sys/format.json detection, hostname pattern + drive
  uniformity), drive preparation wizard deferred to M6.5 with full
  safety requirements, and auto-save of bm alias to ~/.bm/config.json
  (separate from mc's ~/.mc) on successful deploy/import. Data-key
  bootstrap section corrects the path from /etc/bm/data.key to
  ~/.config/bm/data.key for personal-tool framing.
2026-05-16 21:15:31 -04:00
abuckit ec65f5902d docs: add Buckit Manager Phase 1 plan, UI architecture, and supporting specs
Adds four documents that form the Buckit Manager design corpus
alongside the existing README.md and phase1-web-ui.md:

- phase1-implementation.md: Phase 1 milestone plan (M0-M9), repo
  layout, locked stack decisions, and a Progress section that tracks
  what's landed in github.com/buckit-io/bm so work can resume cleanly
  in a new session.

- ui-architecture.md: data flow (admin API + per-node connectivity
  probes + SSH facts), the on-demand fetch pipeline with failure
  isolation, REST contract sketch, per-page details for Clusters
  list, Cluster detail, History, and Manager Settings, and the
  proposed HostInfo extension to madmin.ServerProperties to surface
  OS / CPU / Memory / Network in /admin/info.

- metrics.md: spec for the per-cluster Metrics tab (Info, Usage,
  Traffic, Resources) — referenced by ui-architecture.md as the
  source-of-truth for the existing /admin/info shape.

- authentication.md: notes on Console + mc CLI auth flows.
2026-05-15 16:35:20 -04:00
abuckit df162d630f docs: add Buckit Manager design — architecture and Phase 1 web UI
Introduces docs/manager/ with two design documents:

- README.md: high-level architecture for bm, a single-binary
  operational control plane that ships as both a direct CLI and a
  long-running `bm server` exposing an HTTP API and embedded web UI.
  Covers the product model, distribution and packaging strategy,
  agentless SSH cluster management, and a phased delivery plan
  (Phase 1 manager foundation, Phase 2 CLI, Phases 3-4 progressive
  mc replacement). Implementation-level subsystems, task model,
  storage, and repository layout are kept in an appendix so the
  high-level design reads cleanly.

- phase1-web-ui.md: wireframe-level web UI design for the first
  release, scoped to the two operator journeys that only bm can
  serve — deploying a new Buckit cluster on fresh hosts, and
  migrating an existing MinIO deployment in place via binary swap.
  Includes screen catalog, supporting operational surfaces, an
  out-of-scope list that defers to the per-cluster Buckit console
  for data-plane operations, and appendices covering the MinIO
  compatibility surface and the package install path.
2026-05-11 19:13:18 -04:00
abuckit 9266053d7f build: drop pkger from hotfix Makefile target and release-process doc
Mirrors the earlier release.yml switch to nfpm. The local `make hotfix`
flow now downloads nfpm v2.46.3 (matching CI), stages the binary at
dist/buckit, computes a numeric PKG_VERSION from the RELEASE tag with
the same transformation CI uses (and additionally strips the
.hotfix.<sha> suffix that hotfix-vars appends), and builds rpm/deb/apk
from packaging/nfpm.yaml. Resulting packages are copied into the
existing buckit-release/$(GOOS)-$(GOARCH)/ directory so hotfix-push
keeps working unchanged.

clean target updated to remove nfpm_*.deb and the new dist/ directory.

release-process-plan.md table row updated to reflect the tool change.

Note: no Go-module dependency on pkger ever existed; pkger was only a
CI/Make-time download.
2026-05-11 15:29:51 -04:00
abuckit 15d5f02df7 feat: implement Buckit release process
Automated release pipeline triggered by tag push (RELEASE.YYYY-MM-DDTHH-MM-SSZ):

- Multi-platform builds: linux/amd64, linux/arm64, windows/amd64, darwin/arm64
- Minisign binary signing with Buckit keypair
- Linux packages (.deb, .rpm, .apk) via pkger
- Multi-arch Docker images pushed to ghcr.io and Docker Hub
- GitHub Release with all artifacts and auto-generated release notes
- Self-update support via GitHub Pages sha256sum pointers
- mc admin update works for all platforms (linux, windows, darwin)

Code changes:
- cmd/update.go: accept 'buckit.' prefix, new pubkey, GitHub Releases
  URL derivation, platform-aware binary URL construction
- cmd/build-constants.go: point default release URL at GitHub Pages
- cmd/admin-handlers.go: use getBinaryURL() helper
- Dockerfile: rewrite with ubi9/ubi-micro base (no MinIO inheritance)
- Remove legacy Dockerfiles (release, hotfix, old_cpu)

Docs:
- docs/release-process.md: operator guide
- docs/release-process-plan.md: implementation plan
- docs/self-update-migration.md: self-update technical details
2026-05-10 21:56:33 -04:00
abuckit 01ecad1ea9 fix: update CI scripts and workflows for buckit
- Rename all 'minio server' references to './buckit server'
- Update default credentials from minioadmin to buckitadmin
- Add 'pkill -9 buckit' to all test cleanup functions
- Pin workflow Go version to 1.25.10
- Update vulnerable Go modules
- Fix resiliency tests: restore docker compose --wait, add
  MC_HOST_local env var, fix induce_bitrot_for_xlmeta typo
- Update mint docker-compose images to buckit
- Update IAM integration and root lockdown test scripts
2026-05-09 16:31:50 -04:00
abuckit efbc9e1c30 chore: update default root credentials and test expectations 2026-05-08 14:10:10 -04:00
abuckit 5bd6b356f2 chore: rebrand repo metadata, build paths, and CI tooling for Buckit 2026-05-08 13:37:11 -04:00
abuckit 1ccd759c43 add request-flow document 2026-04-30 21:28:03 -04:00
abuckit de87d71b54 rebrand in all md files 2026-04-30 16:08:31 -04:00
abuckit 4969a9c426 Fix github Actions 2026-04-30 16:06:15 -04:00
Krutika Dhananjay 58659f26f4 Drop v3 metrics from community docs (#21678) 2025-11-06 02:38:16 -08:00
Harshavardhana 9e49d5e7a6 update README.md and other docs to point to source only releases 2025-10-15 10:29:55 -07:00
Mark Theunissen ba3c0fd1c7 Bump Go version in toolchain directive to 1.24.8 (#21629) 2025-10-10 11:57:03 -07:00
Klaus Post b8631cf531 Use new gofumpt (#21613)
Update tinylib. Should fix CI.

`gofumpt -w .&&go generate ./...`
2025-09-28 13:59:21 -07:00
Minio Trusted 0cde982902 Update yaml files to latest version RELEASE.2025-09-06T17-38-46Z 2025-09-07 05:14:10 +00:00
Klaus Post f0b91e5504 Run modernize (#21546)
`go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix -test ./...` executed.

`go generate ./...` ran afterwards to keep generated.
2025-08-28 19:39:48 -07:00
Daryl White 0848e69602 Update docs links throughout (#21513) 2025-08-12 11:20:36 -07:00
Johannes Horn d002beaee3 feat: add variable for datasource in grafana dashboards (#21470) 2025-08-03 18:46:49 -07:00
Minio Trusted b9f0e8c712 Update yaml files to latest version RELEASE.2025-07-23T15-54-02Z 2025-07-23 18:28:46 +00:00
Minio Trusted 34679befef Update yaml files to latest version RELEASE.2025-07-18T21-56-31Z 2025-07-18 23:28:59 +00:00
Minio Trusted e0c79be251 Update yaml files to latest version RELEASE.2025-06-13T11-33-47Z 2025-06-23 20:28:38 +00:00
Minio Trusted ee2028cde6 Update yaml files to latest version RELEASE.2025-05-24T17-08-30Z 2025-05-24 21:37:47 +00:00
Celis b7540169a2 Add documentation for replication_max_lrg_workers (#21236) 2025-04-24 16:34:26 -07:00
Klaus Post f01374950f Use go mod tool to install tools for go generate (#21232)
Use go tool for generators

* Use go.mod tool section
* Install tools with go generate
* Update dependencies
* Remove madmin fork.
2025-04-24 16:34:11 -07:00
Shubhendu 2d8ba15b9e Correct spelling (#21225) 2025-04-23 08:13:23 -07:00
Minio Trusted bd6dd55e7f Update yaml files to latest version RELEASE.2025-04-22T22-12-26Z 2025-04-22 22:34:07 +00:00
jiuker 864f80e226 fix: batch expiry job doesn't report delete marker in batch-status (#21183) 2025-04-22 04:16:32 -07:00
dependabot[bot] 1d6478b8ae build(deps): bump golang.org/x/net from 0.34.0 to 0.38.0 in /docs/debugging/s3-verify (#21199)
build(deps): bump golang.org/x/net in /docs/debugging/s3-verify

Bumps [golang.org/x/net](https://github.com/golang/net) from 0.34.0 to 0.38.0.
- [Commits](https://github.com/golang/net/compare/v0.34.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.38.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-17 04:45:33 -07:00
dependabot[bot] 479303e7e9 build(deps): bump golang.org/x/crypto from 0.32.0 to 0.35.0 in /docs/debugging/inspect (#21192) 2025-04-16 14:54:16 -07:00