Commit Graph
13992 Commits
Author SHA1 Message Date
Akanksha Trehun 97b27d94e9 docs: fix 'an another' -> 'another' in ceph-nfs-ganesha design doc
Signed-off-by: Akanksha Trehun <akankshatrehun@gmail.com>
2026-07-10 17:37:53 +05:30
Travis Nielsen 838960a11d Merge pull request #17328 from obnoxxx/ci-add-markdown-link-checking
CI: Check markdown links
2026-07-09 13:00:19 -06:00
Michael Adam de75ca73eb ci: check markdown links in daily-nightly CI
This adds markdown link checking in th documentation sources
to the daily-nightly CI jobs.

The purpose of this is to catch breaking external links to help
keep out documentation clean.

Catching breaking external links is best done in the daily CI runs
instead of checking links in PRs. link checking in PRs would prevent
changes in PRs from newly introducing broken links.

Signed-off-by: Michael Adam <obnox@samba.org>
2026-07-09 19:51:57 +02:00
Michael Adam f35b54a53f docs: fix markdownlint
This fixes failing make lint.markdown

it broke after the latest link checking fixes.

Signed-off-by: Michael Adam <obnox@samba.org>
2026-07-09 19:51:52 +02:00
Michael Adam e8a39e3f90 docs: fix docs-build
After some markdown link fixes,
make docs-build failed due to some non-existing anchors in documentation
sources.

This changes fixes the docs-build by rectifying anchors.

Assisted-by: IBM-Bob
Signed-off-by: Michael Adam <obnox@samba.org>
2026-07-09 19:31:22 +02:00
Michael Adam a70d68b882 docs: fix some broken links
This change fixes some of the broken links in the markdown
documentatoion sources found by the markdown link checker.

Assisted-by: IBM Bob
Signed-off-by: Michael Adam <obnox@samba.org>
2026-07-09 19:30:43 +02:00
Travis Nielsen 057147089b Merge pull request #17923 from malayparida2000/build_fix
build: fix go.mod.check sed for apis module replace
2026-07-09 11:10:55 -06:00
Michael Adam 031830d418 tests: add make lint.markdown-links
This adds a make target lint.markdown-links
for checking forbroken links in the markdown
documentation sources.

Thid is intended to be used in the CI as well as
locally by developers

The link checking is implemented using the markdown-link-check tool
but it is self-contained in that it does not require the
tool to be installed on the system.
The only prerequisite for using this target is to have
a working docker or podman available.

Assisted-by GitHub copilot
Assisted-by: Google Antigravity/Gemini
Assisted-by: IBM Bob
Signed-off-by: Michael Adam <obnox@samba.org>
2026-07-09 17:59:15 +02:00
Malay Kumar Parida fe38b157f5 build: fix go.mod.check sed for apis module replace
The go.mod.check target generates pkg/apis/go.mod from the root go.mod
and must remove the root-only replace directive that points
github.com/rook/rook/pkg/apis to ./pkg/apis. The sed pattern expected
the line to start with "replace", but the actual line is tab-indented
inside the replace block, so the directive was never removed.
Update the sed pattern to match optional leading whitespace and remove
the incorrect self-replace from pkg/apis/go.mod.

Signed-off-by: Malay Kumar Parida <mparida@redhat.com>
2026-07-09 21:28:22 +05:30
Parth Arora 6ee3198716 Merge pull request #17689 from subhamkrai/update-tnf-script-hostname
mon: update how hostname was set for drbd
2026-07-09 21:07:54 +05:30
Joshua Hoblitt 6c2a3a5f2b Merge pull request #17881 from jhoblitt/convert-bucket-quota-to-sharedstore
test: convert the object bucket quota suite to the shared store
2026-07-07 15:35:29 -07:00
Joshua Hoblitt cae9103df6 Merge pull request #17914 from jhoblitt/ci-on-release-1.32.11
ci: use kind's latest published v1.32 image (v1.32.11) on-release
2026-07-07 10:34:43 -07:00
Joshua Hoblitt 117e1126c2 ci: use kind's latest published v1.32 image (v1.32.11) on-release
The minikube-to-kind conversion moved the master/release integration
tests to kind, which selects the Kubernetes version via the
kindest/node:<version> image tag. There is no published
kindest/node:v1.32.13 image (Docker Hub returns 404); the latest 1.32
node image kind ever built is v1.32.11, since later kind releases
advanced to 1.33+ and never produced a newer 1.32 patch.

