Skip to content

Commit c325b9a

Browse files
micheleRPFeediver1
andauthored
DOC-1538 BYOC customer tags after cluster creation (#400)
* DOC-1538 BYOC customer tags after cluster creation * edits + add to What's New * incorporate coderabbit suggestions * incorporate Paul's feedback * fix what's new links * incorporate review feedback + minor edits * Update modules/get-started/pages/cluster-types/byoc/aws/vpc-byo-aws.adoc Co-authored-by: Joyce Fee <[email protected]> * Update modules/get-started/pages/cluster-types/byoc/gcp/create-byoc-cluster-gcp.adoc Co-authored-by: Joyce Fee <[email protected]> * incorporate doc review feedback --------- Co-authored-by: Joyce Fee <[email protected]>
1 parent 98853a0 commit c325b9a

File tree

10 files changed

+246
-16
lines changed

10 files changed

+246
-16
lines changed

modules/get-started/pages/cluster-types/byoc/aws/create-byoc-cluster-aws.adoc

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Before you deploy a BYOC cluster on AWS, check that the user creating the cluste
1919
** `AWS_PROFILE` or
2020
** `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`
2121

22-
To verify access, you should be able to successfully run `aws sts get-caller-identity` for your region. See the https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/get-caller-identity.html[AWS CLI reference^].
22+
To verify access, you should be able to successfully run `aws sts get-caller-identity` for your region. For more information, see the https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sts/get-caller-identity.html[AWS CLI reference^].
2323
--
2424

2525
== Create a BYOC cluster
@@ -33,8 +33,8 @@ To verify access, you should be able to successfully run `aws sts get-caller-ide
3333
* If you plan to create a private network in your own VPC, select the region where your VPC is located.
3434
* Three availability zones provide two backups in case one availability zone goes down.
3535
====
36-
+
37-
Optionally, click *Advanced settings* to specify up to five key-value custom tags. After the cluster is created, the tags are applied to all AWS resources associated with this cluster. For more information, see the https://docs.aws.amazon.com/mediaconnect/latest/ug/tagging-restrictions.html[AWS documentation^].
36+
+
37+
Optionally, click *Advanced settings* to specify up to five key-value custom tags. After the cluster is created, the tags are applied to all AWS resources associated with this cluster. For more information, see the https://docs.aws.amazon.com/mediaconnect/latest/ug/tagging-restrictions.html[AWS documentation^]. After the cluster is created, you can <<manage-custom-tags,specify more tags with the Cloud API>>.
3838

3939
. Click *Next*.
4040
. On the Network page, enter the connection type: either *Public* or *Private*. For BYOC clusters, *Private* is best-practice.
@@ -50,6 +50,10 @@ As part of agent deployment:
5050

5151
include::get-started:partial$no-access.adoc[]
5252

53+
== Manage custom tags
54+
55+
include::get-started:partial$custom-tags-aws.adoc[]
56+
5357
== Next steps
5458

5559
xref:networking:byoc/aws/index.adoc[Configure private networking]

modules/get-started/pages/cluster-types/byoc/aws/vpc-byo-aws.adoc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ The https://github.com/redpanda-data/cloud-examples/blob/main/customer-managed/a
5555

5656
== Configure Terraform
5757

58-
NOTE: For simplicity, these instructions assume that Terraform is configured to use local state. You may want to configure https://developer.hashicorp.com/terraform/language/state/remote[remote state^].
58+
NOTE: For simplicity, the instructions are based on the assumption that Terraform is configured to use local state. You may want to configure https://developer.hashicorp.com/terraform/language/state/remote[remote state^].
5959

6060
Define a JSON file called `byovnet.auto.tfvars.json` inside the Terraform directory that contains information about the VPC.
6161

@@ -452,4 +452,8 @@ After that completes, run:
452452
rpk cloud byoc aws destroy --redpanda-id ${REDPANDA_ID}
453453
```
454454

455-
include::get-started:partial$no-access.adoc[]
455+
== Manage custom tags
456+
457+
include::get-started:partial$custom-tags-aws.adoc[]
458+
459+
NOTE: For BYOVPC clusters, custom tags are not applied to the customer-managed resources that are deployed by the customer.

modules/get-started/pages/cluster-types/byoc/azure/create-byoc-cluster-azure.adoc

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,6 @@ Confirm that the Azure subscription has enough virtual CPUs (vCPUs) per instance
8787

8888
See the https://learn.microsoft.com/en-us/azure/quotas/view-quotas[Microsoft documentation^].
8989

90-
include::shared:partial$kafka-connect.adoc[]
91-
92-
9390
=== Check Azure SKU restrictions
9491

9592
Ensure your subscription has access to the required VM sizes in the region where you will use Redpanda. For example, using the Azure CLI or in the Azure Cloud Shell, run:
@@ -144,7 +141,7 @@ To create a Redpanda cluster in your Azure VNet, follow the <<prerequisites,prer
144141
* Multi-AZ is the default configuration. Three AZs provide two backups in case one availability zone goes down.
145142
====
146143
+
147-
Optionally, click *Advanced settings* to specify up to five key-value custom tags. After the cluster is created, the tags are applied to all Azure resources associated with this cluster. For details, see the https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/tag-resources[Microsoft documentation^].
144+
Optionally, click *Advanced settings* to specify up to five key-value custom tags. After the cluster is created, the tags are applied to all Azure resources associated with this cluster. For details, see the https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/tag-resources[Microsoft documentation^]. After the cluster is created, you can <<manage-custom-tags,specify more tags with the Cloud API>>.
148145

149146
. Click *Next*.
150147
. On the Network page, enter the connection type: either *Public* or *Private*. For BYOC clusters, *Private* using Azure Private Link is best-practice.
@@ -155,8 +152,6 @@ Optionally, click *Advanced settings* to specify up to five key-value custom tag
155152
+
156153
As part of agent deployment, Redpanda assigns the permissions required to run the agent. For details about these permissions, see xref:security:authorization/cloud-iam-policies-azure.adoc[Azure IAM policies].
157154

158-
== Next steps
155+
== Manage custom tags
159156

160-
* xref:networking:azure-private-link.adoc[Configure Azure Private Link]
161-
* xref:security:authorization/cloud-iam-policies-azure.adoc[Review Azure IAM policies]
162-
* xref:reference:rpk/index.adoc[Learn about `rpk` commands]
157+
include::get-started:partial$custom-tags-azure.adoc[]

modules/get-started/pages/cluster-types/byoc/azure/vnet-azure.adoc

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,3 +514,15 @@ rpk cloud byoc azure destroy --redpanda-id ${REDPANDA_ID}
514514
```
515515

516516
include::get-started:partial$no-access.adoc[]
517+
518+
== Manage custom tags
519+
520+
include::get-started:partial$custom-tags-azure.adoc[]
521+
522+
NOTE: For BYOVNet clusters, custom tags are not applied to the customer-managed resources that are deployed by the customer.
523+
524+
== Next steps
525+
526+
* xref:networking:azure-private-link.adoc[Configure Azure Private Link]
527+
* xref:security:authorization/cloud-iam-policies-azure.adoc[Review Azure IAM policies]
528+
* xref:reference:rpk/index.adoc[Learn about `rpk` commands]

modules/get-started/pages/cluster-types/byoc/gcp/create-byoc-cluster-gcp.adoc

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@ Enter a cluster name, then select the resource group, provider (GCP), xref:refer
2020
* If you plan to create a private network in your own VPC, select the region where your VPC is located.
2121
* Three availability zones provide two backups in case one availability zone goes down.
2222
====
23-
+
24-
Optionally, click *Advanced settings* to specify up to five key-value custom labels. After the cluster is created, the labels are applied to all GCP resources associated with this cluster. For more information, see the https://cloud.google.com/compute/docs/labeling-resources[GCP documentation^].
25-
23+
+
24+
Optionally, click *Advanced settings* to specify up to five key-value custom GCP labels. If a label key starts with `gcp.network-tag.<tag>`, then the agent interprets it as a request to apply the `<tag>` https://cloud.google.com/vpc/docs/add-remove-network-tags[network tag^] to GCE instances in the cluster. Use labels for organization/metadata; use network tags to target firewall rules and routes. After the cluster is created, labels are applied to applicable GCP resources (for example, instances and disks), and network tags are applied to instances. For more information, see the https://cloud.google.com/compute/docs/labeling-resources[GCP documentation^]. After the cluster is created, you can <<manage-custom-resource-labels-and-network-tags,specify more labels with the Cloud API>>.
2625
. Click *Next*.
2726
. On the Network page, enter the connection type: either *Public* or *Private*. For BYOC clusters, *Private* is best-practice.
2827
** Your network name is used to identify this network.
@@ -34,6 +33,10 @@ Note that `rpk` configures the permissions required by the agent to provision an
3433

3534
include::get-started:partial$no-access.adoc[]
3635

36+
== Manage custom resource labels and network tags
37+
38+
include::get-started:partial$custom-tags-gcp.adoc[]
39+
3740
== Next steps
3841

3942
xref:networking:byoc/gcp/index.adoc[Configure private networking]

modules/get-started/pages/cluster-types/byoc/gcp/vpc-byo-gcp.adoc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -738,6 +738,12 @@ You can delete the cluster in the Cloud UI.
738738
. Select your cluster.
739739
. Go to the **Cluster settings** page and click **Delete**, then confirm your deletion.
740740

741+
== Manage custom resource labels and network tags
742+
743+
include::get-started:partial$custom-tags-gcp.adoc[]
744+
745+
NOTE: For BYOVPC clusters, custom labels are not applied to the customer-managed resources that are deployed by the customer.
746+
741747
== Next steps
742748

743749
xref:networking:byoc/gcp/index.adoc[Configure private networking]

modules/get-started/pages/whats-new-cloud.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ This page lists new features added to Redpanda Cloud.
88

99
== August 2025
1010

11+
=== Manage custom resource tags in BYOC
12+
13+
After cluster creation, you can manage custom cloud provider tags and labels on BYOC and BYOVPC/BYOVNet clusters for xref:get-started:cluster-types/byoc/aws/create-byoc-cluster-aws.adoc#manage-custom-tags[AWS], xref:get-started:cluster-types/byoc/azure/create-byoc-cluster-azure.adoc#manage-custom-tags[Azure], and xref:get-started:cluster-types/byoc/gcp/create-byoc-cluster-gcp.adoc#manage-custom-resource-labels-and-network-tags[GCP] using the Cloud Control Plane API. This involves refreshing Redpanda agent permissions with `rpk cloud byoc` due to new IAM permissions.
14+
1115
=== Iceberg topics with AWS Glue
1216

1317
A new xref:manage:iceberg/iceberg-topics-aws-glue.adoc[integration with AWS Glue Data Catalog] allows you to add Redpanda topics as Iceberg tables in your data lakehouse. The AWS Glue catalog integration is available in BYOC clusters with Redpanda version 25.2 and later.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
Your organization might require custom tags for cost allocation, audit compliance, or governance policies. After cluster creation, you can manage tags with the xref:manage:api/cloud-byoc-controlplane-api.adoc[Cloud Control Plane API]. The Control Plane API allows up to 16 custom tags in AWS.
2+
3+
Make sure you have:
4+
5+
* The cluster ID. You can find this in the Redpanda Cloud UI, in the **Details** section of the cluster overview.
6+
* A valid bearer token for the Cloud Control Plane API. For details, see link:/api/doc/cloud-controlplane/authentication[Authenticate to the API].
7+
8+
include::shared:partial$feature-flag.adoc[]
9+
10+
. To refresh agent permissions so the Redpanda agent can update tags, run:
11+
+
12+
[,bash]
13+
----
14+
export CLUSTER_ID="<cluster-id>"
15+
16+
rpk cloud byoc aws apply --redpanda-id="$CLUSTER_ID"
17+
----
18+
+
19+
This step is required because tag management requires additional IAM permissions that may not have been granted during initial cluster creation:
20+
+
21+
* `ec2:DescribeTags`
22+
* `ec2:DescribeVolumes`
23+
* `ec2:DescribeNetworkInterfaces`
24+
* `ec2:CreateTags`
25+
* `ec2:DeleteTags`
26+
* `iam:TagPolicy`
27+
* `iam:UntagPolicy`
28+
* `iam:TagInstanceProfile`
29+
* `iam:UntagInstanceProfile`
30+
31+
. To update tags, invoke the Cloud API.
32+
+
33+
First, set your authentication token:
34+
+
35+
[,bash]
36+
----
37+
export AUTH_TOKEN="<your-bearer-token>"
38+
----
39+
+
40+
The `PATCH` call sets the tags specified under `"cloud_provider_tags"`. It replaces the existing tags with the specified tags. Include all desired tags in the request. To remove a single entry, omit it from the map you send.
41+
+
42+
[,bash]
43+
----
44+
cluster_patch_body=$(cat <<'JSON'
45+
{
46+
"cloud_provider_tags": {
47+
"Environment": "production",
48+
"CostCenter": "engineering"
49+
}
50+
}
51+
JSON
52+
)
53+
54+
curl -X PATCH "https://api.redpanda.com/v1/clusters/$CLUSTER_ID" \
55+
-H "Content-Type: application/json" \
56+
-H "Authorization: Bearer $AUTH_TOKEN" \
57+
-d "$cluster_patch_body"
58+
----
59+
+
60+
To remove all tags, send an empty `cloud_provider_tags` object:
61+
+
62+
[,bash]
63+
----
64+
cluster_patch_body='{"cloud_provider_tags": {}}'
65+
66+
curl -X PATCH "https://api.redpanda.com/v1/clusters/$CLUSTER_ID" \
67+
-H "Content-Type: application/json" \
68+
-H "Authorization: Bearer $AUTH_TOKEN" \
69+
-d "$cluster_patch_body"
70+
----
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
Your organization might require custom tags for cost allocation, audit compliance, or governance policies. After cluster creation, you can manage tags with the xref:manage:api/cloud-byoc-controlplane-api.adoc[Cloud Control Plane API]. The Control Plane API allows up to 16 custom tags in Azure.
2+
3+
Make sure you have:
4+
5+
* The cluster ID. You can find this in the Redpanda Cloud UI, in the **Details** section of the cluster overview.
6+
* A valid bearer token for the Cloud Control Plane API. For details, see link:/api/doc/cloud-controlplane/authentication[Authenticate to the API].
7+
8+
include::shared:partial$feature-flag.adoc[]
9+
10+
. To refresh Redpanda agent permissions in the target subscription, run:
11+
+
12+
[,bash]
13+
----
14+
export CLUSTER_ID="<cluster-id>"
15+
export SUBSCRIPTION_ID="<subscription-id>"
16+
17+
rpk cloud byoc azure apply --redpanda-id="$CLUSTER_ID" --subscription-id="$SUBSCRIPTION_ID"
18+
----
19+
20+
. To update tags, invoke the Cloud API.
21+
+
22+
First, set your authentication token:
23+
+
24+
[,bash]
25+
----
26+
export AUTH_TOKEN="<your-bearer-token>"
27+
----
28+
+
29+
The `PATCH` call sets the tags specified under `"cloud_provider_tags"`. It replaces the existing tags with the specified tags. Include all desired tags in the request. To remove a single entry, omit it from the map you send.
30+
+
31+
[,bash]
32+
----
33+
cluster_patch_body=$(cat <<'JSON'
34+
{
35+
"cloud_provider_tags": {
36+
"Environment": "production",
37+
"CostCenter": "engineering"
38+
}
39+
}
40+
JSON
41+
)
42+
43+
curl -X PATCH "https://api.redpanda.com/v1/clusters/$CLUSTER_ID" \
44+
-H "Content-Type: application/json" \
45+
-H "Authorization: Bearer $AUTH_TOKEN" \
46+
-d "$cluster_patch_body"
47+
----
48+
+
49+
To remove all tags, send an empty `cloud_provider_tags` object:
50+
+
51+
[,bash]
52+
----
53+
cluster_patch_body='{"cloud_provider_tags": {}}'
54+
55+
curl -X PATCH "https://api.redpanda.com/v1/clusters/$CLUSTER_ID" \
56+
-H "Content-Type: application/json" \
57+
-H "Authorization: Bearer $AUTH_TOKEN" \
58+
-d "$cluster_patch_body"
59+
----
60+
61+
=== Limitations
62+
63+
* Nodepool Application Security Groups (ASG): Custom tags are set only when the cluster is created. Tags cannot be updated on these resources after cluster creation.
64+
* Private Link network interfaces (Kubernetes API server, Tiered Storage, and Private Link service): Custom tags are set only during cluster creation and cannot be changed later.
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
Your organization might require custom resource labels and network tags for cost allocation, audit compliance, or governance policies. After cluster creation, you can manage this with the xref:manage:api/cloud-byoc-controlplane-api.adoc[Cloud Control Plane API]. The Control Plane API allows up to 16 custom resource labels and network tags in GCP.
2+
3+
Make sure you have:
4+
5+
* The cluster ID. You can find this in the Redpanda Cloud UI, in the **Details** section of the cluster overview.
6+
* A valid bearer token for the Cloud Control Plane API. For details, see link:/api/doc/cloud-controlplane/authentication[Authenticate to the API].
7+
8+
include::shared:partial$feature-flag.adoc[]
9+
10+
. To refresh agent permissions so the Redpanda agent can update labels and network tags, run:
11+
+
12+
[,bash]
13+
----
14+
export CLUSTER_ID="<cluster-id>"
15+
export PROJECT_ID="<gcp-project-id>"
16+
17+
rpk cloud byoc gcp apply --redpanda-id="$CLUSTER_ID" --project-id="$PROJECT_ID"
18+
----
19+
+
20+
This step is required because label/tag management requires additional IAM permissions that may not have been granted during initial cluster creation:
21+
+
22+
* `compute.disks.get`
23+
* `compute.disks.list`
24+
* `compute.disks.setLabels`
25+
* `compute.instances.setLabels`
26+
27+
. To update labels and network tags, invoke the Cloud API.
28+
+
29+
First, set your authentication token:
30+
+
31+
[,bash]
32+
----
33+
export AUTH_TOKEN="<your-bearer-token>"
34+
----
35+
+
36+
The `PATCH` call sets the labels and network tags specified under `"cloud_provider_tags"`. It replaces the existing labels and tags with the specified labels and tags. Include all desired labels and tags in the request. To remove a single entry, omit it from the map you send.
37+
+
38+
[,bash]
39+
----
40+
cluster_patch_body=$(cat <<'JSON'
41+
{
42+
"cloud_provider_tags": {
43+
"environment": "production",
44+
"cost-center": "engineering",
45+
"gcp.network-tag.web-servers": "true",
46+
"gcp.network-tag.database-access": "true"
47+
}
48+
}
49+
JSON
50+
)
51+
52+
curl -X PATCH "https://api.redpanda.com/v1/clusters/$CLUSTER_ID" \
53+
-H "Content-Type: application/json" \
54+
-H "Authorization: Bearer $AUTH_TOKEN" \
55+
-d "$cluster_patch_body"
56+
----
57+
+
58+
To remove all labels and network tags, send an empty `cloud_provider_tags` object:
59+
+
60+
[,bash]
61+
----
62+
cluster_patch_body='{"cloud_provider_tags": {}}'
63+
64+
curl -X PATCH "https://api.redpanda.com/v1/clusters/$CLUSTER_ID" \
65+
-H "Content-Type: application/json" \
66+
-H "Authorization: Bearer $AUTH_TOKEN" \
67+
-d "$cluster_patch_body"
68+
----

0 commit comments

Comments
 (0)