Skip to content

Commit f4ea907

Browse files
kbatuigasFeediver1
andauthored
BYOVPC support for secrets and Iceberg REST catalogs (#313)
* Add operator and modified cluster service commands for GCP BYOVPC * Add note for AWS clusters * Add new doc for enabling secrets management * Using secrets in cluster properties requires specific notation * Add new doc for enabling secrets GCP BYOVPC to nav tree * Since secrets and Iceberg cluster configs are self serve, move beta note to About doc instead * Use single sourced branch to preview BYOVPC updates * Minor edits' * Fix API xref * Rephrase per SME feedback * Add to What's New * Update local-antora-playbook.yml --------- Co-authored-by: Joyce Fee <[email protected]>
1 parent a4ff301 commit f4ea907

File tree

8 files changed

+222
-2
lines changed

8 files changed

+222
-2
lines changed

modules/ROOT/nav.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
**** xref:get-started:cluster-types/byoc/gcp/create-byoc-cluster-gcp.adoc[]
2020
**** xref:get-started:cluster-types/byoc/gcp/vpc-byo-gcp.adoc[]
2121
**** xref:get-started:cluster-types/byoc/gcp/enable-rpcn-byovpc-gcp.adoc[Enable Redpanda Connect on a BYOVPC Cluster on GCP]
22+
**** xref:get-started:cluster-types/byoc/gcp/enable-secrets-byovpc-gcp.adoc[Enable Secrets Management on a BYOVPC Cluster on GCP]
2223
*** xref:get-started:cluster-types/byoc/remote-read-replicas.adoc[]
2324
** xref:get-started:cluster-types/create-dedicated-cloud-cluster.adoc[]
2425

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ When you create a BYOCVPC cluster, you specify your VPC and service account. The
1818
1919
The https://github.com/redpanda-data/cloud-examples/tree/main/customer-managed/aws[Redpanda Cloud Examples repository^] contains https://developer.hashicorp.com/terraform[Terraform^] code that deploys the resources required for a BYOVPC cluster on AWS. You'll need to create these resources in advance and give them to Redpanda during cluster creation. Variables are provided in the code so you can exclude resources that already exist in your environment, such as the VPC.
2020

21+
[NOTE]
22+
====
23+
Secrets management is enabled by default with the Terraform code in the example repository. It allows you to store and read secrets in your cluster, for example to integrate a REST catalog with Iceberg-enabled topics.
24+
25+
For existing BYOVPC clusters, contact https://support.redpanda.com/hc/en-us/requests/new[Redpanda Support^] to enable secrets management.
26+
====
27+
2128
== Prerequisites
2229

2330
* Access to an AWS project in which you create your cluster.
@@ -58,7 +65,7 @@ You can update the example configuration to customize your setup:
5865

5966
- Enable PrivateLink (`"enable_private_link": true`).
6067
- Preserve cluster data when deleting the cluster (`"force_destroy_cloud_storage": false`).
61-
- Redpanda Connect is enabled by default. To disable Redpanda Connect, set `"enable_redpanda_connect": false` in the `byoc.auto.tfvars.json` file, and remove the additional security groups and node instance profiles that are required for Redpanda Connect.
68+
- Redpanda Connect is enabled by default. To disable Redpanda Connect, set `"enable_redpanda_connect": false` in the `byoc.auto.tfvars.json` file, and remove the additional security groups and node instance profiles that are required for Redpanda Connect.
6269
- Use https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html[condition tags^] to control resource modifications based on AWS tags. For example:
6370
+
6471
```json
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
= Enable Secrets Management on an Existing BYOVPC Cluster on GCP
2+
:description: Store and read secrets in your existing BYOVPC cluster.
3+
:page-beta: true
4+
5+
[IMPORTANT]
6+
====
7+
BYOVPC is an add-on feature that may require an additional purchase. To unlock this feature for your account, contact your Redpanda account team or https://www.redpanda.com/price-estimator[Redpanda Sales^].
8+
====
9+
10+
Storing secrets in your cluster allows you to keep your cloud infrastructure secure as you integrate your data across different systems, for example, REST catalogs with your Iceberg-enabled topics. If you do not have secrets management enabled on an existing BYOVPC cluster, you can do so by following the steps on this page to update your cluster configuration. You can also create xref:get-started:cluster-types/byoc/gcp/vpc-byo-gcp.adoc[a new BYOVPC cluster] with secrets management already enabled.
11+
12+
Replace all `<placeholders>` with your own values.
13+
14+
. Create one new service account with the necessary permissions and roles.
15+
+
16+
.Show commands
17+
[%collapsible]
18+
====
19+
```bash
20+
# Account used to check for and read secrets
21+
22+
gcloud iam service-accounts create redpanda-operator \
23+
--display-name="Redpanda Operator Service Account"
24+
25+
cat << EOT > redpanda-operator.role
26+
{
27+
"name": "redpanda_operator_role",
28+
"title": "Redpanda Operator Role",
29+
"description": "Redpanda Operator Role",
30+
"includedPermissions": [
31+
"resourcemanager.projects.get",
32+
"secretmanager.secrets.get",
33+
"secretmanager.versions.access"
34+
],
35+
}
36+
EOT
37+
38+
gcloud iam roles create redpanda_operator_role --project=<service-project-id> --file redpanda-operator.role
39+
40+
gcloud projects add-iam-policy-binding <service-project-id> \
41+
--member="serviceAccount:redpanda-operator@<service-project-id>.iam.gserviceaccount.com" \
42+
--role="projects/<service-project-id>/roles/redpanda_operator_role"
43+
```
44+
====
45+
46+
. Update the existing Redpanda cluster service account with the necessary permissions to read secrets.
47+
+
48+
.Show commands
49+
[%collapsible]
50+
====
51+
```bash
52+
cat << EOT > redpanda-cluster.role
53+
{
54+
"name": "redpanda_cluster_role",
55+
"title": "Redpanda Cluster Role",
56+
"description": "Redpanda Cluster Role",
57+
"includedPermissions": [
58+
"resourcemanager.projects.get",
59+
"secretmanager.secrets.get",
60+
"secretmanager.versions.access"
61+
],
62+
}
63+
EOT
64+
65+
gcloud iam roles create redpanda_cluster_role --project=<service-project-id> --file redpanda-cluster.role
66+
67+
gcloud projects add-iam-policy-binding <service-project-id> \
68+
--member="serviceAccount:redpanda-cluster@<service-project-id>.iam.gserviceaccount.com" \
69+
--role="projects/<service-project-id>/roles/redpanda_cluster_role"
70+
```
71+
====
72+
73+
. Bind the new service account.
74+
+
75+
The account ID of the GCP service account is used to configure service account bindings. This account ID is the local part of the email address for the GCP service account. For example, if the GCP service account is `[email protected]`, then the account ID is `my-gcp-sa`.
76+
+
77+
.Show commands
78+
[%collapsible]
79+
====
80+
```
81+
gcloud iam service-accounts add-iam-policy-binding <redpanda_operator-gcp-sa-account-id>@<service-project-id>.iam.gserviceaccount.com \
82+
--role roles/iam.workloadIdentityUser \
83+
--member "serviceAccount:<service-project-id>.svc.id.goog[redpanda-system/<redpanda_operator-gcp-sa-account-id>]"
84+
```
85+
====
86+
87+
. Make a xref:api:ROOT:cloud-controlplane-api.adoc#patch-/v1/clusters/-cluster.id-[`PATCH /v1/clusters/\{cluster-id}`] request to update the cluster configuration.
88+
+
89+
.Show request
90+
[%collapsible]
91+
====
92+
```bash
93+
export CLUSTER_PATCH_BODY=`cat << EOF
94+
{
95+
"customer_managed_resources": {
96+
"gcp": {
97+
"redpanda_operator_service_account": {
98+
"email": "<redpanda_operator-gcp-sa-account-id>@<service-project-id>.iam.gserviceaccount.com"
99+
}
100+
}
101+
}
102+
}
103+
EOF`
104+
curl -v -X PATCH \
105+
-H "Content-Type: application/json" \
106+
-H "Authorization: Bearer $AUTH_TOKEN" \
107+
-d "$CLUSTER_PATCH_BODY" $PUBLIC_API_ENDPOINT/v1/clusters/<cluster-id>
108+
```
109+
====
110+
111+
[[check-secrets-cloud-ui]]
112+
. Check secrets management is available in the Cloud UI.
113+
.. Log in to https://cloud.redpanda.com[Redpanda Cloud^].
114+
.. Go to the **Secrets Store** page of your cluster. You should be able to create a new secret.
115+
116+
== Next steps
117+
118+
* xref:manage:cluster-maintenance/config-cluster.adoc#set-cluster-configuration-properties[Reference a secret in a cluster property].
119+
* xref:manage:iceberg/use-iceberg-catalogs.adoc[Integrate a catalog] for querying Iceberg topics in your cluster.
120+

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

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,12 +280,61 @@ gcloud projects add-iam-policy-binding <host-project-id> \
280280
[%collapsible]
281281
====
282282
```bash
283+
cat << EOT > redpanda-cluster.role
284+
{
285+
"name": "redpanda_cluster_role",
286+
"title": "Redpanda Cluster Role",
287+
"description": "Redpanda Cluster Role",
288+
"includedPermissions": [
289+
"resourcemanager.projects.get",
290+
"secretmanager.secrets.get",
291+
"secretmanager.versions.access"
292+
],
293+
}
294+
EOT
295+
283296
gcloud iam service-accounts create redpanda-cluster \
284297
--display-name="Redpanda Cluster Service Account"
285298
286299
gcloud storage buckets add-iam-policy-binding gs://<tiered-storage-bucket-name> \
287300
--member="serviceAccount:redpanda-cluster@<service-project-id>.iam.gserviceaccount.com" \
288301
--role="roles/storage.objectAdmin"
302+
303+
gcloud iam roles create redpanda_cluster_role --project=<service-project-id> --file redpanda-cluster.role
304+
305+
gcloud projects add-iam-policy-binding <service-project-id> \
306+
--member="serviceAccount:redpanda-cluster@<service-project-id>.iam.gserviceaccount.com" \
307+
--role="projects/<service-project-id>/roles/redpanda_cluster_role"
308+
```
309+
====
310+
311+
* Redpanda operator service account
312+
+
313+
.Show commands
314+
[%collapsible]
315+
====
316+
```bash
317+
gcloud iam service-accounts create redpanda-operator \
318+
--display-name="Redpanda Operator Service Account"
319+
320+
cat << EOT > redpanda-operator.role
321+
{
322+
"name": "redpanda_operator_role",
323+
"title": "Redpanda Operator Role",
324+
"description": "Redpanda Operator Role",
325+
"includedPermissions": [
326+
"resourcemanager.projects.get",
327+
"secretmanager.secrets.get",
328+
"secretmanager.versions.access"
329+
],
330+
}
331+
EOT
332+
333+
gcloud iam roles create redpanda_operator_role --project=<service-project-id> --file redpanda-operator.role
334+
335+
gcloud projects add-iam-policy-binding <service-project-id> \
336+
--member="serviceAccount:redpanda-operator@<service-project-id>.iam.gserviceaccount.com" \
337+
--role="projects/<service-project-id>/roles/redpanda_operator_role"
289338
```
290339
====
291340

@@ -536,6 +585,18 @@ gcloud iam service-accounts add-iam-policy-binding <redpanda-cluster-gcp-sa-acco
536585
```
537586
====
538587

588+
* Redpanda operator service account
589+
+
590+
.Show command
591+
[%collapsible]
592+
====
593+
```
594+
gcloud iam service-accounts add-iam-policy-binding <redpanda_operator-gcp-sa-account-id>@<service-project-id>.iam.gserviceaccount.com \
595+
--role roles/iam.workloadIdentityUser \
596+
--member "serviceAccount:<service-project-id>.svc.id.goog[redpanda-system/<redpanda_operator-gcp-sa-account-id>]"
597+
```
598+
====
599+
539600
* Redpanda Console service account
540601
+
541602
.Show command

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ Serverless clusters now support the following new xref:reference:tiers/serverles
1515

1616
== May 2025
1717

18+
=== Secrets management for BYOVPC clusters on AWS and GCP
19+
20+
You can now create new BYOVPC clusters with secrets management enabled by default on xref:get-started:cluster-types/byoc/aws/vpc-byo-aws.adoc[AWS] and xref:get-started:cluster-types/byoc/gcp/vpc-byo-gcp.adoc[GCP].
21+
22+
You can also enable secrets management for existing BYOVPC clusters on AWS and GCP. For GCP, see xref:get-started:cluster-types/byoc/gcp/enable-secrets-byovpc-gcp.adoc[Enable Secrets Management for BYOVPC Clusters on GCP]. For AWS, contact https://support.redpanda.com/hc/en-us/requests/new[Redpanda Support^].
23+
1824
=== Serverless Standard: deprecated
1925

2026
Serverless Standard is deprecated. All existing clusters will be migrated to the new xref:get-started:cluster-types/serverless.adoc[Serverless] platform (with higher usage limits, 99.9% SLA, and additional regions) on August 31, 2025.

modules/manage/pages/cluster-maintenance/config-cluster.adoc

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@ For example, to enable data transforms, set xref:reference:properties/cluster-pr
3535
rpk cluster config set data_transforms_enabled true
3636
----
3737
38+
To set a cluster property with a secret, you must use the following notation:
39+
40+
[source,bash]
41+
----
42+
rpk cluster config set iceberg_rest_catalog_client_secret ${secrets.<secret-name>}
43+
----
44+
3845
NOTE: Some properties require a rolling restart, and it can take several minutes for the update to complete. The `rpk cluster config set` command returns the operation ID.
3946
4047
@@ -72,6 +79,22 @@ curl -H "Authorization: Bearer ${RP_CLOUD_TOKEN}" -X PATCH \
7279
7380
The xref:api:ROOT:cloud-controlplane-api.adoc#patch-/v1/clusters/-cluster.id-[`PATCH /clusters/{cluster.id}`] request returns the ID of a long-running operation. You can check the status of the operation by polling the xref:api:ROOT:cloud-controlplane-api.adoc#get-/v1/operations/-id-[`GET /operations/\{id}`] endpoint.
7481
82+
To set a cluster property with a secret, you must use the following notation with the secret name:
83+
84+
[source,bash]
85+
----
86+
curl -H "Authorization: Bearer <token>" -X PATCH \
87+
"https://api.cloud.redpanda.com/v1/clusters/<cluster-id>" \
88+
-H 'accept: application/json'\
89+
-H 'content-type: application/json' \
90+
-d '{"cluster_configuration": {
91+
"custom_properties": {
92+
"iceberg_rest_catalog_client_secret": "${secrets.<secret-name>}"
93+
}
94+
}
95+
}'
96+
----
97+
7598
NOTE: Some properties require a rolling restart for the update to take effect. This triggers a xref:manage:api/cloud-byoc-controlplane-api.adoc#lro[long-running operation] that can take several minutes to complete.
7699
77100
--

modules/manage/pages/iceberg/about-iceberg-topics.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@
22
:description: Learn how Redpanda can integrate topics with Apache Iceberg.
33
:page-beta: true
44

5+
NOTE: The Iceberg integration for Redpanda Cloud is a beta feature. It is not supported for production deployments.
6+
57
include::ROOT:manage:partial$iceberg/about-iceberg-topics.adoc[]

modules/manage/partials/controlplane-api.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ endif::[]
307307

308308
== Update cluster configuration
309309

310-
To update your cluster configuration properties, make a request to the xref:api:ROOT:cloud-controlplane-api.adoc#patch-/v1/clusters/-id-[`PATCH /v1/clusters/\{id}`] endpoint, passing the cluster ID as a parameter. Include the properties to update in the request body.
310+
To update your cluster configuration properties, make a request to the xref:api:ROOT:cloud-controlplane-api.adoc#patch-/v1/clusters/-cluster.id-[`PATCH /v1/clusters/\{id}`] endpoint, passing the cluster ID as a parameter. Include the properties to update in the request body.
311311

312312
ifdef::env-byoc[]
313313
[,bash]

0 commit comments

Comments
 (0)