Skip to content

Commit d4ca48b

Browse files
authored
Add a tool for converting Console v2 configs to v3 (#1016)
1 parent 5e51d3c commit d4ca48b

File tree

3 files changed

+103
-123
lines changed

3 files changed

+103
-123
lines changed

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

+23-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,29 @@ See xref:console:config/security/authentication.adoc[] for more information.
1919

2020
=== Breaking changes
2121

22-
include::upgrade:partial$console/v3-breaking-changes.adoc[]
22+
* **Authentication and authorization:**
23+
- Renamed the `login` stanza to `authentication`.
24+
- Renamed `login.jwtSecret` to `authentication.jwtSigningSecret`.
25+
- Removed the plain login provider.
26+
- OIDC group-based authorization is no longer supported.
27+
- Role bindings must now be configured in the `authorization.roleBindings` stanza (no longer stored in a separate file).
28+
29+
* **Schema Registry:**
30+
- Moved from under the `kafka` stanza to a top-level `schemaRegistry` stanza.
31+
- All authentication settings for Schema Registry are now defined under `schemaRegistry.authentication`.
32+
33+
* **Admin API:**
34+
- Authentication for the Redpanda Admin API is now defined under `redpanda.adminApi.authentication`.
35+
36+
* **Serialization settings:**
37+
- Moved `kafka.protobuf`, `kafka.cbor`, and `kafka.messagePack` to a new top-level `serde` stanza.
38+
- The `kafka.protobuf.schemaRegistry` setting is deprecated. Use the top-level `schemaRegistry` stanza instead.
39+
40+
* **Connect:**
41+
- Renamed the `connect` stanza to `kafkaConnect` to avoid ambiguity with Redpanda Connect.
42+
43+
* **Console settings:**
44+
- Moved `console.maxDeserializationPayloadSize` to `serde.console.maxDeserializationPayloadSize`.
2345

2446
*Action required*: xref:upgrade:migrate/console-v3.adoc[].
2547

modules/upgrade/pages/migrate/console-v3.adoc

+80-105
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
= Migrate to Redpanda Console v3.0.0 (beta)
2+
:page-console-config-migrator: true
3+
:page-role: enable-ace-editor
24

35
This guide provides step-by-step instructions for migrating from Redpanda Console v2.x.x (v2) to v3.x.x (v3). The new release introduces user impersonation to unify authentication and authorization between Redpanda Console and Redpanda, along with several breaking changes. This guide explains these changes and provides examples to help you update your configuration.
46

5-
For details on the new authentication and authorization system, see xref:console:config/security/authentication.adoc[].
7+
For details on the new authentication and authorization system, see xref:console:config/security/authentication.adoc[]. For a list of breaking changes, see xref:get-started:whats-new.adoc[].
68

7-
== Breaking changes
9+
:tip-caption: Try the Redpanda Console migration tool
810

9-
The following changes require your attention when migrating from v2 to v3:
10-
11-
include::upgrade:partial$console/v3-breaking-changes.adoc[]
11+
TIP: Use the <<migrator, migration tool>> to convert your v2 configuration to v3 format.
1212

1313
== Authentication and authorization migration
1414

15-
In v2, login provider configurations were defined under the `login` stanza. In v3, these have been replaced by the new `authentication` stanza. Below are examples showing how to migrate from different login providers.
15+
In v2, authentication and authorization was handled by the Redpanda Console. In v3, Redpanda Console uses the same authentication and authorization system as Redpanda. This change unifies the authentication and authorization model across Redpanda and Redpanda Console, enabling a more consistent and secure experience.
1616

1717
=== Migrate from the plain login provider
1818

19-
In v3, the plain login provider is no longer supported, and the `enterprise` stanza is deprecated, so you should configure authentication and RBAC directly in the main configuration.
19+
In v3, the plain login provider has been removed. Instead, you can either enable user impersonation or use static credentials for authentication. User impersonation forwards the credentials from the logged-in user to the APIs that have user impersonation enabled. With static credentials, the credentials specified in the configuration are used to authenticate with the APIs. For more information, see xref:console:config/security/authentication.adoc[].
2020

21-
For user impersonation, the logged-in user's credentials are re-used when making API calls. If you're using username/password authentication, these credentials are used as SASL/SCRAM credentials.
21+
Here is an example of how to migrate from the plain login provider to user impersonation:
2222

2323
[.side-by-side]
2424
--
@@ -49,18 +49,28 @@ kafka:
4949
sasl:
5050
enabled: true
5151
impersonateUser: true <1>
52+
redpanda:
53+
adminApi:
54+
authentication:
55+
impersonateUser: true
56+
schemaRegistry:
57+
enabled: true
58+
authentication:
59+
impersonateUser: true
5260
authentication: <2>
5361
jwtSigningSecret: "secret-key"
5462
useSecureCookies: false
5563
basic:
5664
enabled: true <3>
5765
----
5866
--
59-
<1> When using user impersonation, the credentials from the logged-in user are forwarded to the Kafka API. As a result, any static role-binding settings are ignored for impersonated API calls. Ensure your users are provisioned as SASL/SCRAM users in Redpanda.
67+
<1> When using user impersonation, the credentials from the logged-in user are forwarded to this API. As a result, any static role-binding settings are ignored for impersonated API calls. Ensure your users are provisioned as SASL/SCRAM users in Redpanda. See xref:manage:security/authentication.adoc[].
6068
<2> The `authentication` stanza replaces the `login` stanza in v3. Use this stanza to configure authentication settings.
6169
<3> The `basic` block enables basic authentication for Redpanda Console.
6270

63-
Role bindings are ignored with user impersonation. If you prefer to disable user impersonation so that static credentials are used instead, modify your configuration as follows:
71+
Role bindings in Redpanda Console are ignored with user impersonation. Instead, the credentials from the logged-in user are forwarded to the Redpanda APIs that have user impersonation enabled. Ensure that your logged-in users have the necessary ACLs in Redpanda. See xref:manage:security/authorization/index.adoc[].
72+
73+
If you prefer to disable user impersonation so that static credentials are used instead, modify your configuration as follows:
6474

6575
.V3 static credentials
6676
[source,yaml,role="no-wrap"]
@@ -72,6 +82,22 @@ kafka:
7282
username: "jane" <2>
7383
password: "some-other-secret-password"
7484
mechanism: SCRAM-SHA-256
85+
schemaRegistry:
86+
enabled: true
87+
authentication:
88+
impersonateUser: false
89+
basic:
90+
username: "jane"
91+
password: "some-other-secret-password"
92+
#bearerToken: "example-bearer-token" # For OAuth2 bearer token
93+
redpanda:
94+
adminApi:
95+
authentication:
96+
impersonateUser: false
97+
basic:
98+
username: "jane"
99+
password: "some-other-secret-password"
100+
#bearerToken: "example-bearer-token" # For OAuth2 bearer token
75101
authentication:
76102
jwtSigningSecret: "secret-key"
77103
useSecureCookies: false
@@ -92,15 +118,19 @@ authorization: <3>
92118

93119
[IMPORTANT]
94120
====
95-
When impersonation is disabled, the static credentials specified in the `kafka.sasl` block are used to authenticate with Kafka. Ensure that these credentials have the necessary ACLs in Redpanda.
121+
When impersonation is disabled, the static credentials specified in the `kafka.sasl` block are used to authenticate with the Kafka API when you log into Redpanda Console. Ensure that these credentials have the necessary ACLs in Redpanda. See xref:manage:security/authorization/index.adoc[].
96122
====
97123

98-
=== Migrate from Google OIDC
124+
=== Migrate from OIDC providers
99125

100-
In v3, the Google OIDC configuration has been simplified, and the `login` stanza has been replaced by the `authentication` stanza. Below is an example of migrating from Google OIDC in v2 to v3.
126+
In v2, Redpanda Console supported separate configuration for OIDC providers such as Google, GitHub, and Keycloak. In v3, the OIDC configuration has been simplified, and the `login` stanza has been replaced by the `authentication` stanza. For more information, see xref:console:config/security/authentication.adoc[].
101127

102128
NOTE: OIDC-based group authorization is no longer available in Redpanda Console. With the move to unified authentication, RBAC is now managed directly in Redpanda, which does not support OIDC groups. If you previously relied on OIDC groups to manage access, you must now transition to the RBAC model. Redpanda Data recommends mapping your existing group-based permissions to RBAC roles that reflect the same access levels. This change provides a more unified and fine-grained authorization approach.
103129

130+
Here is an example of how to migrate from Google OIDC in v2 to v3:
131+
132+
Here is an example of how to migrate from Google OIDC in v2 to v3:
133+
104134
[.side-by-side]
105135
--
106136
.V2 Google OIDC
@@ -109,7 +139,7 @@ NOTE: OIDC-based group authorization is no longer available in Redpanda Console.
109139
login:
110140
enabled: true
111141
jwtSecret: "old-google-secret"
112-
oidc:
142+
google:
113143
enabled: true
114144
clientId: "google-client-id-v2"
115145
clientSecret: "google-client-secret-v2"
@@ -134,103 +164,17 @@ authentication: <2>
134164
clientSecret: "google-client-secret-v2"
135165
----
136166
--
137-
<1> When using user impersonation, the credentials from the logged-in user are forwarded to the Kafka API. As a result, any static role-binding settings are ignored for impersonated API calls. Ensure your Redpanda cluster has SASL/OAUTHBEARER authentication enabled.
167+
<1> When using user impersonation, the credentials from the logged-in user are forwarded to the Kafka API. As a result, any static role-binding settings are ignored for impersonated API calls. Ensure your Redpanda cluster has SASL/OAUTHBEARER authentication enabled. See xref:manage:security/authorization/index.adoc[].
138168
<2> The `authentication` stanza replaces the `login` stanza in v3. Use this stanza to configure authentication settings.
139169
<3> The `oidc` block enables OIDC authentication for Redpanda Console. See xref:console:config/security/authentication.adoc[].
140170

141-
142-
143-
Additionally, Redpanda requires a JWT-encoded access token for authentication. While most identity providers issue JWTs, some (like Google) follow the OAuth spec and issue opaque tokens instead. Since Redpanda relies on JWTs to introspect the audience and subject, providers that do not support JWT access tokens cannot be used for authentication.
144-
145-
=== Migrate from GitHub OIDC
146-
147-
In v3, the GitHub OIDC configuration has been simplified, and the `login` stanza has been replaced by the `authentication` stanza. Below is an example of migrating from GitHub OIDC in v2 to v3.
148-
149-
NOTE: OIDC-based group authorization is no longer available in Redpanda Console. With the move to unified authentication, RBAC is now managed directly in Redpanda, which does not support OIDC groups. If you previously relied on OIDC groups to manage access, you must now transition to the RBAC model. Redpanda Data recommends mapping your existing group-based permissions to RBAC roles that reflect the same access levels. This change provides a more unified and fine-grained authorization approach.
150-
151-
[.side-by-side]
152-
--
153-
.V2 GitHub OIDC
154-
[source,yaml,role="no-wrap"]
155-
----
156-
login:
157-
enabled: true
158-
jwtSecret: "old-github-secret"
159-
github:
160-
enabled: true
161-
clientId: "github-client-id-v2"
162-
clientSecret: "github-client-secret-v2"
163-
# The directory configuration for GitHub teams was available in v2 but is no longer supported.
164-
----
165-
166-
.V3 GitHub OIDC
167-
[source,yaml,role="no-wrap"]
168-
----
169-
kafka:
170-
sasl:
171-
enabled: true
172-
impersonateUser: true <1>
173-
authentication: <2>
174-
jwtSigningSecret: "old-github-secret"
175-
useSecureCookies: true
176-
oidc: <3>
177-
enabled: true
178-
clientId: "github-client-id-v2"
179-
clientSecret: "github-client-secret-v2"
180-
----
181-
--
182-
<1> When using user impersonation, the credentials from the logged-in user are forwarded to the Kafka API. As a result, any static role-binding settings are ignored for impersonated API calls. Ensure your Redpanda cluster has SASL/OAUTHBEARER authentication enabled.
183-
<2> The `authentication` stanza replaces the `login` stanza in v3. Use this stanza to configure authentication settings.
184-
<3> The `oidc` block enables OIDC authentication for Redpanda Console. See xref:console:config/security/authentication.adoc[].
185-
186-
=== Migrate from Keycloak OIDC
187-
188-
In v3, the Keycloak OIDC configuration has been simplified, and the `login` stanza has been replaced by the `authentication` stanza. Below is an example of migrating from Keycloak OIDC in v2 to v3.
189-
190-
NOTE: OIDC-based group authorization is no longer available in Redpanda Console. With the move to unified authentication, RBAC is now managed directly in Redpanda, which does not support OIDC groups. If you previously relied on OIDC groups to manage access, you must now transition to the RBAC model. Redpanda Data recommends mapping your existing group-based permissions to RBAC roles that reflect the same access levels. This change provides a more unified and fine-grained authorization approach.
191-
192-
[.side-by-side]
193-
--
194-
.V2 Keycloak OIDC
195-
[source,yaml,role="no-wrap"]
196-
----
197-
login:
198-
enabled: true
199-
jwtSecret: "old-keycloak-secret"
200-
keycloak:
201-
enabled: true
202-
url: "https://keycloak.internal.company.com"
203-
realm: "old-realm-v2"
204-
clientId: "keycloak-client-id-v2"
205-
clientSecret: "keycloak-client-secret-v2"
206-
# The directory configuration for syncing Keycloak groups was included in v2 but is no longer supported.
207-
----
208-
209-
.V3 Keycloak OIDC
210-
[source,yaml,role="no-wrap"]
211-
----
212-
kafka:
213-
sasl:
214-
enabled: true
215-
impersonateUser: true <1>
216-
authentication: <2>
217-
jwtSigningSecret: "old-keycloak-secret"
218-
useSecureCookies: true
219-
oidc: <3>
220-
enabled: true
221-
url: "https://keycloak.internal.company.com"
222-
realm: "old-realm-v2"
223-
clientId: "keycloak-client-id-v2"
224-
clientSecret: "keycloak-client-secret-v2"
225-
----
226-
--
227-
<1> When using user impersonation, the credentials from the logged-in user are forwarded to the Kafka API. As a result, any static role-binding settings are ignored for impersonated API calls. Ensure your Redpanda cluster has SASL/OAUTHBEARER authentication enabled.
228-
<2> The `authentication` stanza replaces the `login` stanza in v3. Use this stanza to configure authentication settings.
229-
<3> The `oidc` block enables OIDC authentication for Redpanda Console. See xref:console:config/security/authentication.adoc[].
171+
Redpanda requires a JWT-encoded access token for authentication. While most identity providers issue JWTs, some (like Google) follow the OAuth spec and issue opaque tokens instead. Since Redpanda relies on JWTs to introspect the audience and subject, providers that do not support JWT access tokens cannot be used for authentication.
230172

231173
=== Role bindings
232174

233-
In v2, role bindings could be configured in a separate file or within the `enterprise` stanza. In v3, the `enterprise` stanza is deprecated, and role bindings must now be configured directly in your main configuration under the `authorization.roleBindings` stanza.
175+
In v2, role bindings could be configured in a separate file. In v3, the `enterprise` stanza is deprecated, and role bindings must now be configured directly in your main configuration under the `authorization.roleBindings` stanza. For more details, see xref:console:config/security/authorization.adoc[].
176+
177+
Here is an example of how to migrate role bindings from a separate file to the main configuration:
234178

235179
[.side-by-side]
236180
--
@@ -367,7 +311,38 @@ After updating your configuration, verify that:
367311
- Users can log in using the new authentication settings.
368312
- API calls to Kafka, Schema Registry, and the Admin API are authenticated correctly.
369313

314+
[[migrator]]
315+
== Redpanda Console migration tool
316+
317+
This migration tool attempts to convert your Redpanda Console configuration from v2 to v3 format. The tool is provided as a convenience and may not cover all migration scenarios. Always review the output to ensure that your configuration is correct.
318+
319+
To use the tool, paste your v2 YAML configuration into the text box and click *Migrate* to generate the updated configuration. To test the tool, click *Load sample* to load a sample configuration.
320+
321+
If you have a separate file for role bindings, paste the contents into the text box along with the main configuration.
322+
In v3, role bindings are configured directly in the main configuration file.
323+
The tool attempts to convert your role bindings into the new format and adds them to the main configuration file in the output.
324+
325+
++++
326+
<div class="button-bar">
327+
<button id="showExample" class="doc-button">Load sample</button>
328+
<button id="clearInput" class="doc-button">Clear</button>
329+
<button id="convertConfig" class="doc-button">Migrate</button>
330+
</div>
331+
<div id="ace-config-input" class="ace-editor"></div>
332+
++++
333+
334+
Review the output before deploying the new configuration. If you encounter any issues, refer to the examples in this guide to manually update your configuration.
335+
336+
++++
337+
<div class="button-bar">
338+
<button id="copyConfig" class="doc-button">Copy output</button>
339+
</div>
340+
<div id="ace-config-output" class="ace-editor"></div>
341+
++++
342+
370343
== Suggested reading
371344

372345
- xref:console:config/security/authentication.adoc[]
373346
- xref:console:config/security/index.adoc[]
347+
- xref:manage:security/authentication.adoc[]
348+
- xref:manage:security/authorization/index.adoc[]

modules/upgrade/partials/console/v3-breaking-changes.adoc

-17
This file was deleted.

0 commit comments

Comments
 (0)