Pin the on-release matrix's 1.32 entry to v1.32.11 so the 1.32-line
coverage keeps a node image that actually exists. The other matrix
versions (v1.31.14, v1.34.8, v1.36.1) already have published images.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-07-07 10:00:17 -07:00
Joshua Hoblitt 0b4f29ad12 Merge pull request #17824 from jhoblitt/ci-kind-k8s-1.36.1
ci: convert CI to kind and bump latest kubernetes to v1.36.1
2026-07-07 09:41:29 -07:00
Travis Nielsen 5019b8e455 Merge pull request #17875 from subhamkrai/update-csi-operator-1.0.3
csi: update csi-operator version to v1.0.4
2026-07-07 10:10:45 -06:00
Joshua Hoblitt 0a7d64bc69 Merge pull request #17877 from jhoblitt/ci/fix-find-block-dev-broken-pipe
ci: fix broken-pipe race in find_extra_block_dev
2026-07-07 08:38:39 -07:00
Travis Nielsen 822dbe146d Merge pull request #17847 from anxkhn/loop/rook__001
core: trigger reconcile when node labels or annotations change
2026-07-07 08:01:33 -06:00
subhamkrai a3e02e607d csi: update csi-operator version to v1.0.4
Updating csi-operator to latest v1.0.4 and
updating the required doc changes as well.

