Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
7455d51
Update config for new beta
Deflaimun Oct 2, 2024
b26cb0d
update with rpk 24.3.1-rc1 (#819)
Deflaimun Oct 21, 2024
4cb6671
DOC-502 License enforcement updates (#813)
JakeSCahill Oct 22, 2024
bc9749e
Properties 24 3 (#822)
Deflaimun Oct 22, 2024
3ddeef4
Add User resource docs (#773)
JakeSCahill Oct 23, 2024
29a0352
Leader pinning (#809)
kbatuigas Oct 28, 2024
5efc18c
DOC-287 Mountable TS topics (#725)
kbatuigas Oct 30, 2024
8a97c9d
Update with latest rpk commands from v0.0.0-20241104git4a0f859 (#835)
Deflaimun Nov 4, 2024
e57f5dc
what's new in 24.3 beta (#811)
micheleRP Nov 4, 2024
6ac5cc8
Force-update fallback 24.3-rc2
Deflaimun Nov 4, 2024
a437f34
Michele rp patch 1 (#837)
micheleRP Nov 6, 2024
fa14029
DOC-470 Debug bundle in Redpanda Console (#825)
JakeSCahill Nov 12, 2024
0b5d3d4
add Tombstone property (#847)
Deflaimun Nov 12, 2024
440bdd4
Tombstone retention (#829)
kbatuigas Nov 12, 2024
2e4c81c
Doc-476 - Backfill partitioning update (#842)
Feediver1 Nov 15, 2024
c121ad3
Doc 2599 - Configure Redpanda with a Customer-Managed Key (#808)
Feediver1 Nov 15, 2024
eedc7c2
DOC-759 fix link (#866)
micheleRP Nov 18, 2024
332aeed
Change status of intra broker balancing from beta to GA (#855)
kbatuigas Nov 19, 2024
fb335c4
DOC-758 Update What's New for 24.3 GA (#865)
micheleRP Nov 19, 2024
62205f5
DOC-425 How to use the new debug bundle cluster configs (#862)
JakeSCahill Nov 20, 2024
e0c499e
Test conditional content in partial
kbatuigas Nov 21, 2024
ec77ff9
Testing single sourcing
kbatuigas Nov 22, 2024
768c5c1
Add cloud API commands
kbatuigas Nov 22, 2024
199fb00
Single source tag shouldn't be necessary
kbatuigas Nov 22, 2024
5bf691e
Add overview paragraph directly in self-managed version of page
kbatuigas Nov 28, 2024
c2c2b8b
Merge branch 'main' into DOC-717-Document-Cloud-Feature-Public-Cloud-…
Deflaimun Dec 3, 2024
8ff5de8
Fix
Deflaimun Dec 3, 2024
8386709
Apply suggestions from code review
kbatuigas Dec 3, 2024
7fcf98d
Change local playbook cloud-docs source back to main branch
kbatuigas Dec 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion local-antora-playbook.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ content:
- url: https://github.com/redpanda-data/docs
branches: [v/*, api, shared, site-search,'!v-end-of-life/*']
- url: https://github.com/redpanda-data/cloud-docs
branches: main
branches: 'main'
- url: https://github.com/redpanda-data/redpanda-labs
branches: main
start_paths: [docs,'*/docs']
Expand Down
2 changes: 2 additions & 0 deletions modules/manage/pages/mountable-topics.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,6 @@
:page-categories: Management
:env-linux: true

For topics with Tiered Storage enabled, you can unmount a topic to safely detach it from a cluster and keep the topic data in the cluster's object storage bucket or container. You can mount the detached topic to either the same origin cluster, or a different one. This allows you to hibernate a topic and free up system resources taken up by the topic, or migrate a topic to a different cluster.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@towfiqa This is the overview for the self-managed version of the doc. The cloud version will have this, could you review and let me know if any changes are needed?:

(preview available here)

For topics with Tiered Storage enabled, you can unmount a topic to safely detach it from a cluster and keep the topic data in the cluster’s object storage bucket or container. You can remount the detached topic to the origin cluster, allowing you to hibernate a topic and free up system resources taken up by the topic.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can mount the detached topic to either the same origin cluster, or a different one.

Afaik cross-cluster mounting/unmounting is not supported in Cloud and definetely not supported via the cloud api

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @weeco I do have a modified version of this intro for the Cloud page. Preview here: https://deploy-preview-874--redpanda-docs-preview.netlify.app/redpanda-cloud/manage/mountable-topics/


include::manage:partial$mountable-topics.adoc[]
148 changes: 138 additions & 10 deletions modules/manage/partials/mountable-topics.adoc
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
For topics with Tiered Storage enabled, you can unmount a topic to safely detach it from a cluster and keep the topic data in the cluster's object storage bucket or container. You can mount the detached topic to either the same origin cluster, or a different one. This allows you to hibernate a topic and free up system resources taken up by the topic, or migrate a topic to a different cluster.

== Prerequisites

[NOTE]
====
include::shared:partial$enterprise-license.adoc[]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mattschumpert we do not have licensing content for the cloud docs like we do for self-managed. Should I remove/hide the licensing prereq for the Cloud version of this page?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc @towfiqa if you could provide guidance for this as well.

====

ifndef::env-cloud[]
. xref:get-started:rpk-install.adoc[Install `rpk`], or ensure that you have access to the Admin API.
. Enable xref:manage:tiered-storage.adoc[Tiered Storage] for specific topics, or for the entire cluster (all topics).
endif::[]
ifdef::env-cloud[]
. xref:manage:rpk/rpk-install.adoc[Install `rpk`] to run cluster mount and unmount operations on the command line, or xref:manage:api/cloud-api-authentication.adoc[authenticate] to the Cloud API and execute these operations programmatically.
+
If using the Cloud API, you'll make requests against Data Plane APIs. Make sure you xref:manage:api/cloud-dataplane-api.adoc#get-data-plane-api-url[retrieve the Data Plane API URL] and use this URL to perform a mount or unmount operation.
. Enable xref:ROOT:manage:tiered-storage.adoc[Tiered Storage] for the topics you want to unmount or mount.
endif::[]


== Unmount a topic from a cluster to object storage

Expand All @@ -32,6 +39,7 @@ In your cluster, run this command to unmount a topic to object storage:
rpk cluster storage unmount <namespace>/<topic-name>
```
--
ifndef::env-cloud[]
Admin API::
+
--
Expand All @@ -55,9 +63,27 @@ curl -X POST http://localhost:9644/v1/topics/unmount -d {

You may optionally include the topic namespace (`ns`). Only `kafka` is supported.
--
endif::[]
ifdef::env-cloud[]
Cloud API::
+
--
To unmount topics from a cluster using the Cloud API, issue a POST request to the `/v1alpha2/cloud-storage/unmount` endpoint. Specify the names of the desired topics in the request body:

[,bash]
----
curl -X POST "<dataplane-api-url>/v1alpha2/cloud-storage/topics/unmount" \
-H "Authorization: Bearer <token>" \
-H "accept: application/json" \
-H "content-type: application/json" \
-d '{"topics":"<topic-name>"}'
----

--
endif::[]
======

You can use the ID returned by the command to <<monitor-progress,monitor the progress>> of the unmount operation using `rpk` or the Admin API.
You can use the ID returned by the command to <<monitor-progress,monitor the progress>> of the unmount operation using `rpk` or the API.

== Mount a topic to a cluster

Expand Down Expand Up @@ -99,6 +125,7 @@ rpk cluster storage mount <topic-reference> --to <new-topic-name>
+
You only use the new name for the topic in the target cluster. This name does not persist if you unmount this topic again. Redpanda keeps the original name in object storage if you remount the topic later.
--
ifndef::env-cloud[]
Admin API::
+
--
Expand All @@ -110,7 +137,7 @@ curl http://localhost:9644/v1/topics/mountable
+
The response object contains an array of topics:
+
[,bash,role=no-placeholders]
[,bash]
----
"topics": [
{
Expand All @@ -133,28 +160,74 @@ curl -X POST http://localhost:9644/v1/topics/mount -d {
"topics": [
{
"source_topic_reference": {"ns": "kafka", "topic": "<topic-1-name>/<cluster-1-uuid>/<initial-revision>"},
"alias": {"ns": "kafka", "topic": "<new-topic-1-name>"}
"alias": {"topic": "<new-topic-1-name>"}
},
{
"source_topic_reference": {"ns": "kafka", "topic": "<topic-2-name>"}
}
]
}
```
+
* `ns` is the topic namespace. This field is optional and only `kafka` is supported.
* You may have multiple topics with the same name that are available to mount from object storage. This can happen if you have unmounted topics using the same name in different clusters. To uniquely identify a source topic, use `<topic-name>/<cluster-uuid>/<initial-revision>` as the topic reference.
* To rename a topic in the target cluster, use the optional `alias` object in the request body. The following example shows how to specify a new name for topic 1 in the target cluster, while topic 2 retains its original name in the target cluster.

--
endif::[]
ifdef::env-cloud[]
Cloud API::
+
--
. List the topics that are available to mount from object storage by making a GET request to the `/v1alpha2/cloud-storage/topics/mountable` endpoint.
+
```
curl "<dataplane-api-url>/v1alpha2/cloud-storage/topics/mountable"
```
+
The response object contains an array of topics:
+
[,bash,role=no-placeholders]
----
"topics": [
{
"name": "topic-1-name",
"topic_location": "topic-1-name/<cluster-1-uuid>/<initial-revision>"
},
{
"name": "topic-2-name",
"topic_location": "topic-2-name/<cluster-1-uuid>/<initial-revision>"
}
]
----
+
The `topic_location` is the unique topic location in object storage, in the format `<topic-name>/<cluster-uuid>/<initial-revision>`. Redpanda assigns the number `initial-revision` to a topic upon creation. You can use `topic-location` as the topic reference instead of just the topic name to identify a unique topic to mount in the next step.

. To mount topics to a target cluster using the Cloud API, make a POST request to the `/cloud-storage/topics/mount` endpoint. Specify the names of the topics in the request body:
+
```
curl -X POST "<dataplane-api-url>/v1alpha2/cloud-storage/topics/mount" -d {
"topics": [
{
"alias": "<new-topic-1-name>",
"source_topic_reference": "<topic-1-name>/<cluster-1-uuid>/<initial-revision>"
},
{
"source_topic_reference": {"ns": "kafka", "topic": "<topic-3-name>/<cluster-2-uuid>/<initial-revision>"},
"alias": {"ns": "kafka", "topic": "<new-topic-3-name>"}
"source_topic_reference": "<topic-2-name>"
}
]
}
```
+
* `ns` is the topic namespace. This field is optional and only `kafka` is supported.
* You may have multiple topics with the same name that are available to mount from object storage. This can happen if you have unmounted topics with this name from different clusters. To uniquely identify a source topic, use `<topic-name>/<cluster-uuid>/<initial-revision>` as the topic reference.
* To rename a topic in the target cluster, use the optional `alias` object in the request body. In the example, you specify new names for topics 1 and 3 in the target cluster, but topic 2 retains its original name in the target cluster.
* To rename a topic in the target cluster, use the optional `alias` object in the request body. The following example shows how to specify a new name for topic 1 in the target cluster, while topic 2 retains its original name in the target cluster.

--
endif::[]

======

You can use the ID returned by the operation to <<monitor-progress,monitor its progress>> using `rpk` or the Admin API.
You can use the ID returned by the operation to <<monitor-progress,monitor its progress>> using `rpk` or the API.

When the mount operation is complete, the target cluster handles produce and consume workloads for the topics.

Expand All @@ -172,6 +245,7 @@ rpk cluster storage list-mount
```
--

ifndef::env-cloud[]
Admin API::
+
--
Expand All @@ -181,6 +255,23 @@ Issue a GET request to the `/migrations` endpoint to view the status of topic mo
curl http://localhost:9644/v1/migrations
```
--
endif::[]

ifdef::env-cloud[]
Cloud API::
+
--
Issue a GET request to the `/cloud-storage/mount-tasks` endpoint to view the status of topic mount and unmount operations:

[,bash]
----
curl "<dataplane-api-url>/v1alpha2/cloud-storage/mount-tasks" \
-H "Authorization: Bearer <token>" \
-H "accept: application/json"
----

--
endif::[]
======

You can also retrieve the status of a specific operation by running the command:
Expand All @@ -195,13 +286,28 @@ rpk::
rpk cluster storage status-mount <migration-id>
```
--
ifndef::env-cloud[]
Admin API::
+
--
```
curl http://localhost:9644/v1/migrations/<migration-id>
```
--
endif::[]

ifdef::env-cloud[]
Cloud API::
+
--
[,bash]
----
curl "<dataplane-api-url>/v1alpha2/cloud-storage/mount-tasks/<migration-id>" \
-H "Authorization: Bearer <token>"
----

--
endif::[]
======

`<migration-id>` is the unique identifier of the operation. Redpanda returns this ID when you start a mount or unmount. You can also retrieve the ID by listing <<monitor-progress,existing operations>>.
Expand Down Expand Up @@ -260,18 +366,40 @@ rpk cluster storage cancel-mount <migration-id>
```
--

ifndef::env-cloud[]
Admin API::
+
--
```
curl -X POST http://localhost:9644/v1/<migration-id>/?action=cancel
```
--
endif::[]
ifdef::env-cloud[]
Cloud API::
+
--
[,bash]
----
curl -X POST "<dataplane-api-url>/v1alpha2/cloud-storage/mount-tasks/<id>" \
-H "Authorization: Bearer <token>" \
-H "accept: application/json" \
-H "content-type: application/json" \
-d '{"action":"ACTION_CANCEL"}'
----

--
endif::[]
======

You cannot cancel mount and unmount operations in the following <<monitor-progress,states>>:

ifndef::env-cloud[]
- `planned` (but you may still xref:api:ROOT:admin-api.adoc#delete-/v1/migrations/-id-[delete] a planned mount or unmount)
endif::[]
ifdef::env-cloud[]
- `planned` (but you may still delete a planned mount or unmount)
endif::[]
- `cut_over`
- `finished`
- `canceling`
Expand Down
Loading