Signed-off-by: subhamkrai <srai@redhat.com>
2026-07-07 07:56:55 -06:00
subhamkrai c49ef5f079 mon: update how hostname was set for drbd
currently, drbd hostname was ready using command
but now the change we use kubernetes built-in api
to read hostname from `spec.nodeName`.`

Signed-off-by: subhamkrai <srai@redhat.com>
2026-07-07 08:45:28 +05:30
Anas Khan 47b4167b70 core: reconcile when node OSD topology labels change
shouldReconcileChangedNode only diffed the node spec, so changes to node
labels, including rook's own topology.rook.io/* labels, were never detected.
Relabeling a node therefore did not trigger a CephCluster reconcile until some
other condition eventually did.

Trigger a reconcile from the node update predicate when one of the OSD topology
labels rook cares about changes. The whitelist reuses the canonical label set
from topology.GetDefaultTopologyLabels() (the hostname, the Kubernetes
region/zone labels, and the topology.rook.io/* labels), so a reconcile is
scoped to topology changes instead of firing on any label or annotation change.
The UpdateFunc returns true directly for these changes because onK8sNode()
returns false for a node that is already an OSD host, which would otherwise
swallow the relabel.

Resolves #17652

Signed-off-by: Anas Khan <anas@anaskhan.me>
2026-07-07 07:38:15 +05:30
Joshua Hoblitt a280c3ae2d ci: bump the latest tested kubernetes version to v1.36.1
Bump the most recent kubernetes version exercised by the integration and
canary matrices from v1.35.5 to v1.36.1. The kindest/node image for 1.36 is
provided by the kind v0.32.0 pinned by the kind-conversion commit. The older
matrix versions are unchanged.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-07-06 12:47:23 -07:00
Joshua Hoblitt cf54270bf5 Merge pull request #17822 from jhoblitt/ci-minikube-to-kind
ci: convert integration and canary CI from minikube to kind
2026-07-06 12:46:09 -07:00
Travis Nielsen 27a0e78c2b Merge pull request #17898 from weifanglab/master
core: replace Split in loops with more efficient SplitSeq
2026-07-06 13:29:20 -06:00
Joshua Hoblitt dad0e21122 test: retire the unused object bucket framework helpers
Converting the bucket quota tests to typed clients left the framework
helpers and package globals they were the last consumers of unused. Remove
UpdateObc, CheckOBMaxObject, GetAccessKey, and GetSecretKey from the bucket
client, GetEndPointUrl from the object client, and the orphaned object-test
globals.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-07-06 10:35:37 -07:00
Joshua Hoblitt 84c10661da test: convert the object bucket quota suite to the shared store
Add tests/integration/object/bucket/quota, covering both quota behaviors
from the legacy testObjectStoreOperations on OBCs of its own: user quota
via the OBC maxObjects additionalConfig (enforced, then raised and
re-enforced, synced on the ObjectBucket reflecting the new limit) and
bucket quota via bucketMaxObjects switched to bucketMaxSize. It runs
against the shared store in both the TLS and non-TLS passes.

Drop the converted S3-access and bucket-quota blocks from the legacy test;
the main OBC now exists only as a dependents fixture for the store
deletion checks.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-07-06 10:35:37 -07:00
Joshua Hoblitt 8dfc5d408d test: add an OBC update helper to util/obc
Add obc.Update, a get/mutate/update helper for live ObjectBucketClaims,
generalized from the notification suite's label updater, which becomes a
thin wrapper over it. The bucket quota conversion needs the same shape for
additionalConfig updates.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-07-06 10:35:37 -07:00
Joshua Hoblitt eba12411a9 Merge pull request #17879 from jhoblitt/convert-bucket-rw-to-sharedstore
test: convert the object bucket read/write suite to the shared store
2026-07-06 10:34:00 -07:00
weifanglab 4d2705ce28 core: replace Split in loops with more efficient SplitSeq
Signed-off-by: weifanglab <weifanglab@outlook.com>
2026-07-07 00:41:15 +08:00
Joshua Hoblitt d59abb1956 ci: convert integration and canary CI from minikube to kind
The integration and canary suites ran on a single-node minikube
`driver: none` cluster, where the kubelet ran directly on the GitHub
runner, so the host docker daemon doubled as the cluster runtime and
host block devices and host paths were directly visible to pods. Replace
that with a kind cluster.

Every suite creates its cluster through the shared
integration-test-setup-cluster-resources composite action, so the
conversion is centralized there and converts the smoke, object, helm,
keystone, multi-cluster, upgrade, on-release, nightly, encryption-KMS and
all canary jobs at once.

- Replace the setup-minikube step with helm/kind-action, selecting the
  kubernetes version via the kindest/node image tag and creating a
  single-node cluster from a new kind config (kind pinned to v0.32.0 for
  reproducibility).
- Drop the cri-dockerd install; kind nodes use their built-in containerd.
- Add a kind config that bind-mounts the host /dev, /var/lib/rook and
  /run/udev into the node so the existing host-based disk-prep helpers
  (use_local_disk*, create_partitions_for_osds, blockDevicePV.sh,
  localPathPV.sh, ...) keep working unchanged: devices and partitions
  created on the host appear in the node and in the OSD pods that
  hostPath-mount the node /dev, and ceph-volume can read the host udev
  database it needs to inventory disks.
- Prepare the kind node for the host-level operations rook runs against the
  underlying host: remount /sys read-write so CSI's kernel RBD mapping
  (`rbd map --device-type krbd`, which writes /sys/bus/rbd) works, and install
  lvm2 and cryptsetup, which rook runs in the node's mount namespace to
  provision LVM- and encryption-backed OSDs. kindest/node images provide none
  of this; the minikube driver:none runner host did.
- Route the Service and pod CIDRs from the runner to the kind node so
  host-side tests (the `go test` process runs on the runner) can reach
  in-cluster ClusterIPs, e.g. an S3 request to the RGW service. With minikube
  driver:none the runner already shared the cluster network.
- Load locally built images into the cluster. Under minikube `driver: none`
  the built image was already in the cluster runtime; under kind it must be
  imported, so build_rook and create_helm_tag now import their images into
  each node's containerd through a new load_image_into_cluster helper (via the
  node's ctr, which avoids the kind/kindest-node containerd-config version
  skew that breaks `kind load docker-image`).
- Point Vault's kubernetes-auth at the in-cluster API endpoint
  (kubernetes.default.svc) instead of the kubeconfig server URL: kind exposes
  that as https://127.0.0.1:<port>, unreachable from the in-cluster Vault pod,
  so OSD encryption-key retrieval via k8s-auth failed.
- Replace the remaining direct minikube references in the canary workflow: a
  `minikube kubectl` call and the external-cluster topology values.
- Adapt host-name assumptions that only held under driver:none: resolve the
  disk-cleanup job by the k8s node name rather than the runner hostname, and
  let kind-action ignore post-job cluster-teardown failures (the runner is
  ephemeral; nvme/multus devices can wedge `docker rm` of the node).
- Update stale comments that described the CI environment as minikube.
- Move the multus integration test's kind config under tests/config too, so
  both kind cluster configs live in one place.

create-dev-cluster.sh and other local-dev tooling are intentionally left on
minikube.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-07-06 08:42:39 -07:00
subham rai 3bc3fd63ea Merge pull request #17888 from rook/dependabot/github_actions/docker/setup-qemu-action-4.2.0
build(deps): bump docker/setup-qemu-action from 4.1.0 to 4.2.0
2026-07-06 18:46:22 +05:30
subham rai 43f023db62 Merge pull request #17889 from rook/dependabot/github_actions/docker/login-action-4.4.0
build(deps): bump docker/login-action from 4.2.0 to 4.4.0
2026-07-06 18:46:02 +05:30
subham rai da89b28ffa Merge pull request #17890 from rook/dependabot/github_actions/github/codeql-action/upload-sarif-4.36.3
build(deps): bump github/codeql-action/upload-sarif from 4.36.2 to 4.36.3
2026-07-06 18:45:46 +05:30
subham rai 1ee4102e8b Merge pull request #17891 from rook/dependabot/github_actions/dcarbone/install-jq-action-4.0.1
build(deps): bump dcarbone/install-jq-action from 3.2.0 to 4.0.1
2026-07-06 18:45:35 +05:30
subham rai dc0a09c52a Merge pull request #17892 from rook/dependabot/github_actions/DavidAnson/markdownlint-cli2-action-24.0.0
build(deps): bump DavidAnson/markdownlint-cli2-action from 23.2.0 to 24.0.0
2026-07-06 18:45:06 +05:30
dependabot[bot] 5731c4de3d build(deps): bump DavidAnson/markdownlint-cli2-action
Bumps [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action) from 23.2.0 to 24.0.0.
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](https://github.com/davidanson/markdownlint-cli2-action/compare/ded1f9488f68a970bc66ea5619e13e9b52e601cd...8de2aa07cae85fd17c0b35642db70cf5495f1d25)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-version: 24.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-06 12:43:10 +00:00
dependabot[bot] 85dbcb9e36 build(deps): bump dcarbone/install-jq-action from 3.2.0 to 4.0.1
Bumps [dcarbone/install-jq-action](https://github.com/dcarbone/install-jq-action) from 3.2.0 to 4.0.1.
- [Release notes](https://github.com/dcarbone/install-jq-action/releases)
- [Commits](https://github.com/dcarbone/install-jq-action/compare/b7ef57d46ece78760b4019dbc4080a1ba2a40b45...4fcb5062d7ce9bc4382d1a352d19ba3ba2c317c1)

---
updated-dependencies:
- dependency-name: dcarbone/install-jq-action
  dependency-version: 4.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-06 12:43:07 +00:00
dependabot[bot] d624542d8f build(deps): bump github/codeql-action/upload-sarif
Bumps [github/codeql-action/upload-sarif](https://github.com/github/codeql-action) from 4.36.2 to 4.36.3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/8aad20d150bbac5944a9f9d289da16a4b0d87c1e...54f647b7e1bb85c95cddabcd46b0c578ec92bc1a)

---
updated-dependencies:
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.36.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-06 12:43:01 +00:00
dependabot[bot] da8a4b8642 build(deps): bump docker/login-action from 4.2.0 to 4.4.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 4.2.0 to 4.4.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/650006c6eb7dba73a995cc03b0b2d7f5ca915bee...af1e73f918a031802d376d3c8bbc3fe56130a9b0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-06 12:42:49 +00:00
dependabot[bot] 31afff1488 build(deps): bump docker/setup-qemu-action from 4.1.0 to 4.2.0
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/06116385d9baf250c9f4dcb4858b16962ea869c3...96fe6ef7f33517b61c61be40b68a1882f3264fb8)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-version: 4.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-06 12:42:46 +00:00
Joshua Hoblitt 064e37ae8d test: reconcile the object README with the merged util packages
The README still described the util layout from before the package
consolidation, with ready, admin, sns, s3, and tls as standalone packages
and a code sample calling ready.ObjectStoreUser. The readiness predicates
live in wait4 and the client builders in client; update the package list,
the code sample, and the playbook references to match.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-07-02 08:41:59 -07:00
Joshua Hoblitt b4d6335368 test: convert the object bucket read/write suite to the shared store
Add tests/integration/object/bucket/rw, the first slice carved from the
legacy testObjectStoreOperations. It provisions an OBC on the shared store,
writes, reads back, and deletes an object over S3, and checks the OBC stays
Bound. It runs against the shared store in both the TLS and non-TLS passes.

Drop the converted put/get and OBC-revert subtests from the legacy test;
the user quota subtest now seeds both of the objects it needs. The
remaining quota, policy, lifecycle, and dependents slices convert in later
PRs.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-07-02 08:41:59 -07:00
Joshua Hoblitt 2f82880de7 test: consolidate the OBC test helpers into util/obc
Introduce util/obc as the home for ObjectBucketClaim test helpers: the
provisioner StorageClass constructor (moved out of util/fixture, where it
was a misplaced pure constructor), the create/bound and delete/absent
lifecycle waiters, and a per-OBC S3 client. The lifecycle waiters and S3
client are promoted from the notification suite, which built them inline as
their only consumer.

Retarget the StorageClass callers (topic/kafka, bucket/owner) and rework
the notification suite onto the shared helpers.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-07-01 16:26:46 -07:00
Joshua Hoblitt b7725553d0 test: add a generic S3 agent builder to the object test client
Add client.NewS3Agent, which builds an rgw S3 agent for an object store
from a set of credentials and the store's endpoint. The object tests build
S3 clients from several credential sources (the store's dashboard admin
user, an OBC's provisioned secret); this factors out the endpoint and agent
construction they share.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-07-01 14:42:39 -07:00
Joshua Hoblitt e2779459cf Merge pull request #17871 from jhoblitt/docs-supported-versions-matrix
docs: add Kubernetes and Ceph version support matrix
2026-07-01 14:23:50 -07:00
Joshua Hoblitt c4ac54cea0 Merge pull request #17853 from jhoblitt/convert-bucket-notification-test
test: convert the bucket notification suite to the shared store
2026-07-01 09:22:44 -07:00
Joshua Hoblitt 7079c9bf62 ci: fix broken-pipe race in find_extra_block_dev
find_extra_block_dev piped find_extra_block_devs into head -1. Since
find_extra_block_devs prints every eligible disk and ends with echo
"$devs", head closes the pipe after the first line and the producer's
echo races into SIGPIPE (echo: write error: Broken pipe), failing the
command substitution under pipefail/errexit.

The race only fires reliably now that the runners present two data disks
(sdb and sdc), so find_extra_block_devs emits multiple lines; with a
single disk the one-line output almost never triggered it.

Read the producer to completion with mapfile via process substitution
and return the first element, mirroring find_second_block_dev, so there
is no downstream head to close the pipe early.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-07-01 09:17:20 -07:00
Joshua Hoblitt 1e3eeef026 Merge pull request #17838 from jhoblitt/fix-comment-typos
docs: fix typos and grammar in code comments
2026-07-01 09:09:18 -07:00
Joshua Hoblitt c0eb360041 docs: fix typos and grammar in code comments
Fix duplicate words, incorrect articles (a/an), it's/its, and other small
grammar mistakes in Go comments and user-facing messages across pkg/, cmd/,
and tests/.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-07-01 08:34:11 -07:00
Joshua Hoblitt 031e449070 test: retire the unused bucket notification framework helpers
Converting the bucket notification test to typed clients left the
framework notification plumbing it was the last consumer of unused.
Remove the NotificationOperation client, TopicClient.CreateHTTPServer,
BucketClient.CreateObcNotification and CheckBucketNotificationSetonRGW
(and the now-dead UpdateObcNotification helpers), and the
GetBucketNotification and GetOBCNotification manifest builders.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-07-01 08:30:22 -07:00
Joshua Hoblitt 780f0cceb0 test: convert the bucket notification suite to the shared store
Rework the bucket notification integration test onto the shared
CephObjectStore fixture and the wait4 toolkit, following the object
suite conversion playbook. The old test stood up its own object store
and drove everything through tests/framework/clients and kubectl with
fixed-interval polling.

The new tests/integration/object/notification package is an ordered
t.Run script on typed clients and watch-based waits. It deploys an HTTP
sink, drives a CephBucketTopic (HTTP endpoint), CephBucketNotification,
and a notification-labelled OBC, and verifies both end-to-end delivery
(matched in the sink's logs) and the notification configured on the rgw
bucket (read over the S3 API), covering the label add/remove and
notification-before-topic orderings.

Running against the shared store, it no longer creates a dedicated
object store and now exercises both the TLS and non-TLS suite passes.

Signed-off-by: Joshua Hoblitt <josh@hoblitt.com>
2026-07-01 08:30:22 -07:00