From 7ec1d065d7735734b312527d912fcaffe3de2c30 Mon Sep 17 00:00:00 2001 From: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> Date: Thu, 22 May 2025 17:33:55 +0100 Subject: [PATCH 01/27] Update antora.yml --- antora.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/antora.yml b/antora.yml index e3101803da..c1fb810bbb 100644 --- a/antora.yml +++ b/antora.yml @@ -1,6 +1,8 @@ name: ROOT title: Self-Managed -version: 25.1 +version: 25.2 +display_version: '25.2 Beta' +prerelease: true start_page: home:index.adoc nav: - modules/ROOT/nav.adoc From 011914c4fa4cdd4701dce268769acd0cd60174fb Mon Sep 17 00:00:00 2001 From: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> Date: Thu, 22 May 2025 17:34:21 +0100 Subject: [PATCH 02/27] Update local-antora-playbook.yml --- local-antora-playbook.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/local-antora-playbook.yml b/local-antora-playbook.yml index 0f53a55d6e..c0a904527a 100644 --- a/local-antora-playbook.yml +++ b/local-antora-playbook.yml @@ -1,6 +1,6 @@ site: title: Redpanda Docs - start_page: 25.1@ROOT:get-started:intro-to-events.adoc + start_page: 25.2@ROOT:get-started:intro-to-events.adoc url: http://localhost:5002 robots: disallow keys: @@ -15,7 +15,7 @@ content: - url: . branches: HEAD - url: https://github.com/redpanda-data/docs - branches: [v/*, api, shared, site-search,'!v-end-of-life/*'] + branches: [main, v/*, api, shared, site-search,'!v-end-of-life/*'] - url: https://github.com/redpanda-data/cloud-docs branches: 'main' - url: https://github.com/redpanda-data/redpanda-labs From a34310ae7a2d3f46dee9439a8f3a69b6ab1aa309 Mon Sep 17 00:00:00 2001 From: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> Date: Thu, 26 Jun 2025 16:47:33 +0100 Subject: [PATCH 03/27] DOC-1229 Document feature: Package Operator CRDs with Operator Helm Chart (#1172) --- modules/ROOT/nav.adoc | 1 - .../self-hosted/kubernetes/aks-guide.adoc | 6 + .../self-hosted/kubernetes/eks-guide.adoc | 6 + .../self-hosted/kubernetes/k-25.1-beta.adoc | 185 ------------------ .../kubernetes/k-deployment-overview.adoc | 39 +--- .../kubernetes/k-production-deployment.adoc | 15 +- .../self-hosted/kubernetes/local-guide.adoc | 21 +- .../partials/kubernetes/deploy-operator.adoc | 36 ++++ .../kubernetes/guides/deploy-redpanda.adoc | 17 +- .../partials/kubernetes/guides/uninstall.adoc | 87 ++++++-- .../partials/kubernetes/install-crds.adoc | 14 -- .../pages/release-notes/helm-charts.adoc | 2 - .../pages/release-notes/operator.adoc | 17 +- .../pages/kubernetes/helm-to-operator.adoc | 33 +--- .../images/operator-flux-relationship.png | Bin 758915 -> 0 bytes .../partials/cluster-diagnostics.adoc | 10 +- .../partials/errors-and-solutions.adoc | 80 +------- modules/upgrade/pages/k-upgrade-operator.adoc | 22 ++- 18 files changed, 166 insertions(+), 425 deletions(-) delete mode 100644 modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-25.1-beta.adoc create mode 100644 modules/deploy/partials/kubernetes/deploy-operator.adoc delete mode 100644 modules/deploy/partials/kubernetes/install-crds.adoc delete mode 100644 modules/shared/images/operator-flux-relationship.png diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index b47b25bf57..1b6f62f4ab 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -68,7 +68,6 @@ *** xref:deploy:deployment-option/self-hosted/kubernetes/k-production-workflow.adoc[Deployment Workflow] *** xref:deploy:deployment-option/self-hosted/kubernetes/k-requirements.adoc[Requirements and Recommendations] *** xref:deploy:deployment-option/self-hosted/kubernetes/k-tune-workers.adoc[Tune Worker Nodes] -*** xref:deploy:deployment-option/self-hosted/kubernetes/k-25.1-beta.adoc[Try v25.1] *** xref:deploy:deployment-option/self-hosted/kubernetes/kubernetes-deploy.adoc[Deploy Redpanda] *** xref:deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc[Deploy Connectors] *** xref:deploy:deployment-option/self-hosted/kubernetes/k-high-availability.adoc[High Availability] diff --git a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/aks-guide.adoc b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/aks-guide.adoc index c0487790a5..47d8e8ed5a 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/aks-guide.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/aks-guide.adoc @@ -126,6 +126,12 @@ To delete your Kubernetes cluster: az aks delete --name --resource-group redpandaResourceGroup ---- +To remove the convenience alias created during the quickstart: + +```bash +unalias internal-rpk +``` + include::deploy:partial$kubernetes/guides/troubleshoot.adoc[leveloffset=+1] include::deploy:partial$kubernetes/guides/next-steps.adoc[leveloffset=+1] diff --git a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/eks-guide.adoc b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/eks-guide.adoc index 14cd57aefb..10f99f55cb 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/eks-guide.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/eks-guide.adoc @@ -373,6 +373,12 @@ To delete your Kubernetes cluster: eksctl delete cluster --name ---- +To remove the convenience alias created during the quickstart: + +```bash +unalias internal-rpk +``` + include::deploy:partial$kubernetes/guides/troubleshoot.adoc[leveloffset=+1] include::deploy:partial$kubernetes/guides/next-steps.adoc[leveloffset=+1] diff --git a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-25.1-beta.adoc b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-25.1-beta.adoc deleted file mode 100644 index 01b432c3f5..0000000000 --- a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-25.1-beta.adoc +++ /dev/null @@ -1,185 +0,0 @@ -= Try the 25.1 Beta of the Redpanda Operator -:page-beta: true -:description: Deploy the 25.1 beta release of the Redpanda Operator or Redpanda Helm chart. This version of the Redpanda Operator no longer requires FluxCD or its custom resource definitions. In this version, the Redpanda Operator is responsible for reconciling the Redpanda cluster. - -{description} - -This beta version is available for testing and feedback. It is not supported by Redpanda and should not be used in production environments. To give feedback on beta releases, reach out to the Redpanda team in https://redpanda.com/slack[Redpanda Community Slack^]. - -== Prerequisites - -Make sure that your Kubernetes cluster meets the xref:./k-requirements.adoc[requirements]. - -== Install Redpanda Operator v25.1.1-beta1 - -The Redpanda Operator is namespace scoped. You must install the Redpanda Operator in the same namespace as your Redpanda resource (Redpanda cluster). - -. Make sure that you have permission to install custom resource definitions (CRDs): -+ -```bash -kubectl auth can-i create CustomResourceDefinition --all-namespaces -``` -+ -You should see `yes` in the output. -+ -You need these cluster-level permissions to install glossterm:cert-manager[^] and Redpanda Operator CRDs in the next steps. - -. Install cert-manager: -+ -```bash -helm repo add jetstack https://charts.jetstack.io -helm repo update -helm install cert-manager jetstack/cert-manager \ - --set crds.enabled=true \ - --namespace cert-manager \ - --create-namespace -``` -+ -TLS is enabled by default and cert-manager is used to manage TLS certificates. - -. Install the Redpanda Operator CRDs: -+ -[,bash,subs="attributes+"] ----- -kubectl kustomize "https://github.com/redpanda-data/redpanda-operator//operator/config/crd?ref={operator-beta-tag}" \ - | kubectl apply --server-side -f - ----- - -. Deploy the Redpanda Operator. -+ -[,bash,subs="attributes+"] ----- -helm repo add redpanda https://charts.redpanda.com -helm upgrade --install redpanda-controller redpanda/operator \ - --namespace \ - --create-namespace \ - --version {operator-beta-tag} ----- - -. Ensure that the Deployment is successfully rolled out: -+ -```bash -kubectl --namespace rollout status --watch deployment/redpanda-controller-operator -``` -+ -[.no-copy] ----- -deployment "redpanda-controller-operator" successfully rolled out ----- - -. Install a xref:reference:k-crd.adoc[Redpanda custom resource] to deploy a Redpanda cluster and Redpanda Console v3. -+ -.`redpanda-cluster.yaml` -[,yaml,subs="attributes+"] ----- -apiVersion: cluster.redpanda.com/v1alpha2 -kind: Redpanda -metadata: - name: redpanda ----- - -. If you want to use enterprise features in Redpanda, add the details of a Secret that stores your Enterprise Edition license key. -+ -.`redpanda-cluster.yaml` -[,yaml,subs="attributes+"] ----- -apiVersion: cluster.redpanda.com/v1alpha2 -kind: Redpanda -metadata: - name: redpanda -spec: - clusterSpec: - enterprise: - licenseSecretRef: - name: - key: ----- -+ -For details, see xref:get-started:licensing/add-license-redpanda/kubernetes.adoc[]. - -. Apply the Redpanda resource: -+ -```bash -kubectl apply -f redpanda-cluster.yaml --namespace -``` -+ -The Redpanda resource must be deployed in the same namespace as the Redpanda Operator. - -. Wait for the Redpanda Operator to deploy the cluster: -+ -```bash -kubectl get redpanda --namespace --watch -``` -+ -[.no-copy] ----- -NAME READY STATUS -redpanda True Redpanda reconciliation succeeded ----- -+ -This step may take a few minutes. You can watch for new Pods to make sure that the deployment is progressing: -+ -```bash -kubectl get pod --namespace -``` -+ -If it's taking too long, see xref:manage:kubernetes/troubleshooting/k-troubleshoot.adoc[Troubleshooting]. - - -== Install the Redpanda Helm chart v25.1.1-beta1 - -. Install cert-manager using Helm: -+ -```bash -helm repo add jetstack https://charts.jetstack.io -helm repo update -helm install cert-manager jetstack/cert-manager \ - --set crds.enabled=true \ - --namespace cert-manager \ - --create-namespace -``` -+ -The Redpanda Helm chart enables TLS by default and uses cert-manager to manage TLS certificates. - -. If you want to use enterprise features in Redpanda, add the details of a Secret that stores your Enterprise Edition license key. -+ -.`redpanda-values.yaml` -[,yaml] ----- -enterprise: - licenseSecretRef: - name: - key: ----- -+ -For details, see xref:get-started:licensing/add-license-redpanda/kubernetes.adoc[]. - -. Install the Redpanda Helm chart to deploy a Redpanda cluster and Redpanda Console v3. -+ -[source,bash,subs="attributes+"] ----- -helm repo add redpanda https://charts.redpanda.com -helm repo update -helm install redpanda redpanda/redpanda \ - --version {helm-beta-tag} - --namespace - --create-namespace \ - --values redpanda-values.yaml ----- - -. Wait for the Redpanda cluster to be ready: -+ -```bash -kubectl --namespace rollout status statefulset redpanda --watch -``` -+ -When the Redpanda cluster is ready, the output should look similar to the following: -+ -[.no-copy] ----- -statefulset rolling update complete 3 pods at revision redpanda-8654f645b4... ----- - -== Next steps - -To give feedback about this beta version, reach out to the Redpanda team in https://redpanda.com/slack[Redpanda Community Slack^]. diff --git a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-deployment-overview.adoc b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-deployment-overview.adoc index 8ec6391e77..16c65c4aea 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-deployment-overview.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-deployment-overview.adoc @@ -50,44 +50,9 @@ TIP: If you are already using the Redpanda Helm chart and want to migrate to the [[helm-and-redpanda-operator]] === Redpanda Operator -The Redpanda Operator is designed for production-grade Redpanda deployments, offering enhanced lifecycle management, automation, and GitOps compatibility. It supports two deployment modes controlled by the `chartRef.useFlux` flag. +The Redpanda Operator is designed for production-grade Redpanda deployments, offering enhanced lifecycle management, automation, and GitOps compatibility. -==== Redpanda-managed mode - -(Default: `chartRef.useFlux: false`) - -The Redpanda Operator manages and reconciles Redpanda resources directly, without involving Flux. This mode works as follows: - -. The Redpanda Operator creates both `HelmRelease` and `HelmRepository` resources but suspends them, keeping Flux inactive. -+ -NOTE: Although these resources are created in a suspended state, the Redpanda Operator still requires the Flux CRDs to be installed. -. The Redpanda Operator directly reconciles Redpanda resources, performing tasks such as installations, updates, and cleanup, normally handled by Flux. -. If `useFlux` is later re-enabled, the Redpanda Operator unsuspends the Flux resources, and Flux resumes lifecycle management. - -==== Flux-managed mode - -(Enabled with `chartRef.useFlux: true`) - -The Redpanda Operator delegates reconciliation to https://fluxcd.io/flux/concepts/[Flux^] controllers. The workflow is as follows: - -. The Redpanda Operator defines the necessary CRDs for Redpanda. A Redpanda resource represents a Redpanda cluster, configured through the Redpanda Helm chart values. -. When the Redpanda Operator detects changes to Redpanda resources, it triggers Flux to reconcile the corresponding HelmRelease resource. -. Flux uses the HelmRelease resource to manage the lifecycle of the Redpanda Helm chart, applying updates as needed. - -Example configuration to specify the deployment mode in Redpanda's custom resource: - -[,yaml] ----- -apiVersion: cluster.redpanda.com/v1alpha2 -kind: Redpanda -metadata: - name: redpanda -spec: - chartRef: - useFlux: false ----- - -image::shared:operator-flux-relationship.png[CRDs for the Redpanda Operator include Flux CRDs. If you are running in Flux-managed mode, Flux manages the Redpanda Helm chart through the HelmRelease resource.] +The Redpanda Operator directly reconciles Redpanda resources, performing tasks such as installations, updates, and cleanup. === Helm diff --git a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc index 6e15053231..746dc2e839 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc @@ -55,22 +55,9 @@ helm install cert-manager jetstack/cert-manager \ + The Redpanda Helm chart enables TLS by default and uses cert-manager to manage TLS certificates. -. Install the Redpanda Operator CRDs: -+ -include::deploy:partial$kubernetes/install-crds.adoc[] - . Deploy the Redpanda Operator. + -[,bash,subs="attributes+"] ----- -helm repo add redpanda https://charts.redpanda.com -helm upgrade --install redpanda-controller redpanda/operator \ - --namespace \ - --create-namespace \ - --version {latest-operator-version} \ <1> ----- -+ -<1> This flag specifies the exact version of the Redpanda Operator Helm chart to use for deployment. By setting this value, you pin the chart to a specific version, which prevents automatic updates that might introduce breaking changes or new features that have not been tested in your environment. +include::deploy:partial$kubernetes/deploy-operator.adoc[] . Ensure that the Deployment is successfully rolled out: + diff --git a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/local-guide.adoc b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/local-guide.adoc index 1bcad76f3a..7992cf05c3 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/local-guide.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/local-guide.adoc @@ -149,23 +149,9 @@ helm install cert-manager jetstack/cert-manager --set crds.enabled=true --namesp + TLS is enabled by default. The Redpanda Helm chart uses cert-manager to manage TLS certificates by default. -. Install the Redpanda Operator custom resource definitions (CRDs): -+ -include::deploy:partial$kubernetes/install-crds.adoc[] - . Deploy the Redpanda Operator: + -[,bash,subs="attributes+"] ----- -helm repo add redpanda https://charts.redpanda.com -helm repo update redpanda -helm upgrade --install redpanda-controller redpanda/operator \ - --namespace \ - --create-namespace \ - --version {latest-operator-version} <1> ----- -+ -<1> This flag specifies the exact version of the Redpanda Operator Helm chart to use for deployment. By setting this value, you pin the chart to a specific version, which prevents automatic updates that might introduce breaking changes or new features that have not been tested in your environment. +include::deploy:partial$kubernetes/deploy-operator.adoc[] . Ensure that the Deployment is successfully rolled out: + @@ -548,6 +534,11 @@ minikube delete -- ====== +To remove the convenience alias created during the quickstart: + +```bash +unalias internal-rpk +``` include::deploy:partial$kubernetes/guides/troubleshoot.adoc[leveloffset=+1] diff --git a/modules/deploy/partials/kubernetes/deploy-operator.adoc b/modules/deploy/partials/kubernetes/deploy-operator.adoc new file mode 100644 index 0000000000..9febb2666a --- /dev/null +++ b/modules/deploy/partials/kubernetes/deploy-operator.adoc @@ -0,0 +1,36 @@ +ifdef::latest-operator-version[] +[,bash,subs="attributes+"] +---- +helm repo add redpanda https://charts.redpanda.com +helm repo update +helm upgrade --install redpanda-controller redpanda/operator \ + --namespace \ + --create-namespace \ + --version {latest-operator-version} \ <1> + --set crds.enabled=true <2> +---- ++ +<1> This flag specifies the exact version of the Redpanda Operator Helm chart to use for deployment. By setting this value, you pin the chart to a specific version, which prevents automatic updates that might introduce breaking changes or new features that have not been tested in your environment. +<2> This flag ensures that the CRDs are installed as part of the Redpanda Operator deployment. ++ +:note-caption: Older versions of the Redpanda Operator ++ +[NOTE] +======== +The `--set crds.enabled=true` flag is only supported in Redpanda Operator **v25.1.1 and later**. + +If you deploy an earlier version (such as v2.4.x), you must install the CRDs separately. See the xref:25.1@ROOT:deploy:deployment-option/self-hosted/kubernetes/k-production-deployment.adoc[v2.4.x deployment documentation] for more information. +======== +endif::[] +ifndef::latest-operator-version[] +[,bash,subs="attributes+"] +---- +helm repo add redpanda https://charts.redpanda.com +helm repo update +helm upgrade --install redpanda-controller redpanda/operator \ + --namespace \ + --create-namespace \ + --set crds.enabled=true <1> +---- +<1> This flag ensures that the CRDs are installed as part of the Redpanda Operator deployment. +endif::[] diff --git a/modules/deploy/partials/kubernetes/guides/deploy-redpanda.adoc b/modules/deploy/partials/kubernetes/guides/deploy-redpanda.adoc index ff69af7334..fb77066783 100644 --- a/modules/deploy/partials/kubernetes/guides/deploy-redpanda.adoc +++ b/modules/deploy/partials/kubernetes/guides/deploy-redpanda.adoc @@ -31,24 +31,9 @@ helm install cert-manager jetstack/cert-manager \ + The Redpanda Helm chart uses cert-manager to enable TLS and manage TLS certificates by default. -. Install the Redpanda Operator custom resource definitions (CRDs): -+ -include::deploy:partial$kubernetes/install-crds.adoc[] - . Deploy the Redpanda Operator: + -[,bash,subs="attributes+"] ----- -helm repo add redpanda https://charts.redpanda.com -helm repo update -helm upgrade --install redpanda-controller redpanda/operator \ - --namespace \ - --create-namespace \ - --timeout 1h \ - --version {latest-operator-version} <1> ----- -+ -<1> This flag specifies the exact version of the Redpanda Operator Helm chart to use for deployment. By setting this value, you pin the chart to a specific version, which prevents automatic updates that might introduce breaking changes or new features that have not been tested in your environment. +include::deploy:partial$kubernetes/deploy-operator.adoc[] . Ensure that the Deployment is successfully rolled out: + diff --git a/modules/deploy/partials/kubernetes/guides/uninstall.adoc b/modules/deploy/partials/kubernetes/guides/uninstall.adoc index 3593a934e2..e60b95d06c 100644 --- a/modules/deploy/partials/kubernetes/guides/uninstall.adoc +++ b/modules/deploy/partials/kubernetes/guides/uninstall.adoc @@ -1,37 +1,96 @@ = Uninstall Redpanda -When you've finished testing Redpanda, you can uninstall it from your cluster and delete any Kubernetes resources that the Helm chart created. +When you finish testing Redpanda, you can uninstall it from your Kubernetes cluster. The steps depend on how you installed Redpanda: using the Redpanda Operator or the Redpanda Helm chart. [tabs] ====== Operator:: + -- +//tag::operator[] +Follow the steps in **exact order** to avoid race conditions between +the Redpanda Operator's reconciliation loop and Kubernetes garbage collection. + +. Delete all Redpanda-related custom resources: ++ +[,bash,role="no-wrap"] +---- +kubectl delete users --namespace --all +kubectl delete topics --namespace --all +kubectl delete schemas --namespace --all +kubectl delete redpanda --namespace --all +---- + +. Make sure requests for those resources return no results. For example, if you had a Redpanda cluster named `redpanda` in the namespace ``, run: ++ +[,bash] +---- +kubectl get redpanda --namespace +---- + +. Uninstall the Redpanda Operator Helm release: ++ [,bash] ---- -kubectl delete -f redpanda-cluster.yaml --namespace helm uninstall redpanda-controller --namespace -kubectl delete pod --all --namespace -kubectl delete pvc --all --namespace -kubectl delete secret --all --namespace ---- ++ +Helm does not uninstall CRDs by default when using `helm uninstall` to avoid accidentally deleting existing custom resources. + +. Remove the CRDs. +.. List all Redpanda CRDs installed by the operator: ++ +[,bash] +---- +kubectl api-resources --api-group='cluster.redpanda.com' +---- ++ +This command displays all CRDs defined by the Redpanda Operator. For example: ++ +[,bash,role="no-wrap"] +---- +NAME SHORTNAMES APIVERSION NAMESPACED KIND +redpandas rp cluster.redpanda.com/v1alpha2 true Redpanda +schemas sc cluster.redpanda.com/v1alpha2 true Schema +topics cluster.redpanda.com/v1alpha2 true Topic +users rpu cluster.redpanda.com/v1alpha2 true User +---- + +.. Delete the CRDs: ++ +[,bash] +---- +kubectl api-resources --api-group='cluster.redpanda.com' -o name | xargs kubectl delete crd +---- ++ +This command deletes all CRDs defined under the `cluster.redpanda.com` API group. Helm does not delete CRDs automatically to prevent data loss, so you must run this step manually. + +. (Optional) Delete any leftover PVCs or Secrets in the namespace: ++ +[,bash] +---- +kubectl delete pvc,secret --all --namespace +---- +//end::operator[] -- Helm:: + -- +If you deployed Redpanda with the Redpanda Helm chart, follow these steps to uninstall it: + +. Uninstall the Helm release: ++ [,bash] ---- helm uninstall redpanda --namespace -kubectl delete pod --all --namespace -kubectl delete pvc --all --namespace -kubectl delete secret --all --namespace +---- + +. (Optional) Delete any leftover PVCs or Secrets in the namespace: ++ +[,bash] +---- +kubectl delete pvc,secret --all --namespace ---- -- ====== - -To remove the `internal-rpk` alias: - -```bash -unalias internal-rpk -``` diff --git a/modules/deploy/partials/kubernetes/install-crds.adoc b/modules/deploy/partials/kubernetes/install-crds.adoc deleted file mode 100644 index 18629a0d86..0000000000 --- a/modules/deploy/partials/kubernetes/install-crds.adoc +++ /dev/null @@ -1,14 +0,0 @@ -ifdef::latest-operator-version[] -[,bash,subs="attributes+"] ----- -kubectl kustomize "https://github.com/redpanda-data/redpanda-operator//operator/config/crd?ref={latest-operator-version}" \ - | kubectl apply --server-side -f - ----- -endif::[] -ifndef::latest-operator-version[] -[,bash] ----- -kubectl kustomize "https://github.com/redpanda-data/redpanda-operator//operator/config/crd?ref=" \ - | kubectl apply --server-side -f - ----- -endif::[] diff --git a/modules/get-started/pages/release-notes/helm-charts.adoc b/modules/get-started/pages/release-notes/helm-charts.adoc index c51a6c2d97..d84ed2339a 100644 --- a/modules/get-started/pages/release-notes/helm-charts.adoc +++ b/modules/get-started/pages/release-notes/helm-charts.adoc @@ -16,8 +16,6 @@ See also: link:https://github.com/redpanda-data/redpanda-operator/blob/release/v25.1.x/charts/redpanda/CHANGELOG.md[Changelog^]. -See also: xref:deploy:deployment-option/self-hosted/kubernetes/k-25.1-beta.adoc[] - === Redpanda Console v3 This beta version deploys Redpanda Console v3, which includes unified authentication and authorization between the Console and Redpanda, including user impersonation. For more information, see xref:console:config/security/authentication.adoc[]. diff --git a/modules/get-started/pages/release-notes/operator.adoc b/modules/get-started/pages/release-notes/operator.adoc index 16f961f62d..a80b98e312 100644 --- a/modules/get-started/pages/release-notes/operator.adoc +++ b/modules/get-started/pages/release-notes/operator.adoc @@ -9,12 +9,25 @@ See also: * xref:upgrade:k-compatibility.adoc[] * xref:upgrade:k-rolling-upgrade.adoc[] +== Redpanda Operator v25.1.x + +Starting in Redpanda Operator v25.1.1, you can install both the Redpanda Operator and its required custom resource definitions (CRDs) using a single Helm command: + +[,bash,subs="attributes+"] +---- +helm repo add redpanda https://charts.redpanda.com +helm repo update +helm upgrade --install redpanda-controller redpanda/operator \ + --namespace \ + --create-namespace \ + --version {latest-operator-version} \ + --set crds.enabled=true +---- + == Redpanda Operator v25.1.1-beta1 link:https://github.com/redpanda-data/redpanda-operator/blob/release/v25.1.x/operator/CHANGELOG.md[Changelog^]. -See also: xref:deploy:deployment-option/self-hosted/kubernetes/k-25.1-beta.adoc[] - === Redpanda Console v3 This beta version deploys Redpanda Console v3, which includes unified authentication and authorization between the Console and Redpanda, including user impersonation. For more information, see xref:console:config/security/authentication.adoc[]. diff --git a/modules/migrate/pages/kubernetes/helm-to-operator.adoc b/modules/migrate/pages/kubernetes/helm-to-operator.adoc index 15a03c2d6c..cb8fa97a38 100644 --- a/modules/migrate/pages/kubernetes/helm-to-operator.adoc +++ b/modules/migrate/pages/kubernetes/helm-to-operator.adoc @@ -88,21 +88,9 @@ You should see `yes` in the output. + You need these cluster-level permissions to install the Redpanda Operator CRDs in the next steps. -. Install the Redpanda Operator custom resource definitions (CRDs): -+ -include::deploy:partial$kubernetes/install-crds.adoc[] - . Install the Redpanda Operator *in the same namespace as your Redpanda Helm chart*: + -[,bash,subs="attributes+"] ----- -helm repo add redpanda https://charts.redpanda.com -helm repo update -helm upgrade --install redpanda-controller redpanda/operator \ - --namespace \ - --set image.tag={latest-operator-version} \ - --create-namespace ----- +include::deploy:partial$kubernetes/deploy-operator.adoc[] . Ensure that the Deployment is successfully rolled out: + @@ -172,24 +160,9 @@ redpanda True Redpanda reconciliation succeeded == Roll back from Redpanda Operator to Helm -If you migrated to the Redpanda Operator and want to revert to using only Helm, follow these steps: - -. Uninstall or disable the Redpanda Operator. -+ -You can uninstall the Redpanda Operator using Helm or disable it by changing the image to one that does not exist: -+ -```bash -kubectl edit pod --namespace -``` +If you migrated to the Redpanda Operator and want to revert to using only Helm, follow these steps to uninstall the Redpanda Operator: -. Delete the resources: -+ -```bash -kubectl delete redpanda --namespace -kubectl delete helmrelease --namespace -kubectl delete helmchart --namespace -kubectl delete helmrepository --namespace -``` +include::deploy:partial$kubernetes/guides/uninstall.adoc[tag=operator] After completing these steps, the Redpanda Operator is no longer managing your Helm deployment. diff --git a/modules/shared/images/operator-flux-relationship.png b/modules/shared/images/operator-flux-relationship.png deleted file mode 100644 index fa537b1f88b8740f448e1b588b66a3d1cd4d79c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 758915 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%0AIoK~D?*6$#4!#= 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%0ARKw@+7BE6Z*131A|3g6U9 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%0DUB;TI>P1?65HI3UZhwQ+7SeUqS#H-2@j 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

;ff3X5T1C9pw0c53?uTKGw|m>j(A$;O&b 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%0DaP7$*)7Hq(dXT~lh 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

XG-h9Ck`YCR8R1F36Lq3%U{qTDTNXP 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 diff --git a/modules/troubleshoot/partials/cluster-diagnostics.adoc b/modules/troubleshoot/partials/cluster-diagnostics.adoc index 72f3251f79..7276648d80 100644 --- a/modules/troubleshoot/partials/cluster-diagnostics.adoc +++ b/modules/troubleshoot/partials/cluster-diagnostics.adoc @@ -243,14 +243,9 @@ To learn what's happening with the Redpanda Operator and the associated Redpanda kubectl logs -l app.kubernetes.io/name=operator -c manager --namespace ---- -=== Inspect Helm releases +=== Inspect the Redpanda resource -If you are running the operator in *Flux-managed mode* (`chartRef.useFlux: true`), the Redpanda Operator uses Flux to deploy the Redpanda Helm chart. By inspecting the `helmreleases.helm.toolkit.fluxcd.io` resource, you can get detailed information about the Helm installation process for your Redpanda resource: - -[,bash] ----- -kubectl get helmreleases.helm.toolkit.fluxcd.io -o yaml --namespace ----- +In the Redpanda resource, the condition section reveals the ongoing status of reconciliation. These conditions provide information on the success, failure, or pending status of various operations. To check the Redpanda resource: @@ -259,7 +254,6 @@ To check the Redpanda resource: kubectl get redpandas.cluster.redpanda.com -o yaml --namespace ---- -In both the HelmRelease and the Redpanda resource, the condition section reveals the ongoing status of the Helm installation. These conditions provide information on the success, failure, or pending status of various operations. endif::[] [[self-test]] diff --git a/modules/troubleshoot/partials/errors-and-solutions.adoc b/modules/troubleshoot/partials/errors-and-solutions.adoc index c1b0c0d2b8..7de3c86749 100644 --- a/modules/troubleshoot/partials/errors-and-solutions.adoc +++ b/modules/troubleshoot/partials/errors-and-solutions.adoc @@ -5,81 +5,8 @@ This section addresses common issues that may occur when deploying Redpanda in a endif::[] //tag::deployment[] -//tag::deployment-helm-release-not-ready[] -ifdef::env-kubernetes[] -=== HelmRelease is not ready - -If you are using the Redpanda Operator, you may see the following message while waiting for a Redpanda custom resource to be deployed: - -[,bash,role-"no-copy"] ----- -NAME READY STATUS -redpanda False HelmRepository 'redpanda/redpanda-repository' is not ready -redpanda False HelmRelease 'redpanda/redpanda' is not ready ----- - -While the deployment process can sometimes take a few minutes, a prolonged 'not ready' status may indicate an issue. Follow the steps below to investigate: - -. Check the status of the HelmRelease: -+ -[,bash] ----- -kubectl describe helmrelease --namespace ----- - -. Review the Redpanda Operator logs: -+ -[,bash] ----- -kubectl logs -l app.kubernetes.io/name=operator -c manager --namespace ----- -//end::deployment-helm-release-not-ready[] - -//tag::deployment-retries-exhausted[] -=== HelmRelease retries exhausted - -If you are running the operator in *Flux-managed mode* (`chartRef.useFlux: true`), the `HelmRelease retries exhausted` error may occur when the Helm Controller has tried to reconcile the HelmRelease a number of times, but these attempts have failed consistently. - -The Helm Controller watches for changes in HelmRelease objects. When changes are detected, it tries to reconcile the state defined in the HelmRelease with the state in the cluster. The process of reconciliation includes installation, upgrade, testing, rollback or uninstallation of Helm releases. - -You may see this error due to: - -- Incorrect configuration in the HelmRelease. -- Issues with the chart, such as a non-existent chart version or the chart repository not being accessible. -- Missing dependencies or prerequisites required by the chart. -- Issues with the underlying Kubernetes cluster, such as insufficient resources or connectivity issues. - -To debug this error do the following: - -. Check the status of the HelmRelease: -+ -```bash -kubectl describe helmrelease --namespace -``` - -. Review the Redpanda Operator logs: -+ -```bash -kubectl logs -l app.kubernetes.io/name=operator -c manager --namespace -``` - -When you find and fix the error, you must use the Flux CLI, `fluxctl`, to suspend and resume the reconciliation process: - -. https://fluxcd.io/flux/installation/#install-the-flux-cli[Install Flux CLI^]. - -. Suspend the HelmRelease: -+ -```bash -flux suspend helmrelease --namespace -``` - -. Resume the HelmRelease: -+ -```bash -flux resume helmrelease --namespace -``` -//end::deployment-retries-exhausted[] +ifdef::env-kubernetes[] //tag::deployment-pod-pending[] === StatefulSet never rolls out @@ -341,10 +268,7 @@ This error appears when you run `helm upgrade` with the `--values` flag but do n Error: UPGRADE FAILED: cannot patch "redpanda" with kind StatefulSet: StatefulSet.apps "redpanda" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbidden ---- -To fix this error, do one of the following: - -* Include all the value overrides from the previous installation or upgrade using either the `--set` or the `--values` flags. -* Use the `--reuse-values` flag. +To fix this error, include all the value overrides from the previous installation using either the `--set` or the `--values` flags. + WARNING: Do not use the `--reuse-values` flag to upgrade from one version of the Helm chart to another. This flag stops Helm from using any new values in the upgraded chart. diff --git a/modules/upgrade/pages/k-upgrade-operator.adoc b/modules/upgrade/pages/k-upgrade-operator.adoc index 29a4ea6375..5c28bcf83d 100644 --- a/modules/upgrade/pages/k-upgrade-operator.adoc +++ b/modules/upgrade/pages/k-upgrade-operator.adoc @@ -9,10 +9,6 @@ . xref:upgrade:k-compatibility.adoc[Review the Kubernetes compatibility matrix] and determine the version of the Redpanda Operator that is compatible with the Helm chart version you plan to use. The Redpanda Operator must be able to understand and manage the Helm chart and the Redpanda version you are deploying. -. If the new version of the Redpanda Operator introduces changes to the custom resource definitions (CRDs), apply these changes first. Upgrading CRDs ensures that the Kubernetes API can manage and interact with Redpanda resources according to the new specifications. -+ -include::deploy:partial$kubernetes/install-crds.adoc[] - . Back up your current Helm values for the Redpanda Operator Helm chart: + [source,bash] @@ -22,18 +18,26 @@ helm get values redpanda-controller --namespace > redpanda-operator- + You'll need to apply these overrides in the next step. -. Upgrade the Redpanda Operator. Replace `` with the version of the Redpanda Operator you want to install. +. Upgrade the Redpanda Operator. Replace `` with the version of the Redpanda Operator you want to upgrade to. + [,bash,subs="attributes+"] ---- helm repo add redpanda https://charts.redpanda.com helm repo update -helm upgrade --install redpanda-controller redpanda/operator \ +helm upgrade redpanda-controller redpanda/operator \ --namespace \ - --set image.tag= + --version \ + --set crds.enabled=true ---- + -CAUTION: Make sure to include all existing overrides, otherwise the upgrade may fail. +This command: ++ +- Pins the upgrade to a specific version of Redpanda Operator. +- Ensures the latest CRDs are applied as part of the upgrade. ++ +CAUTION: Omitting custom overrides may result in a broken or partial deployment. ++ + . Ensure that the Deployment is successfully rolled out: + @@ -48,4 +52,4 @@ deployment "redpanda-controller-operator" successfully rolled out == Next steps -xref:upgrade:k-rolling-upgrade.adoc[]. \ No newline at end of file +xref:upgrade:k-rolling-upgrade.adoc[] From 30c90dc0efa30ff5f5802a0689c74599e585199e Mon Sep 17 00:00:00 2001 From: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> Date: Wed, 2 Jul 2025 17:10:59 +0100 Subject: [PATCH 04/27] Add docs for extraClusterConfig (#1187) Co-authored-by: Chris Seto Co-authored-by: Michele Cyran --- .../pages/release-notes/helm-charts.adoc | 14 ++ .../pages/release-notes/operator.adoc | 14 ++ .../kubernetes/k-configure-helm-chart.adoc | 141 ++++++++++++++++++ .../kubernetes/extraclusterconfig.adoc | 6 + .../reset-object-storage-properties.adoc | 2 + modules/manage/partials/tiered-storage.adoc | 42 ++++-- .../partials/whole-cluster-restore.adoc | 2 + 7 files changed, 208 insertions(+), 13 deletions(-) create mode 100644 modules/manage/partials/kubernetes/extraclusterconfig.adoc create mode 100644 modules/manage/partials/kubernetes/reset-object-storage-properties.adoc diff --git a/modules/get-started/pages/release-notes/helm-charts.adoc b/modules/get-started/pages/release-notes/helm-charts.adoc index d84ed2339a..f976b9bb76 100644 --- a/modules/get-started/pages/release-notes/helm-charts.adoc +++ b/modules/get-started/pages/release-notes/helm-charts.adoc @@ -44,6 +44,20 @@ The connectors subchart has been removed from the Helm chart because it is not o TIP: For a supported and scalable Kafka Connect alternative, consider using Redpanda Connect. For more information, see xref:redpanda-connect:get-started:index.adoc[]. +=== Reference Kubernetes Secrets and ConfigMaps for Redpanda cluster configuration + +You can now set any Redpanda cluster configuration property using the new `extraClusterConfig` field. This allows you to reference values from Kubernetes Secrets or ConfigMaps. For example, use this field to inject sensitive credentials or reuse shared configurations across features like Tiered Storage, Iceberg, and disaster recovery. + +This enhancement improves: + +- Security: Avoid hardcoding secrets in Helm values or manifests. + +- Reusability: Centralize common values used by multiple features. + +- Maintainability: Better integrate with GitOps workflows and Kubernetes-native resource management. + +See xref:manage:kubernetes/k-configure-helm-chart.adoc#extra-cluster-config[Set Redpanda cluster properties from Kubernetes Secrets or ConfigMaps]. + == Redpanda chart v5.10.x === Ability to change StatefulSet replicas without restarting brokers diff --git a/modules/get-started/pages/release-notes/operator.adoc b/modules/get-started/pages/release-notes/operator.adoc index a80b98e312..fd9e96eaa4 100644 --- a/modules/get-started/pages/release-notes/operator.adoc +++ b/modules/get-started/pages/release-notes/operator.adoc @@ -72,6 +72,20 @@ The connectors subchart has been removed from the Helm chart because it is not o TIP: For a supported and scalable Kafka Connect alternative, consider using Redpanda Connect. For more information, see xref:redpanda-connect:get-started:index.adoc[]. +=== Reference Kubernetes Secrets and ConfigMaps for Redpanda cluster configuration + +You can now set any Redpanda cluster configuration property using the new `extraClusterConfig` field. This allows you to reference values from Kubernetes Secrets or ConfigMaps. For example, use this field to inject sensitive credentials or reuse shared configurations across features like Tiered Storage, Iceberg, and disaster recovery. + +This enhancement improves: + +- Security: Avoid hardcoding secrets in Helm values or manifests. + +- Reusability: Centralize common values used by multiple features. + +- Maintainability: Better integrate with GitOps workflows and Kubernetes-native resource management. + +See xref:manage:kubernetes/k-configure-helm-chart.adoc#extra-cluster-config[Set Redpanda cluster properties from Kubernetes Secrets or ConfigMaps]. + == Redpanda Operator v2.4.x link:https://github.com/redpanda-data/redpanda-operator/blob/release/v2.4.x/operator/CHANGELOG.md[Changelog^]. diff --git a/modules/manage/pages/kubernetes/k-configure-helm-chart.adoc b/modules/manage/pages/kubernetes/k-configure-helm-chart.adoc index 9ac704ad45..5a4e69208d 100644 --- a/modules/manage/pages/kubernetes/k-configure-helm-chart.adoc +++ b/modules/manage/pages/kubernetes/k-configure-helm-chart.adoc @@ -210,6 +210,147 @@ helm upgrade --install redpanda redpanda/redpanda \ -- ====== +[[extra-cluster-config]] +== Set Redpanda cluster properties from Kubernetes Secrets or ConfigMaps + +Starting in v25.1.1 of the Redpanda Operator and Redpanda Helm chart, you can set **any Redpanda cluster configuration property** by referencing Kubernetes Secrets or ConfigMaps using the `config.extraClusterConfig` field. + +This feature provides a more secure, maintainable, and declarative way to manage sensitive or shared configuration values across your Redpanda deployment. + +Use this method to: + +- Securely inject sensitive values, such as credentials for Iceberg, TLS, or object storage. +- Reuse the same value across multiple features, such as Tiered Storage, Iceberg, and disaster recovery, without duplication. +- Centralize config management in Kubernetes-native resources to support GitOps and reduce drift. + +For example, to set `iceberg_rest_catalog_client_secret` using a Secret called `iceberg-config`: + +[tabs] +====== +Operator:: ++ +-- +.`redpanda-cluster.yaml` +[,yaml] +---- +apiVersion: cluster.redpanda.com/v1alpha2 +kind: Redpanda +metadata: + name: redpanda +spec: + clusterSpec: + config: + extraClusterConfig: + iceberg_rest_catalog_client_secret: + secretRef: + name: iceberg-config + key: iceberg_rest_catalog_client_secret +---- + +```bash +kubectl apply -f redpanda-cluster.yaml --namespace +``` + +-- +Helm:: ++ +-- +[tabs] +==== +--values:: ++ +.`redpanda-config.yaml` +[,yaml] +---- + config: + extraClusterConfig: + iceberg_rest_catalog_client_secret: + secretRef: + name: iceberg-config + key: iceberg_rest_catalog_client_secret +---- ++ +```bash +helm upgrade --install redpanda redpanda/redpanda \ + --namespace --create-namespace \ + --values redpanda-configs.yaml --reuse-values +``` + +--set:: ++ +[,bash,role="no-wrap"] +---- +helm upgrade --install redpanda redpanda/redpanda \ + --namespace \ + --create-namespace \ + --set config.extraClusterConfig.iceberg_rest_catalog_client_secret.secretRef.name=iceberg-config \ + --set config.extraClusterConfig.iceberg_rest_catalog_client_secret.secretRef.key=iceberg_rest_catalog_client_secret +---- + +==== +-- +====== + +This method supports both `secretRef` and `configMapRef`: + +- Use `secretRef` for sensitive data like access keys or credentials. + +- Use `configMapRef` for shared, non-sensitive values such as URIs or feature flags. + +You can apply this approach to any Redpanda configuration key, making your deployments more secure, modular, and easier to manage at scale. + +For full configuration options, see xref:reference:properties/index.adoc[]. + +[[reset-config]] +== Reset configuration values + +You may want to reset a configuration value back to its default. The method to do this depends on how you're managing your Redpanda deployment. + +[tabs] +====== +Operator:: ++ +-- + +If you're using the Redpanda Operator and want to reset a configuration property back to its default: + +. Add the following annotation to your Redpanda custom resource to enable declarative configuration sync: ++ +[source,yaml] +---- +metadata: + annotations: + operator.redpanda.com/config-sync-mode: Declarative +---- + +. Remove the configuration key you want to reset from `spec.clusterSpec.config`. + +With this annotation, the Redpanda Operator ensures that removed keys are also removed from the Redpanda cluster configuration. + + +If this annotation is not set, the Redpanda Operator retains previously applied values even if you remove them from the custom resource. + +-- +CLI:: ++ +-- + +To reset a configuration property using the Redpanda CLI: + +- Run the xref:reference:rpk/rpk-cluster/rpk-cluster-config-set.adoc[`rpk cluster config set`] command with an empty string: + +[source,bash] +---- +rpk cluster config set "" +---- + +- Or, use the xref:reference:rpk/rpk-cluster/rpk-cluster-config-edit.adoc[`rpk cluster config edit`] command and delete the line for the property. + +If you're using a file, such as a `values.yaml` or a Redpanda resource, to manage your configuration, make sure to also remove the property from that file. Otherwise, it may be reapplied the next time you run `helm upgrade` or the Pods restart. + +-- +====== + == Configure Redpanda Console Redpanda Console is included as a subchart of the Redpanda Helm chart. diff --git a/modules/manage/partials/kubernetes/extraclusterconfig.adoc b/modules/manage/partials/kubernetes/extraclusterconfig.adoc new file mode 100644 index 0000000000..0d4845808d --- /dev/null +++ b/modules/manage/partials/kubernetes/extraclusterconfig.adoc @@ -0,0 +1,6 @@ +[TIP] +==== +Starting in Redpanda Operator v25.1.1, you can configure object storage settings using `extraClusterConfig`. This lets you securely reference sensitive values from Kubernetes Secrets or ConfigMaps, and reuse values like your bucket name across multiple features, such as Tiered Storage, Iceberg, and topic recovery. + +See xref:manage:kubernetes/k-configure-helm-chart.adoc#extra-cluster-config[Set Redpanda cluster properties from Kubernetes Secrets or ConfigMaps]. +==== diff --git a/modules/manage/partials/kubernetes/reset-object-storage-properties.adoc b/modules/manage/partials/kubernetes/reset-object-storage-properties.adoc new file mode 100644 index 0000000000..2dda487ad1 --- /dev/null +++ b/modules/manage/partials/kubernetes/reset-object-storage-properties.adoc @@ -0,0 +1,2 @@ +CAUTION: Do not set an object storage property to an empty string (`""`) or `null` to reset it. This may result in invalid or incomplete configuration. For safe ways to reset a property, see xref:manage:kubernetes/k-configure-helm-chart.adoc#reset-config[Reset configuration values]. + diff --git a/modules/manage/partials/tiered-storage.adoc b/modules/manage/partials/tiered-storage.adoc index 2f81ed9402..9ae527e684 100644 --- a/modules/manage/partials/tiered-storage.adoc +++ b/modules/manage/partials/tiered-storage.adoc @@ -33,7 +33,7 @@ rpk cluster license info - Migrating topics from one bucket or container to another is not supported. - Multi-region buckets or containers are not supported. -CAUTION: Redpanda strongly recommends that you do not re-enable Tiered Storage after previously enabling and disabling it. Re-enabling Tiered Storage can result in inconsistent data and data gaps in Tiered Storage for a topic. +CAUTION: Redpanda Data recommends that you do not re-enable Tiered Storage after previously enabling and disabling it. Re-enabling Tiered Storage can result in inconsistent data and data gaps in Tiered Storage for a topic. == Set up Tiered Storage @@ -50,14 +50,18 @@ Redpanda natively supports Tiered Storage with Amazon Simple Storage Service (S3 ifdef::env-kubernetes[] ==== Amazon S3 -TIP: If deploying Redpanda on an AWS Auto-Scaling group (ASG), keep in mind that the ASG controller terminates nodes and spins up replacements if the nodes saturate and are unable to heartbeat the controller (based on the EC2 health check). For more information, see the https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html#types-of-instance-status-checks[AWS documentation^]. Redpanda recommends deploying on Linux or Kubernetes. For more information, see xref:deploy:deployment-option/self-hosted/index.adoc[Deploy Redpanda]. +[NOTE] +==== +If you deploy Redpanda directly on AWS EC2 instances managed by an Auto-Scaling Group (ASG), be aware that ASG may terminate and replace instances based on system-level health checks. This can result in unexpected Redpanda broker terminations, risking availability or data loss. -You can configure access to Amazon S3 with either an IAM role attached to the instance or with access keys. +Redpanda Data recommends deploying on Kubernetes or using other orchestrators that understand Redpanda's stateful nature and can handle Pod lifecycle and storage gracefully. -[TIP] +See xref:deploy:deployment-option/self-hosted/index.adoc[Deploy Redpanda] for deployment best practices. ==== + +You can configure access to Amazon S3 with either an IAM role attached to the instance or with access keys. + If you need to manage and store encryption keys separately from your cloud provider, you can <> instead of the default AWS S3-managed key (SSE-S3). This option enables you to segregate data from different teams or departments and remove that data at will by removing the encryption keys. -==== ===== **Configure access with an IAM role** @@ -135,11 +139,13 @@ Replace the following placeholders: - ``: The region of your S3 bucket. - ``: The name of your S3 bucket. + -CAUTION: Do not set an object storage property to an empty string `""` or to `null` as a way to reset it to its default value. +include::manage:partial$kubernetes/reset-object-storage-properties.adoc[] + +include::manage:partial$kubernetes/extraclusterconfig.adoc[] ===== **Configure access with access keys** -. Grant an IAM user the following permissions to read and create objects in your buckets: +. In AWS, grant an IAM user the following permissions to read and create objects in your buckets: - `GetObject` - `DeleteObject` - `PutObject` @@ -253,7 +259,9 @@ Replace the following placeholders: - ``: The region of your S3 bucket. - ``: The name of your S3 bucket. + -CAUTION: Do not set an object storage property to an empty string `""` or to `null` as a way to reset it to its default value. +include::manage:partial$kubernetes/reset-object-storage-properties.adoc[] + +include::manage:partial$kubernetes/extraclusterconfig.adoc[] include::manage:partial$tiered-storage/aws-kms-key.adoc[leveloffset=+4] @@ -337,8 +345,10 @@ Replace the following placeholders: + - ``: The region of your bucket. - ``: The name of your bucket. ++ +include::manage:partial$kubernetes/reset-object-storage-properties.adoc[] -CAUTION: Do not set an object storage property to an empty string `""` or to `null` as a way to reset it to its default value. +include::manage:partial$kubernetes/extraclusterconfig.adoc[] ===== **Configure access with access keys** @@ -457,7 +467,9 @@ Replace the following placeholders: - ``: The region of your bucket. - ``: The name of your bucket. + -CAUTION: Do not set an object storage property to an empty string `""` or to `null` as a way to reset it to its default value. +include::manage:partial$kubernetes/reset-object-storage-properties.adoc[] + +include::manage:partial$kubernetes/extraclusterconfig.adoc[] include::manage:partial$tiered-storage/gcp-kms-key.adoc[leveloffset=+4] @@ -562,10 +574,12 @@ Replace the following placeholders: - ``: The name of the Azure container in your Azure account. - ``: The client ID for your Azure managed identity. -- ++ +include::manage:partial$kubernetes/reset-object-storage-properties.adoc[] -NOTE: The `serviceAccount` annotations and the `statefulset` Pod labels are essential for the Azure webhook to inject the necessary Azure-specific environment variables and the projected service account token volume into the pods. For more information, visit https://learn.microsoft.com/en-us/azure/aks/workload-identity-overview?tabs=dotnet[Microsoft Entra Workload ID with Azure Kubernetes Service (AKS)^]. +The `serviceAccount` annotations and the `statefulset` Pod labels are essential for the Azure webhook to inject the necessary Azure-specific environment variables and the projected service account token volume into the pods. For more information, visit https://learn.microsoft.com/en-us/azure/aks/workload-identity-overview?tabs=dotnet[Microsoft Entra Workload ID with Azure Kubernetes Service (AKS)^]. -CAUTION: Do not set an object storage property to an empty string `""` or to `null` as a way to reset it to its default value. +include::manage:partial$kubernetes/extraclusterconfig.adoc[] ===== **Configure access with account access keys** @@ -666,7 +680,9 @@ Replace the following placeholders: - ``: The name of your Azure account. - ``: The name of the Azure container in your Azure account. + -CAUTION: Do not set an object storage property to an empty string `""` or to `null` as a way to reset it to its default value. +include::manage:partial$kubernetes/reset-object-storage-properties.adoc[] + +include::manage:partial$kubernetes/extraclusterconfig.adoc[] - For information about how to grant access from an internet IP range (if you need to open additional routes/ports between your broker nodes and Azure Blob Storage; for example, in a hybrid cloud deployment), see the https://learn.microsoft.com/en-us/azure/storage/common/storage-network-security?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json&bc=%2Fazure%2Fstorage%2Fblobs%2Fbreadcrumb%2Ftoc.json&tabs=azure-portal#grant-access-from-an-internet-ip-range[Microsoft documentation^]. diff --git a/modules/manage/partials/whole-cluster-restore.adoc b/modules/manage/partials/whole-cluster-restore.adoc index 82ddd2e4f4..db15556b94 100644 --- a/modules/manage/partials/whole-cluster-restore.adoc +++ b/modules/manage/partials/whole-cluster-restore.adoc @@ -152,6 +152,8 @@ helm upgrade --install redpanda redpanda/redpanda --namespace --crea - `storage.tiered`: Make sure to configure the target cluster with the same Tiered Storage settings as the failed source cluster. - `config.cluster.cloud_storage_attempt_cluster_restore_on_bootstrap`: Automate cluster restore in Kubernetes. Setting to `true` is recommended when using an automated method for deployment. When bootstrapping a cluster with a given bucket, make sure that any previous cluster using the bucket is fully destroyed, otherwise Tiered Storage subsystems may interfere with each other. + +include::manage:partial$kubernetes/extraclusterconfig.adoc[] endif::[] ifndef::env-kubernetes[] From 90e64944a5c5dea9c1a5de400ea42d3642a0014c Mon Sep 17 00:00:00 2001 From: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> Date: Tue, 8 Jul 2025 17:54:22 +0100 Subject: [PATCH 05/27] Rename extraClusterConfig to extraClusterConfiguration (#1195) --- .../get-started/pages/release-notes/helm-charts.adoc | 2 +- modules/get-started/pages/release-notes/operator.adoc | 2 +- .../pages/kubernetes/k-configure-helm-chart.adoc | 10 +++++----- .../manage/partials/kubernetes/extraclusterconfig.adoc | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/get-started/pages/release-notes/helm-charts.adoc b/modules/get-started/pages/release-notes/helm-charts.adoc index f976b9bb76..08642f5c99 100644 --- a/modules/get-started/pages/release-notes/helm-charts.adoc +++ b/modules/get-started/pages/release-notes/helm-charts.adoc @@ -46,7 +46,7 @@ TIP: For a supported and scalable Kafka Connect alternative, consider using Redp === Reference Kubernetes Secrets and ConfigMaps for Redpanda cluster configuration -You can now set any Redpanda cluster configuration property using the new `extraClusterConfig` field. This allows you to reference values from Kubernetes Secrets or ConfigMaps. For example, use this field to inject sensitive credentials or reuse shared configurations across features like Tiered Storage, Iceberg, and disaster recovery. +You can now set any Redpanda cluster configuration property using the new `extraClusterConfiguration` field. This allows you to reference values from Kubernetes Secrets or ConfigMaps. For example, use this field to inject sensitive credentials or reuse shared configurations across features like Tiered Storage, Iceberg, and disaster recovery. This enhancement improves: diff --git a/modules/get-started/pages/release-notes/operator.adoc b/modules/get-started/pages/release-notes/operator.adoc index fd9e96eaa4..f10a9c6f20 100644 --- a/modules/get-started/pages/release-notes/operator.adoc +++ b/modules/get-started/pages/release-notes/operator.adoc @@ -74,7 +74,7 @@ TIP: For a supported and scalable Kafka Connect alternative, consider using Redp === Reference Kubernetes Secrets and ConfigMaps for Redpanda cluster configuration -You can now set any Redpanda cluster configuration property using the new `extraClusterConfig` field. This allows you to reference values from Kubernetes Secrets or ConfigMaps. For example, use this field to inject sensitive credentials or reuse shared configurations across features like Tiered Storage, Iceberg, and disaster recovery. +You can now set any Redpanda cluster configuration property using the new `extraClusterConfiguration` field. This allows you to reference values from Kubernetes Secrets or ConfigMaps. For example, use this field to inject sensitive credentials or reuse shared configurations across features like Tiered Storage, Iceberg, and disaster recovery. This enhancement improves: diff --git a/modules/manage/pages/kubernetes/k-configure-helm-chart.adoc b/modules/manage/pages/kubernetes/k-configure-helm-chart.adoc index 5a4e69208d..e16fda1e21 100644 --- a/modules/manage/pages/kubernetes/k-configure-helm-chart.adoc +++ b/modules/manage/pages/kubernetes/k-configure-helm-chart.adoc @@ -213,7 +213,7 @@ helm upgrade --install redpanda redpanda/redpanda \ [[extra-cluster-config]] == Set Redpanda cluster properties from Kubernetes Secrets or ConfigMaps -Starting in v25.1.1 of the Redpanda Operator and Redpanda Helm chart, you can set **any Redpanda cluster configuration property** by referencing Kubernetes Secrets or ConfigMaps using the `config.extraClusterConfig` field. +Starting in v25.1.1 of the Redpanda Operator and Redpanda Helm chart, you can set **any Redpanda cluster configuration property** by referencing Kubernetes Secrets or ConfigMaps using the `config.extraClusterConfiguration` field. This feature provides a more secure, maintainable, and declarative way to manage sensitive or shared configuration values across your Redpanda deployment. @@ -240,7 +240,7 @@ metadata: spec: clusterSpec: config: - extraClusterConfig: + extraClusterConfiguration: iceberg_rest_catalog_client_secret: secretRef: name: iceberg-config @@ -263,7 +263,7 @@ Helm:: [,yaml] ---- config: - extraClusterConfig: + extraClusterConfiguration: iceberg_rest_catalog_client_secret: secretRef: name: iceberg-config @@ -283,8 +283,8 @@ helm upgrade --install redpanda redpanda/redpanda \ helm upgrade --install redpanda redpanda/redpanda \ --namespace \ --create-namespace \ - --set config.extraClusterConfig.iceberg_rest_catalog_client_secret.secretRef.name=iceberg-config \ - --set config.extraClusterConfig.iceberg_rest_catalog_client_secret.secretRef.key=iceberg_rest_catalog_client_secret + --set config.extraClusterConfiguration.iceberg_rest_catalog_client_secret.secretRef.name=iceberg-config \ + --set config.extraClusterConfiguration.iceberg_rest_catalog_client_secret.secretRef.key=iceberg_rest_catalog_client_secret ---- ==== diff --git a/modules/manage/partials/kubernetes/extraclusterconfig.adoc b/modules/manage/partials/kubernetes/extraclusterconfig.adoc index 0d4845808d..88ebc1d961 100644 --- a/modules/manage/partials/kubernetes/extraclusterconfig.adoc +++ b/modules/manage/partials/kubernetes/extraclusterconfig.adoc @@ -1,6 +1,6 @@ [TIP] ==== -Starting in Redpanda Operator v25.1.1, you can configure object storage settings using `extraClusterConfig`. This lets you securely reference sensitive values from Kubernetes Secrets or ConfigMaps, and reuse values like your bucket name across multiple features, such as Tiered Storage, Iceberg, and topic recovery. +Starting in Redpanda Operator v25.1.1, you can configure object storage settings using `config.extraClusterConfiguration`. This lets you securely reference sensitive values from Kubernetes Secrets or ConfigMaps, and reuse values like your bucket name across multiple features, such as Tiered Storage, Iceberg, and topic recovery. See xref:manage:kubernetes/k-configure-helm-chart.adoc#extra-cluster-config[Set Redpanda cluster properties from Kubernetes Secrets or ConfigMaps]. ==== From 36027b9499d62a919914af509beda88295043c1a Mon Sep 17 00:00:00 2001 From: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> Date: Wed, 9 Jul 2025 15:22:01 +0100 Subject: [PATCH 06/27] Fix field names --- .../pages/kubernetes/k-configure-helm-chart.adoc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/manage/pages/kubernetes/k-configure-helm-chart.adoc b/modules/manage/pages/kubernetes/k-configure-helm-chart.adoc index e16fda1e21..a6b55b311d 100644 --- a/modules/manage/pages/kubernetes/k-configure-helm-chart.adoc +++ b/modules/manage/pages/kubernetes/k-configure-helm-chart.adoc @@ -242,7 +242,7 @@ spec: config: extraClusterConfiguration: iceberg_rest_catalog_client_secret: - secretRef: + secretKeyRef: name: iceberg-config key: iceberg_rest_catalog_client_secret ---- @@ -265,7 +265,7 @@ Helm:: config: extraClusterConfiguration: iceberg_rest_catalog_client_secret: - secretRef: + secretKeyRef: name: iceberg-config key: iceberg_rest_catalog_client_secret ---- @@ -283,19 +283,19 @@ helm upgrade --install redpanda redpanda/redpanda \ helm upgrade --install redpanda redpanda/redpanda \ --namespace \ --create-namespace \ - --set config.extraClusterConfiguration.iceberg_rest_catalog_client_secret.secretRef.name=iceberg-config \ - --set config.extraClusterConfiguration.iceberg_rest_catalog_client_secret.secretRef.key=iceberg_rest_catalog_client_secret + --set config.extraClusterConfiguration.iceberg_rest_catalog_client_secret.secretKeyRef.name=iceberg-config \ + --set config.extraClusterConfiguration.iceberg_rest_catalog_client_secret.secretKeyRef.key=iceberg_rest_catalog_client_secret ---- ==== -- ====== -This method supports both `secretRef` and `configMapRef`: +This method supports both `secretKeyRef` and `configMapKeyRef`: -- Use `secretRef` for sensitive data like access keys or credentials. +- Use `secretKeyRef` for sensitive data like access keys or credentials. -- Use `configMapRef` for shared, non-sensitive values such as URIs or feature flags. +- Use `configMapKeyRef` for shared, non-sensitive values such as URIs or feature flags. You can apply this approach to any Redpanda configuration key, making your deployments more secure, modular, and easier to manage at scale. From e30e8f37ccbbc42c6cd688c0a83c5bd3131f7a8d Mon Sep 17 00:00:00 2001 From: Michele Cyran Date: Fri, 13 Jun 2025 10:00:46 -0600 Subject: [PATCH 07/27] DOC-1407 single source additions for Cloud (#1139) --- local-antora-playbook.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/local-antora-playbook.yml b/local-antora-playbook.yml index c0a904527a..634fdb01d0 100644 --- a/local-antora-playbook.yml +++ b/local-antora-playbook.yml @@ -17,7 +17,7 @@ content: - url: https://github.com/redpanda-data/docs branches: [main, v/*, api, shared, site-search,'!v-end-of-life/*'] - url: https://github.com/redpanda-data/cloud-docs - branches: 'main' + branches: 'DOC-1404-Document-new-configurable-property' - url: https://github.com/redpanda-data/redpanda-labs branches: main start_paths: [docs,'*/docs'] From c872ebae94b2c6cd5bb74e66f3a473bbde4a5d64 Mon Sep 17 00:00:00 2001 From: Michele Cyran Date: Sun, 15 Jun 2025 16:25:36 -0600 Subject: [PATCH 08/27] DOC-1449 revert playbook (#1164) --- local-antora-playbook.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/local-antora-playbook.yml b/local-antora-playbook.yml index 634fdb01d0..c0a904527a 100644 --- a/local-antora-playbook.yml +++ b/local-antora-playbook.yml @@ -17,7 +17,7 @@ content: - url: https://github.com/redpanda-data/docs branches: [main, v/*, api, shared, site-search,'!v-end-of-life/*'] - url: https://github.com/redpanda-data/cloud-docs - branches: 'DOC-1404-Document-new-configurable-property' + branches: 'main' - url: https://github.com/redpanda-data/redpanda-labs branches: main start_paths: [docs,'*/docs'] From 0eea91c8c050d8c05be7c2615c090445a2a80c83 Mon Sep 17 00:00:00 2001 From: Michele Cyran Date: Thu, 17 Jul 2025 12:09:25 -0600 Subject: [PATCH 09/27] DOC-1494 Mark KC as community supported (#1211) --- modules/console/pages/config/configure-console.adoc | 2 ++ modules/console/pages/config/kafka-connect.adoc | 2 ++ modules/console/pages/config/security/authorization.adoc | 2 ++ modules/console/pages/index.adoc | 2 ++ modules/shared/partials/community-supported-kc.adoc | 5 +++++ 5 files changed, 13 insertions(+) create mode 100644 modules/shared/partials/community-supported-kc.adoc diff --git a/modules/console/pages/config/configure-console.adoc b/modules/console/pages/config/configure-console.adoc index e6f9aff0df..c1ec66844a 100644 --- a/modules/console/pages/config/configure-console.adoc +++ b/modules/console/pages/config/configure-console.adoc @@ -46,6 +46,8 @@ KAFKA_BROKERS=redpanda-0:9092,redpanda-1:9092,redpanda-2:9092 NOTE: You cannot use environment variables to configure object arrays, such as the configuration for Kafka Connect clusters. In this case, use a YAML file, and provide secrets using environment variables or command line arguments. +include::shared:partial$community-supported-kc.adoc[] + == Docker Compose example If you are using Docker Compose, you can mount the configuration file and set the environment variable in your `docker-compose.yml` file: diff --git a/modules/console/pages/config/kafka-connect.adoc b/modules/console/pages/config/kafka-connect.adoc index 5bed7a600b..84eee8a7a8 100644 --- a/modules/console/pages/config/kafka-connect.adoc +++ b/modules/console/pages/config/kafka-connect.adoc @@ -2,6 +2,8 @@ :description: Connect one or more Kafka Connect clusters with Redpanda Console. :page-aliases: console:features/kafka-connect.adoc, manage:console/kafka-connect.adoc +include::shared:partial$community-supported-kc.adoc[] + Redpanda Console provides a user interface that lets you manage multiple Kafka Connect clusters. You can inspect or patch connectors; restart, pause, and resume connector tasks; and delete connectors. Redpanda Console queries all configured Kafka Connect diff --git a/modules/console/pages/config/security/authorization.adoc b/modules/console/pages/config/security/authorization.adoc index ed5470673a..304e88d247 100644 --- a/modules/console/pages/config/security/authorization.adoc +++ b/modules/console/pages/config/security/authorization.adoc @@ -158,6 +158,8 @@ Redpanda Console provides the following predefined roles: | No limitations |=== +include::shared:partial$community-supported-kc.adoc[] + == Grant permissions through role bindings When impersonation is disabled, Redpanda Console connects to Redpanda APIs using the service account defined in: diff --git a/modules/console/pages/index.adoc b/modules/console/pages/index.adoc index f4bc59c6f8..1dd8dda8fb 100644 --- a/modules/console/pages/index.adoc +++ b/modules/console/pages/index.adoc @@ -45,6 +45,8 @@ image::schema-reg.png[] View and manage Kafka Connect clusters and connectors, simplifying the integration of external systems with your streaming data. +include::shared:partial$community-supported-kc.adoc[] + == Who should use Redpanda Console? Redpanda Console is designed for: diff --git a/modules/shared/partials/community-supported-kc.adoc b/modules/shared/partials/community-supported-kc.adoc new file mode 100644 index 0000000000..0a50ec617c --- /dev/null +++ b/modules/shared/partials/community-supported-kc.adoc @@ -0,0 +1,5 @@ +:note-caption: Community +NOTE: *Kafka Connect is community-supported on https://redpanda.com/slack[Redpanda Community Slack^]*. Redpanda Data does not provide enterprise support for Kafka Connect with Redpanda Console. For a supported and scalable Kafka Connect alternative, try xref:redpanda-connect:get-started:index.adoc[Redpanda Connect]. + +:note-caption: Note + From 7177b070c2d3108066b41af8a77774fa32c9746c Mon Sep 17 00:00:00 2001 From: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> Date: Fri, 18 Jul 2025 09:27:38 +0100 Subject: [PATCH 10/27] Remove Kafka Connect info from Kubernetes docs (#1186) Co-authored-by: Michele Cyran --- .../self-hosted/docker-image.adoc | 1 - .../kubernetes/k-deploy-connectors.adoc | 1042 +++++++++++------ .../pages/release-notes/helm-charts.adoc | 23 +- .../pages/release-notes/operator.adoc | 59 +- .../pages/kubernetes/k-manage-connectors.adoc | 351 +++++- .../monitoring/k-monitor-connectors.adoc | 5 +- .../manage/partials/monitor-connectors.adoc | 182 ++- modules/migrate/pages/kubernetes/strimzi.adoc | 11 +- .../pages/k-connector-helm-spec.adoc | 2 +- .../community-supported-connectors.adoc | 5 + .../upgrade/pages/k-upgrade-kubernetes.adoc | 2 +- 11 files changed, 1164 insertions(+), 519 deletions(-) diff --git a/modules/deploy/pages/deployment-option/self-hosted/docker-image.adoc b/modules/deploy/pages/deployment-option/self-hosted/docker-image.adoc index 7853405d3c..f5c522ff86 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/docker-image.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/docker-image.adoc @@ -1,6 +1,5 @@ = Deploy Kafka Connect in Docker :description: Learn how to use the Docker image to configure connectors for Redpanda. -:page-context-links: [{"name": "Docker", "to": "deploy:deployment-option/self-hosted/docker-image.adoc" },{"name": "Kubernetes", "to": "deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc" } ] :page-toclevels: 1 :page-categories: Deployment, Integration :env-docker: true diff --git a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc index f2ae1c112b..1a61967ce4 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc @@ -1,18 +1,16 @@ = Deploy Kafka Connect in Kubernetes -:description: Learn how to deploy and configure Kafka Connect using Helm. +:description: pass:q[Learn how to deploy and configure Kafka Connect using the standalone `connectors` Helm chart.] :link-dockerhub: https://hub.docker.com/r/redpandadata/connectors/tags -:page-context-links: [{"name": "Docker", "to": "deploy:deployment-option/self-hosted/docker-image.adoc" },{"name": "Kubernetes", "to": "deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc" } ] :page-toclevels: 1 :env-kubernetes: true :page-categories: Deployment :page-aliases: deploy:deployment-option/cloud/managed-connectors.adoc -This topic describes how to use the Redpanda Helm chart to configure and deploy Kafka Connect in Kubernetes. +This topic describes how to deploy Kafka Connect in Kubernetes using the standalone `connectors` Helm chart. include::shared:partial$community-supported-connectors.adoc[] -The Redpanda Connectors Helm chart includes a pre-configured instance of https://redpanda.com/guides/kafka-tutorial/what-is-kafka-connect[Kafka Connect] that works -with Redpanda. The underlying Docker image contains _only_ the MirrorMaker2 connector but you can build a custom image to install additional connectors. +The `connectors` Helm chart is a standalone chart that deploys an instance of https://redpanda.com/guides/kafka-tutorial/what-is-kafka-connect[Kafka Connect]. The underlying Docker image contains _only_ the MirrorMaker2 connector but you can build a custom image to install additional connectors. TIP: Try xref:redpanda-connect:home:index.adoc[Redpanda Connect] for a faster way to build streaming data pipelines. It's fully compatible with the Kafka API but eliminates the complex setup and maintenance of Kafka Connect. Redpanda Connect also comes with built-in connectors to support AI integrations. @@ -51,567 +49,752 @@ To check if you have Helm installed: helm version ``` -- For better readability, you need https://stedolan.github.io/jq/download/[jq^] to parse JSON results when using the Kafka Connect REST API. +- You need https://stedolan.github.io/jq/download/[jq^] to parse JSON results when using the Kafka Connect REST API. - An understanding of https://kafka.apache.org/20/documentation.html#connect_overview[Kafka Connect]. -== Limitations +== Migrating from the subchart -*No TLS or SASL support for the Kafka Connect REST API*: All incoming traffic to Kafka Connect, such as from Redpanda Console, is unauthenticated and sent in plain text. Although Kafka Connect supports TLS for network encryption and SASL for authentication, the Redpanda Connectors subchart does not. Outgoing traffic from Kafka Connect to Redpanda brokers does support TLS and SASL. +If you're currently using the connectors subchart (part of the Redpanda Helm chart), you need to migrate to the standalone connectors chart. Follow these steps: -== Deploy the Helm chart +NOTE: The example values assume a Redpanda deployment named `redpanda` in the `default` namespace. Adjust the values according to your actual deployment. -The Redpanda Helm chart includes Kafka Connect (the Redpanda Connectors Helm chart) as a subchart so that you can deploy a Redpanda cluster, Kafka Connect, and Redpanda Console using a single chart. You can enable and configure the subchart in the `connectors` section of the Helm values. +. Copy your existing connectors configuration from your Redpanda values file: ++ +Extract the `connectors` section from your current Redpanda Helm values and create a new values file for the standalone chart. ++ +.Example migration +[source,yaml] +---- +# Before (in Redpanda values.yaml) +connectors: + enabled: true + auth: + sasl: + enabled: true + brokerTLS: + enabled: true -The subchart includes a Pod that runs Kafka Connect and the built-in connectors. The Pod is managed by a Deployment that you can configure in the Helm values under `connectors.deployment`. Redpanda Console connects to Kafka Connect through the default `redpanda-connectors` Service. Kafka Connect connects to the Redpanda brokers through the default `redpanda` Service. +# After (in new connectors-values.yaml) +connectors: + bootstrapServers: "redpanda-0.redpanda.default.svc.cluster.local:9093,redpanda-1.redpanda.default.svc.cluster.local:9093,redpanda-2.redpanda.default.svc.cluster.local:9093" +auth: + sasl: + enabled: true +brokerTLS: + enabled: true +---- -image::shared:k-connectors-architecture.png['Redpanda Connectors deployed in a Kubernetes cluster with three worker nodes.'] +. Remove the connectors configuration from your Redpanda values file: ++ +[source,yaml] +---- +# Remove or comment out the entire connectors section +# connectors: +# enabled: true +# ... +---- -NOTE: Do not schedule Pods that run Kafka Connect on the same nodes as Redpanda brokers. Redpanda brokers require access to all node resources. See <> and <>. +. Upgrade your Redpanda deployment: ++ +[,bash] +---- +helm upgrade redpanda redpanda/redpanda \ + --namespace \ + --values redpanda-values.yaml +---- ++ +This will remove the connectors subchart deployment. -When deploying Kafka Connect with Helm, you can choose between two modes: +. Deploy the standalone connectors chart: ++ +[,bash] +---- +helm install redpanda-connectors redpanda/connectors \ + --namespace \ + --values connectors-values.yaml +---- -[cols="1a,2a,2a", options="header"] -|=== -|Mode |Description |Recommended For +. <> to point to the new service name if needed. -|<> -| -When `connectors.deployment.create` is `false`, the chart automatically configures and creates the Deployment resource with the following: +== Deploy the standalone Helm chart -- The URLs of Redpanda brokers that Kafka Connect should connect to -- TLS settings for Redpanda brokers that have TLS enabled -- SASL authentication settings for Redpanda brokers that have SASL enabled +The `connectors` Helm chart is a standalone chart that you deploy separately from your Redpanda cluster. -|A streamlined deployment with the option to modify specific configurations. +The chart includes a Pod that runs Kafka Connect and the built-in connectors. The Pod is managed by a Deployment that you configure through Helm values. To connect Redpanda Console to your Kafka Connect deployment, you'll need to configure Redpanda Console with the appropriate service endpoint. -|<> -| -When `connectors.deployment.create` is `true`, you are responsible for configuring all aspects of the Deployment resource using the Helm values. +image::shared:k-connectors-architecture.png[Redpanda Connectors deployed in a Kubernetes cluster with three worker nodes.] -|Full control over the Deployment resource and its configurations. -|=== +NOTE: Do not schedule Pods that run Kafka Connect on the same nodes as Redpanda brokers. Redpanda brokers require access to all node resources. See <> and <>. + +=== Deploy Kafka Connect + +To deploy Kafka Connect using the standalone chart, you need to configure connection settings to your Redpanda cluster. + +. Create a values file for the connectors chart: ++ +.`connectors-values.yaml` +[source,yaml] +---- +# Connection to Redpanda brokers +connectors: + bootstrapServers: "" -=== Automatic mode +# Configure TLS if your Redpanda cluster has TLS enabled +brokerTLS: + enabled: true + ca: + secretRef: "redpanda-default-cert" + secretNameOverwrite: "ca.crt" + +# Configure SASL if your Redpanda cluster has SASL enabled +auth: + sasl: + enabled: false + mechanism: "scram-sha-512" + userName: "" + secretRef: "" +---- ++ +[NOTE] +==== +To get the correct bootstrap servers for your Redpanda cluster, run: -In automatic mode, the subchart is automatically configured using the values in the Redpanda Helm chart. You don't need to add any additional configuration. The chart automatically configures the Deployment resource with the values needed for Kafka Connect to communicate with your Redpanda cluster and for Redpanda Console to communicate with Kafka Connect. +```bash +kubectl run -it --restart=Never --rm --image busybox busybox -- ash -c 'nslookup -type=srv _kafka._tcp...svc.cluster.local | tail -n +4 | head -n -1 | awk '"'"'{print $7 ":" $6}'"'"'' +``` -NOTE: All incoming traffic to Kafka Connect, such as from Redpanda Console, is unauthenticated (no SASL) and sent in plain text (no TLS). See <>. +Replace `` and `` with your actual release name and namespace. +==== -. Deploy the Redpanda Helm chart with connectors enabled. +. Deploy the connectors chart: + -Configure any additional Helm values that you want to override in the `clusterSpec` settings. See <> for details. +[,bash] +---- +helm upgrade --install redpanda-connectors redpanda/connectors \ + --namespace \ + --create-namespace \ + --values connectors-values.yaml +---- + +Replace `` with the namespace where you want to deploy Kafka Connect. + +. <> using the Kafka Connect REST API or by configuring Redpanda Console. + +=== Example values file + +Here's a complete example values file that shows common configuration options: + +.`connectors-values.yaml` +[source,yaml] +---- +# Connection to Redpanda brokers +connectors: + bootstrapServers: "redpanda-0.redpanda.redpanda.svc.cluster.local:9093" + +# TLS configuration (disabled for local testing) +brokerTLS: + enabled: false + +# SASL authentication (disabled for local testing) +auth: + sasl: + enabled: false + +# Resource configuration for local testing +container: + resources: + request: + cpu: "0.5" + memory: 1Gi + limits: + cpu: "1" + memory: 1Gi + javaMaxHeapSize: 512M + +# Single replica for local testing (testing scaling to 2) +deployment: + replicas: 2 + +# Monitoring disabled for local testing +monitoring: + enabled: false + +# Logging +logging: + level: "info" +---- + +[[console]] +== Configure Redpanda Console to connect to Kafka Connect + +To use Redpanda Console to manage your Kafka Connect deployment, you need to configure Redpanda Console to connect to the Kafka Connect service. + +=== Check your Redpanda Console version + +Redpanda Console configuration syntax varies by major version. Before configuring, determine which version you're using: + +[,bash] +---- +# Check console version from deployment +kubectl get deployment -n redpanda-console -o jsonpath='{.spec.template.spec.containers[0].image}' + +# Or check from running pod +kubectl get pod -n -l app.kubernetes.io/name=console -o jsonpath='{.items[0].spec.containers[0].image}' + +# Or check from console logs +kubectl logs -n -l app.kubernetes.io/name=console | grep "started Redpanda Console" +---- + +If you see output like `redpandadata/console:v2.8.0`, you're using Console v2.x. If you see `redpandadata/console:v3.0.0`, you're using Console v3.x. + +=== Redpanda Console deployed as part of Redpanda chart + +If the Redpanda Console is deployed as part of the Redpanda Helm chart (the default), add the following configuration to your Redpanda values: + [tabs] ====== -Operator:: +Console v2.x:: + --- -.`redpanda-cluster.yaml` -[,yaml] +[source,yaml] ---- -apiVersion: cluster.redpanda.com/v1alpha2 -kind: Redpanda -metadata: - name: redpanda -spec: - chartRef: {} - clusterSpec: - connectors: - enabled: true +console: + enabled: true + console: + config: + connect: + enabled: true + clusters: + - name: "redpanda-connectors" + url: "http://redpanda-connectors:8083" + tls: + enabled: false +---- + +Console v3.x:: ++ +[source,yaml] ---- +console: + enabled: true + console: + config: + kafkaConnect: + enabled: true + clusters: + - name: "redpanda-connectors" + url: "http://redpanda-connectors:8083" + tls: + enabled: false +---- +====== -```bash -kubectl apply -f redpanda-cluster.yaml --namespace -``` +NOTE: If you deployed the connectors chart with a different release name, update the URL accordingly. The service name follows the pattern `:8083`. --- -Helm:: -+ --- +If Redpanda Console is deployed in a different namespace than Kafka Connect, use the fully qualified service name: [tabs] -==== ---values:: +====== +Console v2.x:: + -.`redpanda-connectors.yaml` [source,yaml] ---- -connectors: +console: enabled: true ----- + console: + config: + connect: + enabled: true + clusters: + - name: "redpanda-connectors" + url: "http://redpanda-connectors..svc.cluster.local:8083" + tls: + enabled: false +---- + +Console v3.x:: + -```bash -helm upgrade --install redpanda redpanda/redpanda --namespace --create-namespace \ - --values redpanda-connectors.yaml --reuse-values -``` +[source,yaml] +---- +console: + enabled: true + console: + config: + kafkaConnect: + enabled: true + clusters: + - name: "redpanda-connectors" + url: "http://redpanda-connectors..svc.cluster.local:8083" + tls: + enabled: false +---- +====== + +Update your Redpanda deployment: ---set:: -+ [,bash] ---- -helm upgrade --install redpanda redpanda/redpanda \ +helm upgrade redpanda redpanda/redpanda \ --namespace \ - --create-namespace \ - --set connectors.enabled=true + --values redpanda-values.yaml ---- -==== --- -====== - -. <> using Redpanda Console or the Kafka Connect REST API. +=== Troubleshooting Redpanda Console connectivity -=== Manual mode +If you see "Kafka Connect is not configured in Redpanda Console" or cannot access connectors: -In manual mode, you are responsible for configuring the subchart using the `connectors.connectors` and `connectors.deployment` settings in the Helm values. +. Ensure you're using the correct configuration syntax for your Redpanda Console version (see <>). -In this mode, you have full control over the Deployment resource and its configurations. However, no configurations are provided for you automatically. - -. Deploy the Redpanda Helm chart with connectors enabled. +. Check if Redpanda Console can connect to Kafka Connect: + -Make sure to configure the following: +[,bash] +---- +kubectl logs -n -l app.kubernetes.io/name=console --tail=20 +---- + --- -- `connectors.connectors.bootstrapServers`: Kafka API endpoints on the Redpanda brokers for Kafka Connect to connect to. -- `connectors.connectors.brokerTLS` (if `tls.enabled` is `true`): The brokers' TLS settings. -- `connectors.auth.sasl` (if `auth.sasl.enabled` is `true`): The brokers' SASL authentication settings. --- +Look for these successful connection messages: + -See <> for details. +---- +"creating Kafka connect HTTP clients and testing connectivity to all clusters" +"tested Kafka connect cluster connectivity","successful_clusters":1,"failed_clusters":0" +"successfully create Kafka connect service" +---- + +. Verify Redpanda Console can reach Kafka Connect service: + -[tabs] -====== -Operator:: +[,bash] +---- +kubectl exec -n deployment/redpanda-console -- curl -s http://redpanda-connectors..svc.cluster.local:8083 +---- + --- -.`redpanda-cluster.yaml` -[,yaml] +This should return Kafka Connect version information. + +. Verify the connector service exists and is accessible: ++ +[,bash] ---- -apiVersion: cluster.redpanda.com/v1alpha2 -kind: Redpanda -metadata: - name: redpanda -spec: - chartRef: {} - clusterSpec: - connectors: - enabled: true - deployment: - create: true - connectors: - bootstrapServers: "" - #brokerTLS: - #auth: - #sasl: +kubectl get svc -n | grep connectors ---- -```bash -kubectl apply -f redpanda-cluster.yaml --namespace -``` +. If configuration changes aren't taking effect: ++ +[,bash] +---- +kubectl delete pod -n -l app.kubernetes.io/name=console +---- --- -Helm:: +=== Verification test + +After you've deployed the connectors chart, you can verify everything is working with this test: + +. Get the connector Pod name: + --- +[,bash] +---- +POD_NAME=$(kubectl get pod -l app.kubernetes.io/name=connectors --namespace -o jsonpath='{.items[0].metadata.name}') +---- -[tabs] -==== ---values:: +. Test basic connectivity: + -.`redpanda-connectors.yaml` -[source,yaml] +[,bash] ---- -connectors: - enabled: true - deployment: - create: true - connectors: - bootstrapServers: "" - #brokerTLS - #auth: - #sasl: +echo "Testing Kafka Connect REST API..." +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083 | jq '.version' ---- + +. List available connector plugins: + -```bash -helm upgrade --install redpanda redpanda/redpanda --namespace --create-namespace \ - --values redpanda-connectors.yaml --reuse-values -``` +[,bash] +---- +echo "Available connector plugins:" +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083/connector-plugins | jq '.[].class' +---- ---set:: +. Test cluster connectivity: + [,bash] ---- -helm upgrade --install redpanda redpanda/redpanda \ - --namespace \ - --create-namespace \ - --set connectors.enabled=true \ - --set connectors.deployment.create=true \ - --set connectors.connectors.bootstrapServers="" +echo "Testing Redpanda cluster connectivity..." +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083/connectors ---- -==== --- -====== +If all commands completed without errors, Kafka Connect is working correctly -. <> using Redpanda Console or the Kafka Connect REST API. +If any command fails, refer to the <> section. == Configuration advice -This section provides advice for configuring the Redpanda Connectors subchart. All settings are nested in the `connectors` property of the Redpanda Helm chart. For all available settings, see xref:reference:k-connector-helm-spec.adoc[]. +This section provides advice for configuring the standalone `connectors` Helm chart. For all available settings, see xref:reference:k-connector-helm-spec.adoc[]. -=== Name overrides +[[security-configuration]] +=== Security configuration -Deploying multiple instances of the same Helm chart in a Kubernetes cluster can lead to naming conflicts. Using `nameOverride` and `fullnameOverride` helps differentiate between them. If you have a production and staging environment, different names help to avoid confusion. +This section covers security-related configuration for the `connectors` Helm chart. -- Use `nameOverride` to customize: +==== Authentication -** The default labels `app.kubernetes.io/component=` and `app.kubernetes.io/name=` -** The suffix in the name of the resources `redpanda-` -- Use `fullnameOverride` to customize the full name of the resources such as the Deployment and Services. +If your Redpanda cluster has SASL enabled, configure SASL authentication for secure communication with your Kafka connectors. [source,yaml] ---- -connectors: - nameOverride: 'redpanda-connector-production' - fullnameOverride: 'redpanda-connector-instance-prod' +auth: + sasl: + enabled: true + mechanism: "SCRAM-SHA-512" + userName: "admin" + secretRef: "sasl-password-secret" ---- -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#nameoverride[Helm specification]. +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#auth[Helm specification]. -=== Labels +==== TLS configuration -Kubernetes labels help you to organize, query, and manage your resources. Use labels to categorize Kubernetes resources in different deployments by environment, purpose, or team. +If your Redpanda cluster has TLS enabled, configure TLS settings for secure communication: [source,yaml] ---- -connectors: - commonLabels: - env: 'production' +brokerTLS: + enabled: true + ca: + secretRef: "redpanda-default-cert" + secretNameOverwrite: "ca.crt" ---- -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#commonlabels[Helm specification]. +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#brokertls[Helm specification]. -=== Tolerations +==== Service account -Tolerations and taints allow Pods to be scheduled onto nodes where they otherwise wouldn't. If you have nodes dedicated to Kafka Connect with a taint `dedicated=redpanda-connectors:NoSchedule`, the following toleration allows the Pods to be scheduled on them. +Restricting permissions is a best practice. Assign a dedicated service account for each deployment or app. [source,yaml] ---- -connectors: - tolerations: - - key: "dedicated" - operator: "Equal" - value: "redpanda-connectors" - effect: "NoSchedule" +serviceAccount: + create: true + name: "redpanda-connector-service-account" ---- -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#tolerations[Helm specification]. +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#serviceaccount[Helm specification]. -=== Docker image +[[scalability-and-reliability]] +=== Scalability and reliability -You can specify the image tag to deploy a known version of the Docker image. Avoid using the `latest` tag, which can lead to unexpected changes. +This section covers configuration for scalable and reliable deployments. -If you're using a private repository, always ensure your nodes have the necessary credentials to pull the image. +==== Number of replicas -[source,yaml] ----- -connectors: - image: - repository: "redpanda/connectors" - tag: "1.2.3" ----- +You can scale the Kafka Connect Pods by modifying the `deployment.replicas` parameter in the Helm values. This parameter allows you to handle varying workloads by increasing or decreasing the number of running instances. -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#image[Helm specification]. +```yml +deployment: + replicas: 3 +``` -=== Kafka Connect +The `replicas: 3` setting ensures that three instances of the Kafka Connect Pod will be running. You can adjust this number based on your needs. -You can configure Kafka Connect using the `connectors` settings. +TIP: Redpanda Data recommends using an autoscaler such as https://keda.sh/[Keda] to increase the number of Pod replicas automatically when certain conditions, such as high CPU or memory usage, are met. -Change the default REST API port only if it conflicts with an existing port. +==== Container resources -The `bootstrapServers` setting should point to the Kafka API endpoints on your Redpanda brokers. +Specify resource requests and limits. Ensure that `javaMaxHeapSize` is not greater than `container.resources.limits.memory`. -NOTE: If you install the chart in automatic mode, `bootstrapServers` is set automatically. +[source,yaml] +---- +container: + resources: + request: + cpu: 1 + memory: 1Gi + limits: + cpu: 2 + memory: 2Gi + javaMaxHeapSize: 2G + javaGCLogEnabled: false +---- -If you want to use Schema Registry, ensure the URL is set to the IP address or domain name of a Redpanda broker and that it includes the Schema Registry port. +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#container[Helm specification]. + +==== Deployment strategy + +For smooth and uninterrupted updates, use the default `RollingUpdate` strategy. Additionally, set a budget to ensure a certain number of Pod replicas remain available during the update. [source,yaml] ---- -connectors: - connectors: - restPort: 8082 - bootstrapServers: "redpanda-broker-0:9092" - schemaRegistryURL: "http://schema-registry.default.svc.cluster.local:8081" +deployment: + strategy: + type: "RollingUpdate" + updateStrategy: + type: "RollingUpdate" + budget: + maxUnavailable: 1 ---- -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#connectors[Helm specification]. +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#deployment[Helm specification]. -=== Authentication +==== Affinity rules -If your Redpanda cluster has SASL enabled, configure SASL authentication for secure communication with your Kafka connectors. If you install the Redpanda Helm chart in automatic mode, SASL authentication is configured automatically. +Affinities control Pod placement in the cluster based on various conditions. Set these according to your high availability and infrastructure needs. -[source,yaml] +[source,yaml,lines=8+16] ---- -connectors: - auth: - sasl: - enabled: true - mechanism: "SCRAM-SHA-512" - userName: "admin" - secretRef: "sasl-password-secret" +deployment: + podAntiAffinity: + topologyKey: kubernetes.io/hostname + type: hard + weight: 100 + custom: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: "app" + operator: "In" + values: + - "redpanda-connector" + topologyKey: "kubernetes.io/hostname" + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + labelSelector: + matchExpressions: + - key: "app" + operator: "In" + values: + - "redpanda-connector" + topologyKey: "kubernetes.io/zone" ---- -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#auth[Helm specification]. +In this example: -=== Container resources +- The `requiredDuringSchedulingIgnoredDuringExecution` section ensures that the Kubernetes scheduler doesn't place two Pods with the same `app: redpanda-connector` label on the same node due to the `topologyKey: kubernetes.io/hostname`. -Specify resource requests and limits. Ensure that `javaMaxHeapSize` is not greater than `container.resources.limits.memory`. +- The `preferredDuringSchedulingIgnoredDuringExecution` section is a soft rule that tries to ensure the Kubernetes scheduler doesn't place two Pods with the same `app: redpanda-connector` label in the same zone. However, if it's not possible, the scheduler can still place the Pods in the same zone. + +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#deployment[Helm specification]. + +==== Tolerations + +Tolerations and taints allow Pods to be scheduled onto nodes where they otherwise wouldn't. If you have nodes dedicated to Kafka Connect with a taint `dedicated=redpanda-connectors:NoSchedule`, the following toleration allows the Pods to be scheduled on them. [source,yaml] ---- -connectors: - container: - resources: - requests: - cpu: 1 - memory: 1Gi - limits: - cpu: 2 - memory: 2Gi - javaMaxHeapSize: 2G - javaGCLogEnabled: false +tolerations: + - key: "dedicated" + operator: "Equal" + value: "redpanda-connectors" + effect: "NoSchedule" ---- -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#container[Helm specification]. +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#tolerations[Helm specification]. -=== Logging +==== Node selection -In production, use the `info` logging level to avoid overwhelming the storage. For debugging purposes, temporarily change the logging level to `debug`. +Use node selectors to ensure connectors are scheduled on appropriate nodes and avoid scheduling on Redpanda broker nodes: [source,yaml] ---- -connectors: - logging: - level: "info" +# Example: Schedule on nodes with specific labels +nodeSelector: + workload-type: "kafka-connect" + +# Or use node affinity for more complex selection +deployment: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: "kubernetes.io/hostname" + operator: "NotIn" + values: ["redpanda-node-1", "redpanda-node-2", "redpanda-node-3"] ---- -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#logging[Helm specification]. +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#nodeselector[Helm specification]. -=== Monitoring +==== Graceful shutdown -If you have the https://prometheus-operator.dev/[Prometheus Operator], enable monitoring to deploy a PodMonitor resource for Kafka Connect. Observability is essential in production environments. +If your connectors require additional time for a graceful shutdown, modify the `terminationGracePeriodSeconds`. [source,yaml] ---- -connectors: - monitoring: - enabled: true +deployment: + terminationGracePeriodSeconds: 30 ---- -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#monitoring[Helm specification]. +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#deployment[Helm specification]. -See also: xref:manage:kubernetes/monitoring/k-monitor-connectors.adoc[] +[[monitoring-and-observability]] +=== Monitoring and observability -=== Number of replicas +This section covers monitoring, logging, and health check configuration. -You can scale the Kafka Connect Pods by modifying the `deployment.replicas` parameter in the Helm values. This parameter allows you to handle varying workloads by increasing or decreasing the number of running instances. +==== Monitoring -```yml -connectors: +If you have the https://prometheus-operator.dev/[Prometheus Operator], enable monitoring to deploy a PodMonitor resource for Kafka Connect. + +[source,yaml] +---- +monitoring: enabled: true - deployment: - create: true - replicas: 3 -``` +---- -The `replicas: 3` setting ensures that three instances of the Kafka Connect Pod will be running. You can adjust this number based on your needs. +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#monitoring[Helm specification]. -TIP: Redpanda Data recommends using an autoscaler such as https://keda.sh/[Keda] to increase the number of Pod replicas automatically when certain conditions, such as high CPU or memory usage, are met. +See also: xref:manage:kubernetes/monitoring/k-monitor-connectors.adoc[] -=== Deployment strategy +==== Logging -For smooth and uninterrupted updates, use the default `RollingUpdate` strategy. Additionally, set a budget to ensure a certain number of Pod replicas remain available during the update. +Use the `info` logging level to avoid overwhelming the storage. For debugging purposes, temporarily change the logging level to `debug`. [source,yaml] ---- -connectors: - deployment: - strategy: - type: "RollingUpdate" - updateStrategy: - type: "RollingUpdate" - budget: - maxUnavailable: 1 +logging: + level: "info" ---- -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#deployment[Helm specification]. +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#logging[Helm specification]. -=== Probes +==== Probes Probes determine the health and readiness of your Pods. Configure them based on the startup behavior of your connectors. [source,yaml] ---- -connectors: - deployment: - livenessProbe: - initialDelaySeconds: 60 - periodSeconds: 10 - readinessProbe: - initialDelaySeconds: 30 - periodSeconds: 10 +deployment: + livenessProbe: + initialDelaySeconds: 60 + periodSeconds: 10 + readinessProbe: + initialDelaySeconds: 30 + periodSeconds: 10 ---- For all available settings, see the xref:reference:k-connector-helm-spec.adoc#deployment[Helm specification]. -=== Deployment history +[[data-management]] +=== Data management -Keeping track of your deployment's history is beneficial for rollback scenarios. Adjust the `revisionHistoryLimit` according to your storage considerations. +This section covers configuration related to data handling and topic management. + +==== Topics + +Kafka Connect leverages internal topics to track processed data, enhancing its fault tolerance: + +* The offset topic logs the last processed position from the external data source. +* In events like failures or restarts, the connector uses this logged position to resume operations, ensuring no data duplication or omission. [source,yaml] ---- connectors: - deployment: - progressDeadlineSeconds: 600 - revisionHistoryLimit: 10 + storage: + topic: + offset: _internal_connectors_offsets ---- -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#deployment[Helm specification]. +Here, `_internal_connectors_offsets` is the dedicated Kafka topic where Kafka Connect persists the offsets of the source connector. -=== Affinity rules +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#connectors[Helm specification]. -Affinities control Pod placement in the cluster based on various conditions. Set these according to your high availability and infrastructure needs. +==== Producers -[source,yaml,lines=8+16] +When a source connector retrieves data from an external system for Redpanda, it assumes the role of a producer: + +* The source connector is responsible for transforming the external data into Kafka-compatible messages. +* It then produces (writes) these messages to a specified Kafka topic. + +The `producerBatchSize` and `producerLingerMS` settings specify how Kafka Connect groups messages before producing them. + +[source,yaml] ---- connectors: - deployment: - podAntiAffinity: - topologyKey: kubernetes.io/hostname - type: hard - weight: 100 - custom: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: "app" - operator: "In" - values: - - "redpanda-connector" - topologyKey: "kubernetes.io/hostname" - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 100 - podAffinityTerm: - labelSelector: - matchExpressions: - - key: "app" - operator: "In" - values: - - "redpanda-connector" - topologyKey: "kubernetes.io/zone" + producerBatchSize: 131072 + producerLingerMS: 1 ---- -In this example: +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#connectors[Helm specification]. -- The `requiredDuringSchedulingIgnoredDuringExecution` section ensures that the Kubernetes scheduler doesn't place two Pods with the same `app: redpanda-connector` label on the same node due to the `topologyKey: kubernetes.io/hostname`. +=== General configuration -- The `preferredDuringSchedulingIgnoredDuringExecution` section is a soft rule that tries to ensure the Kubernetes scheduler doesn't place two Pods with the same `app: redpanda-connector` label in the same zone. However, if it's not possible, the scheduler can still place the Pods in the same zone. +This section covers other important configuration settings. -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#deployment[Helm specification]. +==== Name overrides -=== Graceful shutdown +Deploying multiple instances of the same Helm chart in a Kubernetes cluster can lead to naming conflicts. Using `nameOverride` and `fullnameOverride` helps differentiate between them. If you have a production and staging environment, different names help to avoid confusion. -If your connectors require additional time for a graceful shutdown, modify the `terminationGracePeriodSeconds`. +- Use `nameOverride` to customize: + +** The default labels `app.kubernetes.io/component=` and `app.kubernetes.io/name=` +** The suffix in the name of the resources `redpanda-` +- Use `fullnameOverride` to customize the full name of the resources such as the Deployment and Services. [source,yaml] ---- -connectors: - deployment: - terminationGracePeriodSeconds: 30 +nameOverride: 'redpanda-connector-production' +fullnameOverride: 'redpanda-connector-instance-prod' ---- -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#deployment[Helm specification]. +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#nameoverride[Helm specification]. -=== Service account +==== Labels -Restricting permissions is a best practice. Assign a dedicated service account for each deployment or app. +Kubernetes labels help you to organize, query, and manage your resources. Use labels to categorize Kubernetes resources in different deployments by environment, purpose, or team. [source,yaml] ---- -connectors: - serviceAccount: - create: true - name: "redpanda-connector-service-account" +commonLabels: + env: 'production' ---- -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#serviceaccount[Helm specification]. - -=== Producers +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#commonlabels[Helm specification]. -When a source connector retrieves data from an external system for Redpanda, it assumes the role of a producer: +==== Docker image -* The source connector is responsible for transforming the external data into Kafka-compatible messages. -* It then produces (writes) these messages to a specified Kafka topic. +You can specify the image tag to deploy a known version of the Docker image. Avoid using the `latest` tag, which can lead to unexpected changes. -The `producerBatchSize` and `producerLingerMS` settings specify how Kafka Connect groups messages before producing them. +If you're using a private repository, always ensure your nodes have the necessary credentials to pull the image. [source,yaml] ---- -connectors: - connectors: - producerBatchSize: 131072 - producerLingerMS: 1 +image: + repository: "redpanda/connectors" + tag: "1.2.3" ---- -For all available settings, see the xref:reference:k-connector-helm-spec.adoc#connectors[Helm specification]. +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#image[Helm specification]. -=== Topics +==== Kafka Connect configuration -Kafka Connect leverages internal topics to track processed data, enhancing its fault tolerance: +You can configure Kafka Connect connection settings. -* The offset topic logs the last processed position from the external data source. -* In events like failures or restarts, the connector uses this logged position to resume operations, ensuring no data duplication or omission. +Change the default REST API port only if it conflicts with an existing port. + +The `bootstrapServers` setting should point to the Kafka API endpoints on your Redpanda brokers. + +If you want to use Schema Registry, ensure the URL is set to the IP address or domain name of a Redpanda broker and that it includes the Schema Registry port. [source,yaml] ---- connectors: - connectors: - storage: - topic: - offset: _internal_connectors_offsets + restPort: 8082 + bootstrapServers: "redpanda-broker-0:9092" + schemaRegistryURL: "http://schema-registry.default.svc.cluster.local:8081" ---- -Here, `_internal_connectors_offsets` is the dedicated Kafka topic where Kafka Connect persists the offsets of the source connector. - For all available settings, see the xref:reference:k-connector-helm-spec.adoc#connectors[Helm specification]. -== Verify the deployment - -To verify that the deployment was successful, you can use either Redpanda Console or the Kafka Connect REST API: +==== Deployment history -=== Verify in Redpanda Console +Keeping track of your deployment's history is beneficial for rollback scenarios. Adjust the `revisionHistoryLimit` according to your storage considerations. -. Expose Redpanda Console to your localhost: -+ -[,bash] +[source,yaml] ---- -kubectl --namespace port-forward svc/redpanda-console 8080:8080 +deployment: + progressDeadlineSeconds: 600 + revisionHistoryLimit: 10 ---- -+ -This command actively runs in the command-line window. To execute other commands while the command is running, open another command-line window. - -. Open Redpanda Console on http://localhost:8080. -. Go to *Connectors*. - -You should see: +For all available settings, see the xref:reference:k-connector-helm-spec.adoc#deployment[Helm specification]. -- A list of available connectors (types) -- The address of your Kafka Connect cluster -- The version of Kafka Connect that you are running +== Verify the deployment -From here, you can create and configure instances of your connectors. +To verify that the deployment was successful, you can use the Kafka Connect REST API or check the deployment in Redpanda Console (if configured). === Verify with the Kafka Connect REST API @@ -621,6 +804,29 @@ From here, you can create and configure instances of your connectors. ---- kubectl get pod -l app.kubernetes.io/name=connectors --namespace ---- ++ +Expected output should show pods in `Running` status: ++ +[,bash,.no-copy] +---- +NAME READY STATUS RESTARTS AGE +redpanda-connectors-6d64b948f6-dk484 1/1 Running 0 5m +---- + +. Check if the Kafka Connect service is accessible: ++ +[,bash] +---- +kubectl get svc -l app.kubernetes.io/name=connectors --namespace +---- ++ +Expected output: ++ +[,bash,.no-copy] +---- +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +redpanda-connectors ClusterIP 10.96.123.45 8083/TCP 5m +---- . View the version of Kafka Connect: + @@ -635,9 +841,9 @@ kubectl exec --namespace -- curl localhost:8083 | jq [,json,.no-copy] ---- { - "version": "3.5.1", - "commit": "2c6fb6c54472e90a", - "kafka_cluster_id": "redpanda.58d6bd99-7f7c-4732-a398-b44bf892979a" + "version": "3.8.0", + "commit": "771b9576b00ecf5b", + "kafka_cluster_id": "redpanda.3e2649b0-f84c-4c03-b5e3-d6d1643f65b2" } ---- ==== @@ -646,7 +852,7 @@ kubectl exec --namespace -- curl localhost:8083 | jq + [,bash] ---- -curl localhost:8083/connector-plugins | jq +kubectl exec --namespace -- curl localhost:8083/connector-plugins | jq ---- + .Example output @@ -658,22 +864,125 @@ curl localhost:8083/connector-plugins | jq { "class": "org.apache.kafka.connect.mirror.MirrorCheckpointConnector", "type": "source", - "version": "3.5.1" + "version": "3.8.0" }, { "class": "org.apache.kafka.connect.mirror.MirrorHeartbeatConnector", "type": "source", - "version": "3.5.1" + "version": "3.8.0" }, { "class": "org.apache.kafka.connect.mirror.MirrorSourceConnector", "type": "source", - "version": "3.5.1" + "version": "3.8.0" } ] ---- ==== +. Test connectivity to your Redpanda cluster: ++ +[,bash] +---- +kubectl exec --namespace -- curl localhost:8083/connectors +---- ++ +This should return an empty array `[]` if no connectors are configured, indicating that Kafka Connect can communicate with your Redpanda cluster. + +=== Troubleshoot common issues + +If the deployment isn't working as expected, check these common issues: + +==== Pod not starting or crashing + +. Check pod logs for error messages: ++ +[,bash] +---- +kubectl logs -l app.kubernetes.io/name=connectors --namespace --tail=50 +---- + +. Check for resource constraints: ++ +[,bash] +---- +kubectl describe pod -l app.kubernetes.io/name=connectors --namespace +---- + +Common issues and solutions: + +* **"You must set either bootstrap.servers or bootstrap.controllers"**: The `connectors.bootstrapServers` configuration is missing or incorrectly formatted. +* **OutOfMemoryError**: Increase memory limits or reduce `javaMaxHeapSize`. +* **Connection refused to Redpanda brokers**: Verify the bootstrap servers addresses and ensure Redpanda is running. + +==== Testing network connectivity + +. Test if the connector can reach Redpanda brokers: ++ +[,bash] +---- +kubectl exec --namespace -- nslookup +---- + +. Test port connectivity: ++ +[,bash] +---- +kubectl exec --namespace -- nc -zv 9093 +---- + +==== Verify with Redpanda Console + +If you have Redpanda Console configured to connect to Kafka Connect: + +. Access Console through port-forward: ++ +[,bash] +---- +kubectl port-forward svc/redpanda-console 8080:8080 --namespace +---- + +. Open http://localhost:8080 in your browser + +. Navigate to *Connect* + + +If the Connectors page shows "No clusters configured" or connection errors, verify your Console configuration includes the correct Kafka Connect service URL. + +=== Health checks and monitoring + +The connectors chart includes built-in health checks that you can use to monitor the status: + +. **Liveness probe**: Checks if Kafka Connect is responsive ++ +[,bash] +---- +kubectl exec --namespace -- curl -f localhost:8083/ +---- + +. **Readiness probe**: Checks if Kafka Connect is ready to accept requests ++ +[,bash] +---- +kubectl exec --namespace -- curl -f localhost:8083/connectors +---- + +. **View connector worker information**: ++ +[,bash] +---- +kubectl exec --namespace -- curl localhost:8083/admin/workers | jq +---- + +. **Check cluster information**: ++ +[,bash] +---- +kubectl exec --namespace -- curl localhost:8083/admin/cluster | jq +---- + +These endpoints help you verify that Kafka Connect is not only running but also properly connected to your Redpanda cluster and ready to manage connectors. + == Install a new connector To install new connectors other than the ones included in the Redpanda Connectors Docker image, you must: @@ -737,19 +1046,27 @@ docker push /connectors: === Deploy the Helm chart with your custom Docker image -. Modify the Helm values in the Redpanda Helm chart to use your new Docker image to deploy the Redpanda Connectors Helm chart: +. Modify your values file to use your new Docker image: + [,yaml] ---- -connectors: - image: - repository: /connectors - tag: - pullPolicy: IfNotPresent +image: + repository: /connectors + tag: + pullPolicy: IfNotPresent ---- + Kafka Connect should discover the new connector automatically on startup. +. Update your deployment: ++ +[,bash] +---- +helm upgrade redpanda-connectors redpanda/connectors \ + --namespace \ + --values connectors-values.yaml +---- + . Get the name of the Pod that's running Kafka Connect: + [,bash] @@ -770,4 +1087,3 @@ You should see your new connector in the list. - xref:manage:kubernetes/k-manage-connectors.adoc[] - xref:manage:kubernetes/monitoring/k-monitor-connectors.adoc[] - diff --git a/modules/get-started/pages/release-notes/helm-charts.adoc b/modules/get-started/pages/release-notes/helm-charts.adoc index 08642f5c99..aacac66e4c 100644 --- a/modules/get-started/pages/release-notes/helm-charts.adoc +++ b/modules/get-started/pages/release-notes/helm-charts.adoc @@ -12,13 +12,13 @@ See also: * xref:upgrade:k-compatibility.adoc[] * xref:upgrade:k-rolling-upgrade.adoc[] -== Redpanda chart v25.1.1-beta1 +== Redpanda chart v25.1.1 (GA) link:https://github.com/redpanda-data/redpanda-operator/blob/release/v25.1.x/charts/redpanda/CHANGELOG.md[Changelog^]. === Redpanda Console v3 -This beta version deploys Redpanda Console v3, which includes unified authentication and authorization between the Console and Redpanda, including user impersonation. For more information, see xref:console:config/security/authentication.adoc[]. +This version deploys Redpanda Console v3, which includes unified authentication and authorization between the Console and Redpanda, including user impersonation. For more information, see xref:console:config/security/authentication.adoc[]. This version does not support Redpanda Console v2. @@ -36,13 +36,22 @@ An updated versioning scheme now better supports and tracks compatible Redpanda See also: xref:upgrade:k-compatibility.adoc[]. -=== Connectors subchart removed +=== Kafka Connect integration removed from Helm chart -The connectors subchart has been removed from the Helm chart because it is not officially supported. +Starting with version 25.1.x of the Redpanda Helm chart, Kafka Connect is no longer bundled as a subchart. -:tip-caption: Try Redpanda Connect +If you require Kafka Connect, you must install the `connectors` Helm chart separately after deploying Redpanda. -TIP: For a supported and scalable Kafka Connect alternative, consider using Redpanda Connect. For more information, see xref:redpanda-connect:get-started:index.adoc[]. +For instructions, see xref:deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc[]. + +To check if you're currently using Redpanda's managed Kafka Connect, run: + +[,bash] +---- +kubectl get pod -l app.kubernetes.io/name=connectors --namespace +---- + +NOTE: For stream processing on Kubernetes, consider using xref:redpanda-connect:get-started:quickstarts/helm-chart.adoc[Redpanda Connect]. It offers a simplified, scalable alternative to Kafka Connect for building data pipelines with a supported Kubernetes integration. === Reference Kubernetes Secrets and ConfigMaps for Redpanda cluster configuration @@ -89,4 +98,4 @@ rbac: enabled: true ---- -If you previously relied on the NodeWatcher or Decommission controllers, switch to the new sidecars for improved stability and control. \ No newline at end of file +If you previously relied on the NodeWatcher or Decommission controllers, switch to the new sidecars for improved stability and control. diff --git a/modules/get-started/pages/release-notes/operator.adoc b/modules/get-started/pages/release-notes/operator.adoc index f10a9c6f20..9dcd573042 100644 --- a/modules/get-started/pages/release-notes/operator.adoc +++ b/modules/get-started/pages/release-notes/operator.adoc @@ -11,32 +11,17 @@ See also: == Redpanda Operator v25.1.x -Starting in Redpanda Operator v25.1.1, you can install both the Redpanda Operator and its required custom resource definitions (CRDs) using a single Helm command: - -[,bash,subs="attributes+"] ----- -helm repo add redpanda https://charts.redpanda.com -helm repo update -helm upgrade --install redpanda-controller redpanda/operator \ - --namespace \ - --create-namespace \ - --version {latest-operator-version} \ - --set crds.enabled=true ----- - -== Redpanda Operator v25.1.1-beta1 - -link:https://github.com/redpanda-data/redpanda-operator/blob/release/v25.1.x/operator/CHANGELOG.md[Changelog^]. +link:https://github.com/redpanda-data/redpanda-operator/blob/release/v25.1.x/operator/CHANGELOG.md[Changelog^] === Redpanda Console v3 -This beta version deploys Redpanda Console v3, which includes unified authentication and authorization between the Console and Redpanda, including user impersonation. For more information, see xref:console:config/security/authentication.adoc[]. +Redpanda Console v3 is **not yet available when deploying with the Redpanda Operator**, due to pending CRD updates. The Redpanda Operator continues to deploy Redpanda Console v2. -This version does not support Redpanda Console v2. +To try Redpanda Console v3 in Kubernetes, you can xref:deploy:deployment-option/self-hosted/kubernetes/k-production-deployment.adoc[deploy Redpanda using the Redpanda Helm chart] instead of the Redpanda Operator. Redpanda Console v3 introduces support for unified authentication and authorization with Redpanda, including user impersonation. === Flux removed -This release completely removes Flux and its CRDs. The Redpanda Operator now manages all resources. The `chartRef.useFlux` configuration is still available for backwards compatibility but MUST be set to `false`. +This release removes Flux and its CRDs. The Redpanda Operator now manages all resources. The `chartRef.useFlux` configuration is still available for backwards compatibility but *must* be set to `false`. === Schema validation @@ -48,11 +33,11 @@ For example, given the values: ---- statefulset: replicas: "Not a number" - liables: + pandas: there-is: a-typo-in-this-field ---- -In previous versions, you'd get an error about `statefulset.replicas` needing to be a number but no error about `liables` being an invalid field. In v25.1.x, you'll get an error about `statefulset.replicas` needing to be a number and an error that `liables` isn't an allowed field. +In previous versions, you'd get an error about `statefulset.replicas` needing to be a number but no error about `pandas` being an invalid field. In v25.1.x, you'll get an error about `statefulset.replicas` needing to be a number and an error that `pandas` isn't an allowed field. === Removed fields @@ -64,13 +49,37 @@ An updated versioning scheme now better supports and tracks compatible Redpanda See also: xref:upgrade:k-compatibility.adoc[]. -=== Connectors subchart removed +=== Unified Helm installation of Redpanda Operator and CRDs -The connectors subchart has been removed from the Helm chart because it is not officially supported. +Starting in Redpanda Operator v25.1.1, you can install both the Redpanda Operator and its required custom resource definitions (CRDs) using a single Helm command: -:tip-caption: Try Redpanda Connect +[,bash,subs="attributes+"] +---- +helm repo add redpanda https://charts.redpanda.com +helm repo update +helm upgrade --install redpanda-controller redpanda/operator \ + --namespace \ + --create-namespace \ + --version {latest-operator-version} \ + --set crds.enabled=true +---- + +=== Kafka Connect integration removed from Helm chart + +Starting with version 25.1.x of the Redpanda Helm chart, Kafka Connect is no longer bundled as a subchart. + +If you require Kafka Connect, you must install the `connectors` Helm chart separately after deploying Redpanda. + +For instructions, see xref:deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc[]. + +To check if you're currently using Redpanda's managed Kafka Connect, run: + +[,bash] +---- +kubectl get pod -l app.kubernetes.io/name=connectors --namespace +---- -TIP: For a supported and scalable Kafka Connect alternative, consider using Redpanda Connect. For more information, see xref:redpanda-connect:get-started:index.adoc[]. +NOTE: For stream processing on Kubernetes, consider using xref:redpanda-connect:get-started:quickstarts/helm-chart.adoc[Redpanda Connect]. It offers a simplified, scalable alternative to Kafka Connect for building data pipelines with a supported Kubernetes integration. === Reference Kubernetes Secrets and ConfigMaps for Redpanda cluster configuration diff --git a/modules/manage/pages/kubernetes/k-manage-connectors.adoc b/modules/manage/pages/kubernetes/k-manage-connectors.adoc index 50c8ad1c68..8b76f320c8 100644 --- a/modules/manage/pages/kubernetes/k-manage-connectors.adoc +++ b/modules/manage/pages/kubernetes/k-manage-connectors.adoc @@ -12,9 +12,59 @@ include::shared:partial$community-supported-connectors.adoc[] - xref:deploy:deployment-option/self-hosted/kubernetes/kubernetes-deploy.adoc[Deploy a Redpanda cluster with Redpanda Console]. - xref:deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc[Deploy Kafka Connect]. +- Ensure Redpanda Console is configured to connect to Kafka Connect (see the xref:deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc#configure-redpanda-console-to-connect-to-kafka-connect[Redpanda Console configuration] in the deployment guide). + +== Verify Kafka Connect is accessible + +Before managing connectors, verify that Kafka Connect is running and accessible: + +. Check the Pod status: ++ +[,bash] +---- +kubectl get pod -l app.kubernetes.io/name=connectors --namespace +---- ++ +Expected output: ++ +[,bash,.no-copy] +---- +NAME READY STATUS RESTARTS AGE +redpanda-connectors-6d64b948f6-dk484 1/1 Running 0 5m +---- + +. Test the Kafka Connect REST API: ++ +[,bash] +---- +POD_NAME=$(kubectl get pod -l app.kubernetes.io/name=connectors --namespace -o jsonpath='{.items[0].metadata.name}') +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083 | jq '.version' +---- ++ +This should return the Kafka Connect version. + +. Verify the available connector plugins: ++ +[,bash] +---- +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083/connector-plugins | jq '.[].class' +---- ++ +Expected output should include the MirrorMaker2 connectors: ++ +[,bash,.no-copy] +---- +"org.apache.kafka.connect.mirror.MirrorCheckpointConnector" +"org.apache.kafka.connect.mirror.MirrorHeartbeatConnector" +"org.apache.kafka.connect.mirror.MirrorSourceConnector" +---- == Manage connectors in Redpanda Console +Redpanda Console provides a web interface for managing Kafka Connect connectors. This is the recommended approach for most users as it provides a user-friendly interface and validation. + +=== Access Redpanda Console + By default, Redpanda Console is deployed with a ClusterIP Service. To access Redpanda Console, you can use the `kubectl port-forward` command to forward one of your local ports to the Pod. NOTE: The `kubectl port-forward` command is a development tool. To expose services to external traffic in a more permanent and controlled manner, use Kubernetes Services such as LoadBalancer or NodePort. @@ -30,87 +80,298 @@ This command actively runs in the command-line window. To execute other commands . Open Redpanda Console on http://localhost:8080. -You can create and manage connectors by clicking *Connectors* in the navigation menu. +=== Using the Connect interface + +When you have access to Redpanda Console: + +. Navigate to *Connect* in the left menu. + +. If Kafka Connect is properly configured, you should see: ++ +- The Kafka Connect cluster +- A list of available connector types +- Any existing tasks + +From here, you can: + +- View connector status and health +- Pause/resume connectors +- View connector configuration +- Delete connectors +- View connector logs and metrics + +=== Troubleshoot Redpanda Console connectivity + +If you see "Kafka Connect is not configured": + +. Verify the Redpanda Console configuration includes Kafka Connect settings (see xref:deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc#troubleshooting-console-connectivity[deployment guide troubleshooting]) + +. Check the Redpanda Console logs for connection errors: ++ +[,bash] +---- +kubectl logs -n -l app.kubernetes.io/name=console --tail=20 +---- + +. Look for successful connection messages: ++ +---- +"creating Kafka connect HTTP clients and testing connectivity to all clusters" +"tested Kafka connect cluster connectivity","successful_clusters":1,"failed_clusters":0" +---- == Manage connectors with the REST API -This section provides examples of requesting data from the REST API using cURL. Execute all cURL commands in the Pod that's running Kafka Connect. +This section provides examples of managing connectors using the Kafka Connect REST API with cURL. This approach is useful for automation, scripting, and CI/CD pipelines. + +All REST API commands should be executed from within the Kafka Connect Pod or through `kubectl exec`. For comprehensive REST API documentation, see the https://kafka.apache.org/documentation/#connect_rest[Kafka Connect REST API reference^]. + +TIP: For complex connector configurations and production deployments, consider using the xref:reference:k-connector-helm-spec.adoc[Helm chart configuration options] to manage connector settings. + +=== Get connector Pod information -To view the name of the Pod that's running Kafka Connect: +Get the Pod name and verify connectivity: [,bash] ---- -kubectl get pod -l app.kubernetes.io/name=connectors --namespace +# Get the connector Pod name +POD_NAME=$(kubectl get pod -l app.kubernetes.io/name=connectors --namespace -o jsonpath='{.items[0].metadata.name}') +echo "Using pod: $POD_NAME" + +# Test basic connectivity +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083 ---- === View version of Kafka Connect -To view the version of Kafka Connect, run: +[,bash] +---- +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083 | jq +---- -```bash -curl localhost:8083 | jq -``` +Expected output: -=== View a list of connectors +[,json,.no-copy] +---- +{ + "version": "3.8.0", + "commit": "771b9576b00ecf5b", + "kafka_cluster_id": "redpanda.3e2649b0-f84c-4c03-b5e3-d6d1643f65b2" +} +---- -To view all available connectors, run: +=== View available connector plugins -```bash -curl localhost:8083/connector-plugins | jq -``` +[,bash] +---- +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083/connector-plugins | jq +---- -=== View active connectors +=== View cluster worker information -To view all active connectors, run: +[,bash] +---- +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083 | jq +---- -```bash -curl 'http://localhost:8083/connectors?expand=status&expand=info' | jq -``` +This returns basic cluster information including version and Kafka cluster ID. + +=== View all connectors + +[,bash] +---- +# List connector names only +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083/connectors | jq + +# View connectors with detailed status and configuration +kubectl exec $POD_NAME --namespace -- curl -s 'localhost:8083/connectors?expand=status&expand=info' | jq +---- === Create a connector -To create a connector, run: +To create a connector, use a POST request with JSON configuration: -```bash -curl "localhost:8083/connectors" -H 'Content-Type: application/json' --data-raw '' -``` +[,bash] +---- +kubectl exec $POD_NAME --namespace -- curl -s "localhost:8083/connectors" \ + -H 'Content-Type: application/json' \ + --data-raw '{ + "name": "heartbeat-connector", + "config": { + "connector.class": "org.apache.kafka.connect.mirror.MirrorHeartbeatConnector", + "heartbeats.topic.replication.factor": "1", + "replication.factor": "1", + "source.cluster.alias": "source", + "target.cluster.alias": "target", + "source.cluster.bootstrap.servers": "redpanda.redpanda.svc.cluster.local:9093", + "target.cluster.bootstrap.servers": "redpanda.redpanda.svc.cluster.local:9093", + "emit.heartbeats.interval.seconds": "30" + } + }' | jq +---- -For example: +Example for MirrorSourceConnector: -```bash -curl "localhost:8083/connectors" \ +[,bash] +---- +kubectl exec $POD_NAME --namespace -- curl -s "localhost:8083/connectors" \ -H 'Content-Type: application/json' \ - --data-raw '{ "name": "heartbeat-connector", "config": { "connector.class": "org.apache.kafka.connect.mirror.MirrorHeartbeatConnector", "heartbeats.topic.replication.factor": "1", "replication.factor": "1", "source.cluster.alias": "source", "source.cluster.bootstrap.servers": "redpanda:29092", "target.cluster.bootstrap.servers": "redpanda:29092"}}' -``` + --data-raw '{ + "name": "mirror-source-connector", + "config": { + "connector.class": "org.apache.kafka.connect.mirror.MirrorSourceConnector", + "source.cluster.alias": "source", + "target.cluster.alias": "target", + "source.cluster.bootstrap.servers": "source-cluster:9092", + "target.cluster.bootstrap.servers": "redpanda.redpanda.svc.cluster.local:9093", + "topics": "my-topic", + "replication.factor": "1" + } + }' | jq +---- + +=== View connector details + +[,bash] +---- +# View connector configuration +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083/connectors//config | jq + +# View connector status +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083/connectors//status | jq + +# View connector tasks +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083/connectors//tasks | jq +---- + +Example: + +[,bash] +---- +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083/connectors/heartbeat-connector/status | jq +---- + +=== Update connector configuration -=== View connector status +[,bash] +---- +kubectl exec $POD_NAME --namespace -- curl -s "localhost:8083/connectors//config" \ + -H 'Content-Type: application/json' \ + -X PUT \ + --data-raw '{ + "connector.class": "org.apache.kafka.connect.mirror.MirrorHeartbeatConnector", + "heartbeats.topic.replication.factor": "1", + "replication.factor": "1", + "source.cluster.alias": "source", + "target.cluster.alias": "target", + "source.cluster.bootstrap.servers": "redpanda.redpanda.svc.cluster.local:9093", + "target.cluster.bootstrap.servers": "redpanda.redpanda.svc.cluster.local:9093", + "emit.heartbeats.interval.seconds": "60" + }' | jq +---- -To view the status of a connector, run: +=== Pause and resume connectors -```bash -curl localhost:8083/connectors//status -``` +[,bash] +---- +# Pause a connector +kubectl exec $POD_NAME --namespace -- curl -s "localhost:8083/connectors//pause" -X PUT -For example: +# Resume a connector +kubectl exec $POD_NAME --namespace -- curl -s "localhost:8083/connectors//resume" -X PUT -```bash -curl localhost:8083/connectors/heartbeat-connector/status -``` +# Restart a connector +kubectl exec $POD_NAME --namespace -- curl -s "localhost:8083/connectors//restart" -X POST +---- === Delete a connector -To delete a connector, run: +[,bash] +---- +kubectl exec $POD_NAME --namespace -- curl -s "localhost:8083/connectors/" -X DELETE +---- + +Example: -```bash -curl "localhost:8083/connectors/" -X 'DELETE' -``` +[,bash] +---- +kubectl exec $POD_NAME --namespace -- curl -s "localhost:8083/connectors/heartbeat-connector" -X DELETE +---- -For example: +=== Troubleshoot REST API issues -```bash -curl "localhost:8083/connectors/heartbeat-connector" -X 'DELETE' -``` +==== Common error responses + +* **404 Not Found**: Connector doesn't exist +* **409 Conflict**: Connector with the same name already exists +* **400 Bad Request**: Invalid configuration + +==== Debugging connector failures + +. Check connector status for error details: ++ +[,bash] +---- +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083/connectors//status | jq '.connector.trace' +---- + +. View task-level errors: ++ +[,bash] +---- +kubectl exec $POD_NAME --namespace -- curl -s localhost:8083/connectors//status | jq '.tasks[].trace' +---- + +. Check Kafka Connect logs: ++ +[,bash] +---- +kubectl logs -n -l app.kubernetes.io/name=connectors --tail=50 +---- ++ +For more detailed logging configuration, see xref:deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc#logging[logging configuration] in the deployment guide. + +=== Connector management best practices + +==== Configuration validation + +Before creating a connector, validate the configuration: + +[,bash] +---- +kubectl exec $POD_NAME --namespace -- curl -s "localhost:8083/connector-plugins//config/validate" \ + -H 'Content-Type: application/json' \ + -X PUT \ + --data-raw '{"connector.class": "", ...}' | jq +---- + +==== Monitoring connector health + +Regularly check connector status: + +[,bash] +---- +# Check all connectors at once +kubectl exec $POD_NAME --namespace -- curl -s 'localhost:8083/connectors?expand=status' | \ + jq '.[] | {name: .status.name, state: .status.connector.state, tasks: [.status.tasks[].state]}' +---- + +For comprehensive monitoring and alerting, see xref:manage:kubernetes/monitoring/k-monitor-connectors.adoc[Kafka Connect monitoring guide]. + +==== Backup connector configurations + +Save connector configurations for disaster recovery: + +[,bash] +---- +# Export all connector configs +kubectl exec $POD_NAME --namespace -- curl -s 'localhost:8083/connectors?expand=info' | \ + jq '.[] | {name: .info.name, config: .info.config}' > connectors-backup.json +---- == Next steps -- xref:manage:kubernetes/monitoring/k-monitor-connectors.adoc[] \ No newline at end of file +- xref:manage:kubernetes/monitoring/k-monitor-connectors.adoc[Monitor Kafka Connect performance and health] +- xref:deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc#install-a-new-connector[Install additional connector plugins] +- xref:reference:k-connector-helm-spec.adoc[Configure advanced Kafka Connect settings] +- Explore xref:redpanda-connect:home:index.adoc[Redpanda Connect] for simpler data pipeline creation diff --git a/modules/manage/pages/kubernetes/monitoring/k-monitor-connectors.adoc b/modules/manage/pages/kubernetes/monitoring/k-monitor-connectors.adoc index ff030a6892..cb7b3baf67 100644 --- a/modules/manage/pages/kubernetes/monitoring/k-monitor-connectors.adoc +++ b/modules/manage/pages/kubernetes/monitoring/k-monitor-connectors.adoc @@ -1,7 +1,6 @@ -= Monitor Connectors in Kubernetes += Monitor Kafka Connect in Kubernetes :description: Monitor the health of Kafka Connect using managed connector metrics. -:page-context-links: [{"name": "Cloud", "to": "deploy:deployment-option/cloud/managed-connectors/monitor-connectors.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/monitoring/k-monitor-connectors.adoc" } ] -:env-kubernetes: +:env-kubernetes: true :page-aliases: manage:kubernetes/monitoring/monitor-connectors.adoc :page-categories: Management, Monitoring :env-kubernetes: true diff --git a/modules/manage/partials/monitor-connectors.adoc b/modules/manage/partials/monitor-connectors.adoc index c9e6ba2e98..24de20c20c 100644 --- a/modules/manage/partials/monitor-connectors.adoc +++ b/modules/manage/partials/monitor-connectors.adoc @@ -5,23 +5,29 @@ ifdef::env-kubernetes[] You can monitor the health of Kafka Connect with metrics that are exported through a Prometheus endpoint at the default port 9404. You can use Grafana to visualize the metrics and set up alerts. +include::shared:partial$community-supported-connectors.adoc[] + == Prerequisites -- A Kubernetes cluster. You must have `kubectl` with at least version {supported-kubernetes-version}. +- A Kubernetes cluster with `kubectl` installed at least version {supported-kubernetes-version}. + To check if you have `kubectl` installed: + -```bash +[,bash] +---- kubectl version --short --client -``` +---- - https://helm.sh/docs/intro/install/[Helm^] installed with at least version {supported-helm-version}. + To check if you have Helm installed: + -```bash +[,bash] +---- helm version -``` +---- + +- xref:deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc[Kafka Connect deployed] with monitoring enabled. endif::[] @@ -44,17 +50,59 @@ connectors. However, when a connector does not create a task (for example, an empty topic list), the dashboard will not show metrics for that connector. +ifdef::env-kubernetes[] + +== Verify monitoring is enabled + +Before configuring Prometheus, verify that Kafka Connect is exposing metrics: + +. Check that the connectors service exposes port 9404: ++ +[,bash] +---- +kubectl get service --namespace -connectors +---- ++ +Expected output should include `9404/TCP`: ++ +[,bash,.no-copy] +---- +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +redpanda-connectors ClusterIP 10.96.78.129 8083/TCP,9404/TCP 1h +---- + +. Test that metrics are being exported: ++ +[,bash] +---- +POD_NAME=$(kubectl get pod -l app.kubernetes.io/name=connectors --namespace -o jsonpath='{.items[0].metadata.name}') +kubectl exec $POD_NAME --namespace -- curl -s localhost:9404/metrics | head -10 +---- ++ +Expected output should show Prometheus metrics: ++ +[,bash,.no-copy] +---- +# HELP jmx_exporter_build_info A metric with a constant '1' value labeled with the version of the JMX exporter. +# TYPE jmx_exporter_build_info gauge +jmx_exporter_build_info{version="0.20.0",name="jmx_prometheus_javaagent",} 1.0 +# HELP kafka_producer_iotime_total Kafka producer JMX metric type producer +# TYPE kafka_producer_iotime_total gauge +---- + == Configure Prometheus https://prometheus.io/[Prometheus^] is a system monitoring and alerting tool. It collects and stores metrics as time-series data identified by a metric name and key/value pairs. ifdef::env-kubernetes[] -To configure Prometheus to monitor Redpanda metrics in Kubernetes, you can use the https://prometheus-operator.dev/[Prometheus Operator^]: +To configure Prometheus to monitor Kafka Connect metrics in Kubernetes, you can use the https://prometheus-operator.dev/[Prometheus Operator^]. + +The Prometheus Operator provides Kubernetes-native deployment and management of Prometheus and related monitoring components. . Follow the steps to https://prometheus-operator.dev/docs/getting-started/installation/[deploy the Prometheus Operator^]. -+ -Make sure to configure the Prometheus resource to target your Pods that are running Kafka Connect: + +. Configure the Prometheus resource to target your Pods running Kafka Connect: + .`prometheus.yaml` [,yaml,lines=9+12] @@ -63,6 +111,7 @@ apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: prometheus + namespace: spec: serviceAccountName: prometheus podMonitorNamespaceSelector: @@ -77,106 +126,106 @@ spec: enableAdminAPI: false ---- + -- `podMonitorNamespaceSelector.matchLabels.name`: The namespace in which Redpanda is deployed. The Prometheus Operator looks for PodMonitor resources in this namespace. -- `podMonitorSelector.matchLabels.app.kubernetes.io/name`: The value of `fullnameOverride` in your Redpanda Helm chart. The default is `connectors`. The Redpanda Helm chart creates the PodMonitor resource with this label. - -. Deploy the Redpanda Connectors subchart with monitoring enabled to deploy the PodMonitor resource: -+ -[tabs] -====== -Operator:: -+ --- -.`redpanda-cluster.yaml` -[,yaml,lines=8-12] ----- -apiVersion: cluster.redpanda.com/v1alpha2 -kind: Redpanda -metadata: - name: redpanda -spec: - chartRef: {} - clusterSpec: - connectors: - enabled: true - monitoring: - enabled: true - scrapeInterval: 30s ----- - -```bash -kubectl apply -f redpanda-cluster.yaml --namespace -``` +- `podMonitorNamespaceSelector.matchLabels.name`: The namespace where Redpanda is deployed. +- `podMonitorSelector.matchLabels.app.kubernetes.io/name`: Must match the label on your connectors Pods (default is `connectors`). --- -Helm:: +. Deploy the standalone Kafka Connect chart with monitoring enabled. This will automatically create a PodMonitor resource: + --- [tabs] ==== --values:: + -.`prometheus-monitoring.yaml` +.`connectors-monitoring.yaml` [,yaml] ---- -connectors: +monitoring: enabled: true - monitoring: - enabled: true - scrapeInterval: 30s + scrapeInterval: 30s ---- + ```bash -helm upgrade --install redpanda redpanda/redpanda --namespace --create-namespace \ ---values prometheus-monitoring.yaml --reuse-values +helm upgrade --install redpanda-connectors redpanda/connectors --namespace --create-namespace \ +--values connectors-monitoring.yaml ``` --set:: + -[,bash,lines=4-6] +[,bash,lines=4-5] ---- -helm upgrade --install redpanda redpanda/redpanda \ +helm upgrade --install redpanda-connectors redpanda/connectors \ --namespace \ --create-namespace \ - --set connectors.enabled=true \ - --set connectors.monitoring.enabled=true \ - --set connectors.monitoring.scrapeInterval="30s" + --set monitoring.enabled=true \ + --set monitoring.scrapeInterval=30s ---- ==== --- -====== -. Wait until all Pods are running: +. Wait until the connectors deployment is ready: + [,bash] ---- -kubectl -n rollout status statefulset redpanda --watch +kubectl --namespace rollout status deployment -connectors --watch ---- -. Ensure that the PodMonitor was deployed: +. Verify that the PodMonitor was automatically created: + [,bash] ---- kubectl get podmonitor --namespace ---- ++ +Expected output: ++ +[,bash,.no-copy] +---- +NAME AGE +redpanda-connectors 30s +---- -. Ensure that you've https://prometheus-operator.dev/docs/user-guides/getting-started/#exposing-the-prometheus-service[exposed the Prometheus Service^]. - -. Expose the Prometheus server to your localhost: +. Verify that Prometheus is scraping the metrics: + [,bash] ---- -kubectl port-forward svc/prometheus 9090 +kubectl port-forward svc/prometheus-operator-kube-p-prometheus 9090:9090 --namespace +---- ++ +Then navigate to http://localhost:9090/targets to verify that the Kafka Connect targets are being scraped. + +== Important metrics to monitor + +The most important Kafka Connect metrics to monitor with alerts are: + +* **Connector task status**: `kafka_connect_connector_status` and `kafka_connect_task_status` +* **Connector task failures**: `kafka_connect_task_error_count` +* **Consumer lag**: `kafka_consumer_lag_max` (for sink connectors) +* **Producer record send rate**: `kafka_producer_record_send_rate` (for source connectors) +* **Error rates**: `kafka_connect_connector_failed_task_count` + +=== Example queries + +Important Prometheus queries for monitoring: + +[,promql] ---- +# Failed connector tasks +kafka_connect_connector_failed_task_count > 0 + +# Connector status (should be "running") +kafka_connect_connector_status{status!="running"} -. http://localhost:9090/graph[Open Prometheus^], and verify that Prometheus is scraping metrics from your endpoints. +# High consumer lag +kafka_consumer_lag_max > 1000 + +# Low throughput for source connectors +rate(kafka_producer_record_send_total[5m]) < 1 +---- endif::[] ifndef::env-kubernetes[] -NOTE: You can quickly get +NOTE: You can get https://github.com/redpanda-data/observability/tree/main/cloud[Prometheus and Grafana running locally^], but not for production instances. For production instances, deploy Prometheus and Grafana as a standalone or @@ -390,7 +439,10 @@ ifdef::env-kubernetes[] == Next steps -xref:manage:kubernetes/k-manage-connectors.adoc[]. +- xref:manage:kubernetes/k-manage-connectors.adoc[Create and manage Kafka Connect connectors] +- Set up Grafana dashboards using the https://github.com/redpanda-data/observability/blob/main/grafana-dashboards/Connectors.json[Redpanda connectors dashboard^] +- Configure alerting rules for critical connector metrics +- Learn about xref:deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc#scaling[scaling connector deployments] endif::[] diff --git a/modules/migrate/pages/kubernetes/strimzi.adoc b/modules/migrate/pages/kubernetes/strimzi.adoc index 1fee651b7b..7fdd33dc55 100644 --- a/modules/migrate/pages/kubernetes/strimzi.adoc +++ b/modules/migrate/pages/kubernetes/strimzi.adoc @@ -297,11 +297,9 @@ The Redpanda Operator does not support a custom resource for Kafka users. For de [[migrate-kafkaconnect]] ==== Migrate the KafkaConnect resource -The Redpanda Operator does not support a custom resource to define Kafka Connect deployments. Redpanda provides support for Kafka Connect through a separate Connectors Helm chart. +The Redpanda Operator does not support a custom resource to define Kafka Connect deployments. Redpanda provides support for Kafka Connect through a separate xref:deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc[Connectors Helm chart]. -See xref:deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc[]. - -TIP: You can also use the xref:redpanda-connect:get-started:quickstarts/helm-chart.adoc[Redpanda Connect Helm chart], which comes with hundreds of prebuilt connectors, change data capture (CDC) capabilities, and YAML-configurable workflows. +TIP: You can use the xref:redpanda-connect:get-started:quickstarts/helm-chart.adoc[Redpanda Connect Helm chart], which comes with hundreds of prebuilt connectors, change data capture (CDC) capabilities, and YAML-configurable workflows. [[migrate-kafkabridge]] ==== Migrate the KafkaBridge resource @@ -311,10 +309,7 @@ Redpanda includes a built-in HTTP proxy on each broker, enabling direct HTTP-bas [[migrate-kafkamirrormaker]] ==== Migrate the KafkaMirrorMaker2 resource -The Redpanda Operator does not support a custom resource for MirrorMaker2. Redpanda offers a separate Helm chart that includes Kafka Connect and MirrorMaker2. For information on how to use MirrorMaker2 with Redpanda in Kubernetes: - -. xref:deploy:deployment-option/self-hosted/kubernetes/k-deploy-connectors.adoc[]. -. xref:manage:kubernetes/k-manage-connectors.adoc[]. +The Redpanda Operator does not support a custom resource for MirrorMaker2. Redpanda offers a separate link:https://github.com/redpanda-data/helm-charts/tree/main/charts/connectors[Helm chart^] that includes Kafka Connect and MirrorMaker2. [[migrate-kafkanodepool]] ==== Migrate the KafkaNodePool resource diff --git a/modules/reference/pages/k-connector-helm-spec.adoc b/modules/reference/pages/k-connector-helm-spec.adoc index e3ee561753..716743660e 100644 --- a/modules/reference/pages/k-connector-helm-spec.adoc +++ b/modules/reference/pages/k-connector-helm-spec.adoc @@ -668,4 +668,4 @@ Taints to be tolerated by Pods. For details, see the https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/[Kubernetes documentation]. -*Default:* `[]` +*Default:* `[]` \ No newline at end of file diff --git a/modules/shared/partials/community-supported-connectors.adoc b/modules/shared/partials/community-supported-connectors.adoc index 4151ab4eef..fe4cc077e3 100644 --- a/modules/shared/partials/community-supported-connectors.adoc +++ b/modules/shared/partials/community-supported-connectors.adoc @@ -1,4 +1,9 @@ :note-caption: Community +ifdef::env-kubernetes[] +NOTE: *The Connectors Helm chart is a community-supported artifact*. Redpanda Data does not provide enterprise support for this chart. For support, reach out to the Redpanda team in https://redpanda.com/slack[Redpanda Community Slack^]. +endif::[] +ifndef::env-kubernetes[] NOTE: *The Redpanda Connectors Docker image is a community-supported artifact*. Redpanda Data does not provide enterprise support for this image. For support, reach out to the Redpanda team in https://redpanda.com/slack[Redpanda Community Slack^]. +endif::[] :note-caption: Note \ No newline at end of file diff --git a/modules/upgrade/pages/k-upgrade-kubernetes.adoc b/modules/upgrade/pages/k-upgrade-kubernetes.adoc index c3a5d320e6..b45aa4377b 100644 --- a/modules/upgrade/pages/k-upgrade-kubernetes.adoc +++ b/modules/upgrade/pages/k-upgrade-kubernetes.adoc @@ -327,7 +327,7 @@ _schemas 1 3 ``` ==== + -The output shows that the broker IDs don't match the StatefulSet ordinal, which appears in the hostname. In this example, `redpanda-*` in the hostname represents the pod name. The StatefulSet ordinal is the number in the pod name after the broker name and the broker ID is the number in the ID column. +The output shows that the broker IDs don't match the StatefulSet ordinal, which appears in the hostname. In this example, `redpanda-*` in the hostname represents the Pod name. The StatefulSet ordinal is the number in the Pod name after the broker name and the broker ID is the number in the ID column. .. Find the node that your chosen broker is running on: + From c796187fc4a1415482c5771ec2425bb7ea76607f Mon Sep 17 00:00:00 2001 From: Paulo Borges Date: Fri, 18 Jul 2025 09:55:18 -0300 Subject: [PATCH 11/27] docs: remove ephemeral auth on Kafka API (#1210) Co-authored-by: Paulo Borges Co-authored-by: Joyce Fee <102751339+Feediver1@users.noreply.github.com> Co-authored-by: Paulo Borges --- .../pages/release-notes/redpanda.adoc | 16 ++++++++++ .../manage/pages/security/authentication.adoc | 1 + modules/manage/partials/authentication.adoc | 31 +++++++++++++++++-- .../pages/properties/broker-properties.adoc | 12 +++++-- ...ral-credentials-breaking-change-short.adoc | 1 + ...ephemeral-credentials-breaking-change.adoc | 11 +++++++ .../upgrade/partials/incompat-changes.adoc | 2 ++ 7 files changed, 68 insertions(+), 6 deletions(-) create mode 100644 modules/shared/partials/http-proxy-ephemeral-credentials-breaking-change-short.adoc create mode 100644 modules/shared/partials/http-proxy-ephemeral-credentials-breaking-change.adoc diff --git a/modules/get-started/pages/release-notes/redpanda.adoc b/modules/get-started/pages/release-notes/redpanda.adoc index c4c26c14e1..b22695bd62 100644 --- a/modules/get-started/pages/release-notes/redpanda.adoc +++ b/modules/get-started/pages/release-notes/redpanda.adoc @@ -1,6 +1,7 @@ = What's New in Redpanda :description: Summary of new features and updates in this Redpanda release. :page-aliases: get-started:whats-new-233.adoc, get-started:whats-new-241.adoc, get-started:whats-new.adoc +:page-whats-new: This topic includes new content added in version {page-component-version}. For a complete list of all product updates, see the https://github.com/redpanda-data/redpanda/releases/[Redpanda release notes^]. See also: @@ -18,6 +19,21 @@ The Redpanda Admin API now includes new health probes to help you ensure safe br * xref:manage:cluster-maintenance/rolling-restart.adoc[] * xref:upgrade:rolling-upgrade.adoc[] +== HTTP Proxy authentication changes + +[IMPORTANT] +==== +include::shared:partial$http-proxy-ephemeral-credentials-breaking-change.adoc[] +==== + +HTTP Proxy previously used automatically-generated ephemeral credentials to authenticate with the Kafka API when the HTTP Proxy listeners specified `authentication_method: none`. To improve security and simplify the authentication model, ephemeral credentials are no longer available. + +If you need to maintain the current HTTP Proxy functionality while transitioning to authenticated clients, configure the following HTTP Proxy client properties in your `redpanda.yaml` configuration: + +- xref:reference:properties/broker-properties.adoc#scram_username[`scram_username`]: Username for SASL/SCRAM authentication +- xref:reference:properties/broker-properties.adoc#scram_password[`scram_password`]: Password for SASL/SCRAM authentication +- xref:reference:properties/broker-properties.adoc#sasl_mechanism[`sasl_mechanism`]: SASL mechanism (typically `SCRAM-SHA-256` or `SCRAM-SHA-512`) + == Redpanda Console v3.0.0 The Redpanda Console v3.0.0 release includes the following updates: diff --git a/modules/manage/pages/security/authentication.adoc b/modules/manage/pages/security/authentication.adoc index febab56d94..89c76fdd09 100644 --- a/modules/manage/pages/security/authentication.adoc +++ b/modules/manage/pages/security/authentication.adoc @@ -4,6 +4,7 @@ :page-aliases: security:authentication.adoc :page-toclevels: 3 :page-categories: Management, Security +:page-http-proxy-auth: include::manage:partial$authentication.adoc[] diff --git a/modules/manage/partials/authentication.adoc b/modules/manage/partials/authentication.adoc index 7c7f6be15a..12a8654e30 100644 --- a/modules/manage/partials/authentication.adoc +++ b/modules/manage/partials/authentication.adoc @@ -655,12 +655,17 @@ endif::[] [[schema-and-http-to-redpanda]] ===== Configure Schema Registry and HTTP Proxy to connect to Redpanda with SASL -Schema Registry and HTTP Proxy connect to Redpanda over the Kafka API. For the Kafka username and password, Redpanda uses ephemeral credentials internal to the cluster. Ephemeral credentials are regular SCRAM credentials, but they're only stored in memory and are lost when a broker restarts. When the Schema Registry or HTTP Proxy start up, they broadcast an ephemeral credential to other brokers over the internal RPC. If authentication fails to a particular broker, new ephemeral credentials are sent to that broker, and the service reconnects. +Schema Registry and HTTP Proxy connect to Redpanda over the Kafka API. + +[IMPORTANT] +==== +include::shared:partial$http-proxy-ephemeral-credentials-breaking-change.adoc[] +==== Schema Registry and HTTP Proxy support only the SASL/SCRAM mechanism. ifndef::env-kubernetes[] -You can override the ephemeral credentials and manually configure Schema Registry and HTTP Proxy to connect to Redpanda with SASL. This approach is particularly useful when you want to apply specific access control through ACLs for the Schema Registry and HTTP Proxy users. +Starting in Redpanda 25.2, you must manually configure HTTP Proxy to connect to Redpanda with SASL when HTTP Proxy API listeners use `authentication_method: none`. You can also manually configure Schema Registry to connect to Redpanda with SASL. This approach is particularly useful when you want to apply specific access control through ACLs for the Schema Registry and HTTP Proxy users. . xref:manage:security/authorization/index.adoc[Create appropriate ACLs] for the Schema Registry and HTTP Proxy users to define and restrict their access rights within the Redpanda cluster. @@ -698,7 +703,22 @@ schema_registry_client: sasl_mechanism: SCRAM-SHA-256 ---- + -For HTTP Proxy: +For HTTP Proxy (required when `authentication_method: none` starting in Redpanda 25.2): ++ +[,yaml] +---- +pandaproxy_client: + brokers: + - address: 127.0.0.1 + port: 9092 + scram_username: + scram_password: + sasl_mechanism: SCRAM-SHA-256 +---- ++ +When HTTP Proxy API listeners use `authentication_method: none`, the HTTP Proxy client uses these credentials to authenticate with the Kafka API. The user specified in `scram_username` must have appropriate permissions to access the required Kafka resources. ++ +If TLS is enabled for the Kafka API, additional configuration is required: + [,yaml] ---- @@ -1757,6 +1777,11 @@ For all available endpoints, see xref:api:ROOT:pandaproxy-schema-registry.adoc[] To disable authentication for a listener, set `authentication_method` to `none`: +[IMPORTANT] +==== +include::shared:partial$http-proxy-ephemeral-credentials-breaking-change.adoc[] +==== + ifdef::env-kubernetes[] [tabs] ====== diff --git a/modules/reference/pages/properties/broker-properties.adoc b/modules/reference/pages/properties/broker-properties.adoc index 9a64c1c100..5a086ff6e6 100644 --- a/modules/reference/pages/properties/broker-properties.adoc +++ b/modules/reference/pages/properties/broker-properties.adoc @@ -778,7 +778,9 @@ Delay (in milliseconds) for initial retry backoff. === sasl_mechanism -The SASL mechanism to use when connecting. +The SASL mechanism to use when the HTTP Proxy client connects to the Kafka API. These credentials are used when the HTTP Proxy API listener has `authentication_method: none` but the cluster requires authenticated access to the Kafka API. + +include::shared:partial$http-proxy-ephemeral-credentials-breaking-change.adoc[] *Visibility:* `user` @@ -790,7 +792,9 @@ The SASL mechanism to use when connecting. === scram_password -Password to use for SCRAM authentication mechanisms. +Password to use for SCRAM authentication mechanisms when the HTTP Proxy client connects to the Kafka API. This property is required when the HTTP Proxy API listener has `authentication_method: none` but the cluster requires authenticated access to the Kafka API. + +include::shared:partial$http-proxy-ephemeral-credentials-breaking-change.adoc[] *Visibility:* `user` @@ -802,7 +806,9 @@ Password to use for SCRAM authentication mechanisms. === scram_username -Username to use for SCRAM authentication mechanisms. +Username to use for SCRAM authentication mechanisms when the HTTP Proxy client connects to the Kafka API. This property is required when the HTTP Proxy API listener has `authentication_method: none` but the cluster requires authenticated access to the Kafka API. + +include::shared:partial$http-proxy-ephemeral-credentials-breaking-change.adoc[] *Visibility:* `user` diff --git a/modules/shared/partials/http-proxy-ephemeral-credentials-breaking-change-short.adoc b/modules/shared/partials/http-proxy-ephemeral-credentials-breaking-change-short.adoc new file mode 100644 index 0000000000..bf031e8d1a --- /dev/null +++ b/modules/shared/partials/http-proxy-ephemeral-credentials-breaking-change-short.adoc @@ -0,0 +1 @@ +Starting in Redpanda 25.2, ephemeral credentials for HTTP Proxy are removed. You must configure explicit SASL credentials if your HTTP Proxy listeners use `authentication_method: none`. diff --git a/modules/shared/partials/http-proxy-ephemeral-credentials-breaking-change.adoc b/modules/shared/partials/http-proxy-ephemeral-credentials-breaking-change.adoc new file mode 100644 index 0000000000..f6d3d98f5e --- /dev/null +++ b/modules/shared/partials/http-proxy-ephemeral-credentials-breaking-change.adoc @@ -0,0 +1,11 @@ +*Breaking change in Redpanda 25.2:* Ephemeral credentials for HTTP Proxy are removed. If your HTTP Proxy API listeners use `authentication_method: none`, you must configure explicit SASL credentials (xref:reference:properties/broker-properties.adoc#scram_username[`scram_username`], xref:reference:properties/broker-properties.adoc#scram_password[`scram_password`], and xref:reference:properties/broker-properties.adoc#sasl_mechanism[`sasl_mechanism`]) for HTTP Proxy to authenticate with the Kafka API. Without these credentials, HTTP Proxy will attempt unauthenticated connections to the Kafka API. + +Redpanda Data recommends enabling authentication on both HTTP Proxy and the Kafka API. + +ifndef::page-http-proxy-auth[] +For configuration instructions, see xref:manage:security/authentication.adoc#schema-and-http-to-redpanda[Configure HTTP Proxy to connect to Redpanda with SASL]. +endif::[] + +ifndef::page-whats-new[] +For details about this breaking change, see xref:get-started:release-notes/redpanda.adoc#http-proxy-authentication-changes[What's new]. +endif::[] diff --git a/modules/upgrade/partials/incompat-changes.adoc b/modules/upgrade/partials/incompat-changes.adoc index f28d230a12..c92553bd63 100644 --- a/modules/upgrade/partials/incompat-changes.adoc +++ b/modules/upgrade/partials/incompat-changes.adoc @@ -1,5 +1,7 @@ === Review incompatible changes +include::shared:partial$http-proxy-ephemeral-credentials-breaking-change.adoc[] + * Redpanda Console v3.0.0 introduces breaking changes. If you are using Redpanda Console v2.x, xref:migrate:console-v3.adoc[review the migration guide] to address breaking changes before upgrading Redpanda Console. * Starting in version 24.2, when managing configuration properties using the AlterConfigs API directly, Redpanda resets all unspecified values to the default values. This aligns more closely with the behavior in Apache Kafka. There is no change if you're managing your configuration with tools like `rpk`, Redpanda Console, Kubernetes, Helm, or Terraform. From fa353c0af06b73370f6a1ee4bc4a7212ec7ab165 Mon Sep 17 00:00:00 2001 From: Joyce Fee <102751339+Feediver1@users.noreply.github.com> Date: Fri, 18 Jul 2025 16:58:45 -0400 Subject: [PATCH 12/27] DOC-1378: Compaction robustness (#1153) Co-authored-by: Michele Cyran --- .../compaction-settings.adoc | 16 ++ .../pages/properties/cluster-properties.adoc | 44 ++++- .../pages/properties/topic-properties.adoc | 151 +++++++++++------- 3 files changed, 155 insertions(+), 56 deletions(-) diff --git a/modules/manage/pages/cluster-maintenance/compaction-settings.adoc b/modules/manage/pages/cluster-maintenance/compaction-settings.adoc index e163d6779b..1b97140103 100644 --- a/modules/manage/pages/cluster-maintenance/compaction-settings.adoc +++ b/modules/manage/pages/cluster-maintenance/compaction-settings.adoc @@ -61,6 +61,22 @@ Where: | xref:reference:cluster-properties.adoc#log_compaction_interval_ms[`log_compaction_interval_ms`] | Cluster | Compaction frequency in milliseconds. + +| xref:reference:cluster-properties.adoc#max_compaction_lag_ms[`max_compaction_lag_ms`] +| Cluster +| The maximum amount of time in milliseconds that a message remains ineligible for compaction. Use to guarantee the maximum delay between the time a message is written and the time the message becomes eligible for compaction. This setting is useful for ensuring that messages are compacted within a predictable timeframe. + +| xref:reference:cluster-properties.adoc#min_compaction_lag_ms[`min_compaction_lag_ms`] +| Cluster +| The minimum time in milliseconds that a message remains uncompacted in the log. Use to guarantee the minimum length of time that must pass after a message is written before it could be compacted. For example, to provide a lower bound on how long each message will remain in the (uncompacted) head. + +| xref:reference:properties/topic-properties.adoc#max.compaction.lag.ms[`max.compaction.lag.ms`] +| Topic +| The maximum amount of time in milliseconds that a message remains ineligible for compaction. Use to guarantee the maximum delay between the time a message is written and the time the message becomes eligible for compaction. + +| xref:reference:properties/topic-properties.adoc#min.compaction.lag.ms[`min.compaction.lag.ms`] +| Topic +| The minimum time in milliseconds that a message remains uncompacted in the log. Use to guarantee the minimum length of time that must pass after a message is written before it could be compacted. For example, to provide a lower bound on how long each message will remain in the (uncompacted) head. |=== Redpanda runs a scan every `log_compaction_interval_ms`. During each scan: diff --git a/modules/reference/pages/properties/cluster-properties.adoc b/modules/reference/pages/properties/cluster-properties.adoc index 9b34c656ff..7a5df5640c 100644 --- a/modules/reference/pages/properties/cluster-properties.adoc +++ b/modules/reference/pages/properties/cluster-properties.adoc @@ -3705,6 +3705,26 @@ Maximum compacted segment size after consolidation. --- +=== max_compaction_lag_ms + +For a compacted topic, the maximum time a message remains ineligible for compaction. The topic property `max.compaction.lag.ms` overrides this property. + +*Unit:* milliseconds + +*Requires restart:* No + +*Visibility:* `user` + +*Type:* integer + +*Accepted values:* [`1`, `9223372036854`] + +*Default:* `9223372036854` + +*Related topics*: xref:reference:properties/topic-properties.adoc#max.compaction.lag.ms[`max.compaction.lag.ms`] + +--- + === max_concurrent_producer_ids Maximum number of active producer sessions. When the threshold is passed, Redpanda terminates old sessions. When an idle producer corresponding to the terminated session wakes up and produces, its message batches are rejected, and an out of order sequence error is emitted. Consumers don't affect this setting. @@ -3950,7 +3970,29 @@ The minimum ratio between the number of bytes in dirty segments and the total nu --- -// tag::minimum_topic_replications[] +=== min_compaction_lag_ms + +The minimum amount of time (in ms) that a log segment must remain unaltered before it can be compacted in a compact topic. + +*Unit:* milliseconds + +*Requires restart:* No + +*Visibility:* `user` + +*Type:* integer + +*Accepted values:* [`0`, `9223372036854`] + +*Default:* `0` + +*Related topics*: + +- xref:reference:properties/topic-properties.adoc#min.compaction.lag.ms[`min.compaction.lag.ms`] + +--- + +[[minimum_topic_replications]] === minimum_topic_replications ifdef::env-cloud[] diff --git a/modules/reference/pages/properties/topic-properties.adoc b/modules/reference/pages/properties/topic-properties.adoc index 859d2b8d2f..17f2240dbb 100644 --- a/modules/reference/pages/properties/topic-properties.adoc +++ b/modules/reference/pages/properties/topic-properties.adoc @@ -42,6 +42,12 @@ NOTE: All topic properties take effect immediately after being set. | <> | xref:./cluster-properties.adoc#log_compression_type[`log_compression_type`] +| <> +| xref:./cluster-properties.adoc#max_compaction_lag_ms[`max_compaction_lag_ms`] + +| <> +| xref:./cluster-properties.adoc#min_compaction_lag_ms[`min_compaction_lag_ms`] + | <> | xref:./cluster-properties.adoc#log_message_timestamp_type[`log_message_timestamp_type`] @@ -151,15 +157,12 @@ kubectl exec -- rpk topic alter-config --set retention.m -- ==== -== Properties - -This section describes all supported topic-level properties. - -=== Disk space properties +== Disk space properties Configure properties to manage the disk space used by a topic: - Clean up log segments by deletion and/or compaction (<>). +- Control compaction timing with maximum and minimum lag settings (<> and <>). - Retain logs up to a maximum size per partition before cleanup (<>). - Retain logs for a maximum duration before cleanup (<>). - Periodically close an active log segment (<>). @@ -169,7 +172,7 @@ Configure properties to manage the disk space used by a topic: --- [[cleanuppolicy]] -==== cleanup.policy +=== cleanup.policy The cleanup policy to apply for log segments of a topic. @@ -195,7 +198,7 @@ include::develop:partial$topic-properties-warning.adoc[] --- [[flushms]] -==== flush.ms +=== flush.ms The maximum delay (in ms) between two subsequent fsyncs. After this delay, the log is automatically fsynced. @@ -208,7 +211,7 @@ The maximum delay (in ms) between two subsequent fsyncs. After this delay, the l --- [[flushbytes]] -==== flush.bytes +=== flush.bytes The maximum bytes not fsynced per partition. If this configured threshold is reached, the log is automatically fsynced, even though it wasn't explicitly requested. @@ -221,7 +224,7 @@ The maximum bytes not fsynced per partition. If this configured threshold is rea --- [[mincleanabledirtyratio]] -==== min.cleanable.dirty.ratio +=== min.cleanable.dirty.ratio The minimum ratio between the number of bytes in dirty segments and the total number of bytes in closed segments that must be reached before a partition's log is eligible for compaction in a compact topic. @@ -233,8 +236,42 @@ The minimum ratio between the number of bytes in dirty segments and the total nu --- +[[max.compaction.lag.ms]] +=== max.compaction.lag.ms + +The maximum amount of time (in ms) that a log segment can remain unaltered before it is eligible for compaction in a compact topic. Overrides the cluster property xref:cluster-properties.adoc#max_compaction_lag_ms[`max_compaction_lag_ms`] for the topic. + +*Type:* integer + +*Accepted values:* [`1`, `9223372036854`] + +*Default:* `9223372036854` + +**Related topics**: + +- xref:manage:cluster-maintenance/compaction-settings.adoc#configuration-options[Configure maximum compaction lag] + +--- + +[[min.compaction.lag.ms]] +=== min.compaction.lag.ms + +The minimum amount of time (in ms) that a log segment must remain unaltered before it can be compacted in a compact topic. Overrides the cluster property xref:cluster-properties.adoc#min_compaction_lag_ms[`min_compaction_lag_ms`] for the topic. + +*Type:* integer + +*Accepted values:* [`0`, `9223372036854`] + +*Default:* `0` + +**Related topics**: + +- xref:manage:cluster-maintenance/compaction-settings.adoc#configure-min-compaction-lag[Configure minimum compaction lag] + +--- + [[retentionbytes]] -==== retention.bytes +=== retention.bytes A size-based retention limit that configures the maximum size that a topic partition can grow before becoming eligible for cleanup. @@ -251,7 +288,7 @@ When both size-based (`retention.bytes`) and time-based (`retention.ms`) retenti --- [[retentionms]] -==== retention.ms +=== retention.ms A time-based retention limit that configures the maximum duration that a log's segment file for a topic is retained before it becomes eligible to be cleaned up. To consume all data, a consumer of the topic must read from a segment before its `retention.ms` elapses, otherwise the segment may be compacted and/or deleted. If a non-positive value, no per-topic limit is applied. @@ -268,7 +305,7 @@ When both size-based (`retention.bytes`) and time-based (`retention.ms`) retenti --- [[segmentms]] -==== segment.ms +=== segment.ms The maximum duration that a log segment of a topic is active (open for writes and not deletable). A periodic event, with `segment.ms` as its period, forcibly closes the active segment and transitions, or rolls, to a new active segment. The closed (inactive) segment is then eligible to be cleaned up according to cleanup and retention properties. @@ -283,7 +320,7 @@ If set to a positive duration, `segment.ms` overrides the cluster property xref: --- [[segmentbytes]] -==== segment.bytes +=== segment.bytes The maximum size of an active log segment for a topic. When the size of an active segment exceeds `segment.bytes`, the segment is closed and a new active segment is created. The closed, inactive segment is then eligible to be cleaned up according to retention properties. @@ -300,7 +337,7 @@ When `segment.bytes` is set to a positive value, it overrides the cluster proper --- [[writecaching]] -==== write.caching +=== write.caching The write caching mode to apply to a topic. @@ -319,7 +356,7 @@ When `write.caching` is set, it overrides the cluster property xref:cluster-prop --- -=== Message properties +== Message properties Configure properties for the messages of a topic: @@ -328,7 +365,7 @@ Configure properties for the messages of a topic: - Set the maximum size of a message (<>). [[compressiontype]] -==== compression.type +=== compression.type The type of compression algorithm to apply for all messages of a topic. When a compression type is set for a topic, producers compress and send messages, nodes (brokers) store and send compressed messages, and consumers receive and uncompress messages. @@ -357,7 +394,7 @@ NOTE: The valid values of `compression.type` are taken from `log_compression_typ --- [[messagetimestamptype]] -==== message.timestamp.type +=== message.timestamp.type The source of a message's timestamp: either the message's creation time or its log append time. @@ -373,7 +410,7 @@ When `message.timestamp.type` is set, it overrides the cluster property xref:./c --- [[maxmessagebytes]] -==== max.message.bytes +=== max.message.bytes The maximum size of a message or batch of a topic. If a compression type is enabled, `max.message.bytes` sets the maximum size of the compressed message or batch. @@ -387,7 +424,7 @@ If `max.message.bytes` is set to a positive value, it overrides the cluster prop --- -=== Tiered Storage properties +== Tiered Storage properties Configure properties to manage topics for xref:manage:tiered-storage.adoc[Tiered Storage]: @@ -397,7 +434,7 @@ Configure properties to manage topics for xref:manage:tiered-storage.adoc[Tiered - Delete data from object storage for a topic when it's deleted from local storage (<>). [[redpandaremotewrite]] -==== redpanda.remote.write +=== redpanda.remote.write A flag for enabling Redpanda to upload data for a topic from local storage to object storage. When set to `true` together with <>, it enables the xref:manage:tiered-storage.adoc[Tiered Storage] feature. @@ -410,7 +447,7 @@ A flag for enabling Redpanda to upload data for a topic from local storage to ob --- [[redpandaremoteread]] -==== redpanda.remote.read +=== redpanda.remote.read A flag for enabling Redpanda to fetch data for a topic from object storage to local storage. When set to `true` together with <>, it enables the xref:manage:tiered-storage.adoc[Tiered Storage] feature. @@ -423,7 +460,7 @@ A flag for enabling Redpanda to fetch data for a topic from object storage to lo --- [[initialretentionlocaltargetbytes]] -==== initial.retention.local.target.bytes +=== initial.retention.local.target.bytes A size-based initial retention limit for Tiered Storage that determines how much data in local storage is transferred to a partition replica when a cluster is resized. If `null` (default), all locally retained data is transferred. @@ -436,7 +473,7 @@ A size-based initial retention limit for Tiered Storage that determines how much --- [[initialretentionlocaltargetms]] -==== initial.retention.local.target.ms +=== initial.retention.local.target.ms A time-based initial retention limit for Tiered Storage that determines how much data in local storage is transferred to a partition replica when a cluster is resized. If `null` (default), all locally retained data is transferred. @@ -449,7 +486,7 @@ A time-based initial retention limit for Tiered Storage that determines how much --- [[retentionlocaltargetbytes]] -==== retention.local.target.bytes +=== retention.local.target.bytes A size-based retention limit for Tiered Storage that configures the maximum size that a topic partition in local storage can grow before becoming eligible for cleanup. It applies per partition and is equivalent to <> without Tiered Storage. @@ -462,7 +499,7 @@ A size-based retention limit for Tiered Storage that configures the maximum size --- [[retentionlocaltargetms]] -==== retention.local.target.ms +=== retention.local.target.ms A time-based retention limit for Tiered Storage that sets the maximum duration that a log's segment file for a topic is retained in local storage before it's eligible for cleanup. This property is equivalent to <> without Tiered Storage. @@ -475,7 +512,7 @@ A time-based retention limit for Tiered Storage that sets the maximum duration t --- [[redpandaremoterecovery]] -==== redpanda.remote.recovery +=== redpanda.remote.recovery A flag that enables the recovery or reproduction of a topic from object storage for Tiered Storage. The recovered data is saved in local storage, and the maximum amount of recovered data is determined by the local storage retention limits of the topic. @@ -490,7 +527,7 @@ TIP: You can only configure `redpanda.remote.recovery` when you create a topic. --- [[redpandaremotedelete]] -==== redpanda.remote.delete +=== redpanda.remote.delete A flag that enables deletion of data from object storage for Tiered Storage when it's deleted from local storage for a topic. @@ -507,11 +544,11 @@ NOTE: `redpanda.remote.delete` doesn't apply to Remote Read Replica topics: a Re --- -=== Remote Read Replica properties +== Remote Read Replica properties Configure properties to manage topics for xref:manage:remote-read-replicas.adoc[Remote Read Replicas]. -==== redpanda.remote.readreplica +=== redpanda.remote.readreplica The name of the object storage bucket for a Remote Read Replica topic. @@ -525,11 +562,11 @@ CAUTION: Setting `redpanda.remote.readreplica` together with either `redpanda.re --- -=== Apache Iceberg integration properties +== Apache Iceberg integration properties Integrate Redpanda topics as Iceberg tables. -==== redpanda.iceberg.mode +=== redpanda.iceberg.mode Enable the Iceberg integration for the topic. You can choose one of four modes. @@ -549,7 +586,7 @@ Enable the Iceberg integration for the topic. You can choose one of four modes. --- -==== redpanda.iceberg.delete +=== redpanda.iceberg.delete Whether the corresponding Iceberg table is deleted upon deleting the topic. @@ -561,7 +598,7 @@ Whether the corresponding Iceberg table is deleted upon deleting the topic. --- -==== redpanda.iceberg.invalid.record.action +=== redpanda.iceberg.invalid.record.action Whether to write invalid records to a dead-letter queue (DLQ). @@ -578,7 +615,7 @@ Whether to write invalid records to a dead-letter queue (DLQ). --- -==== redpanda.iceberg.partition.spec +=== redpanda.iceberg.partition.spec The https://iceberg.apache.org/docs/nightly/partitioning/[partitioning^] specification for the Iceberg table. @@ -590,7 +627,7 @@ The https://iceberg.apache.org/docs/nightly/partitioning/[partitioning^] specifi --- -==== redpanda.iceberg.target.lag.ms +=== redpanda.iceberg.target.lag.ms Controls how often the data in the Iceberg table is refreshed with new data from the topic. Redpanda attempts to commit all data produced to the topic within the lag target, subject to resource availability. @@ -602,12 +639,33 @@ Controls how often the data in the Iceberg table is refreshed with new data from --- -=== Redpanda topic properties +== Redpanda topic properties Configure Redpanda-specific topic properties. +--- + +[[deleteretentionms]] +=== delete.retention.ms + +The retention time for tombstone records in a compacted topic. Redpanda removes tombstone records after the retention limit is exceeded. + +If you have enabled Tiered Storage and set <> or <> for the topic, you cannot enable tombstone removal. + +If both `delete.retention.ms` and the cluster property config_ref:tombstone_retention_ms,true,properties/cluster-properties[] are set, `delete.retention.ms` overrides the cluster level tombstone retention for an individual topic. + +*Unit:* milliseconds + +**Default**: null + +**Related topics**: + +- xref:manage:cluster-maintenance/compaction-settings.adoc#tombstone-record-removal[Tombstone record removal] + +--- + [[redpandaleaderspreference]] -==== redpanda.leaders.preference +=== redpanda.leaders.preference The preferred location (rack) for partition leaders of a topic. @@ -628,7 +686,7 @@ If the cluster configuration property config_ref:enable_rack_awareness,true,prop --- -==== replication.factor +=== replication.factor The number of replicas of a topic to save in different nodes (brokers) of a cluster. @@ -645,24 +703,7 @@ NOTE: Although `replication.factor` isn't returned or displayed by xref:referenc --- -[[deleteretentionms]] -==== delete.retention.ms - -The retention time for tombstone records in a compacted topic. Redpanda removes tombstone records after the retention limit is exceeded. - -If you have enabled Tiered Storage and set <> or <> for the topic, you cannot enable tombstone removal. - -If both `delete.retention.ms` and the cluster property config_ref:tombstone_retention_ms,true,properties/cluster-properties[] are set, `delete.retention.ms` overrides the cluster level tombstone retention for an individual topic. - -*Unit:* milliseconds -**Default**: null - -**Related topics**: - -- xref:manage:cluster-maintenance/compaction-settings.adoc#tombstone-record-removal[Tombstone record removal] - ---- == Related topics From 984361fd6a78959093c60431365b51a5216cf0b4 Mon Sep 17 00:00:00 2001 From: Kat Batuigas <36839689+kbatuigas@users.noreply.github.com> Date: Mon, 21 Jul 2025 12:49:36 -0700 Subject: [PATCH 13/27] [25.2] Serialized schema in Schema Registry API, support for confluent-kafka-javascript (#1205) Co-authored-by: Joyce Fee <102751339+Feediver1@users.noreply.github.com> --- modules/develop/pages/kafka-clients.adoc | 5 +- .../pages/release-notes/redpanda.adoc | 205 +----------------- .../pages/schema-reg/schema-reg-api.adoc | 44 +++- 3 files changed, 49 insertions(+), 205 deletions(-) diff --git a/modules/develop/pages/kafka-clients.adoc b/modules/develop/pages/kafka-clients.adoc index 50c503aab1..e393177e32 100644 --- a/modules/develop/pages/kafka-clients.adoc +++ b/modules/develop/pages/kafka-clients.adoc @@ -34,9 +34,10 @@ The following clients have been validated with Redpanda. | https://github.com/kafka-rust/kafka-rust[kafka-rust^] | Node.js -| https://kafka.js.org[KafkaJS^] +a| +* https://kafka.js.org[KafkaJS^] +* https://github.com/confluentinc/confluent-kafka-javascript[confluent-kafka-javascript^] -Note: Redpanda has known issues interacting with the Schema Registry with https://www.confluent.io/blog/introducing-confluent-kafka-javascript/[confluent-kafka-javascript^]. |=== Clients that have not been validated by Redpanda Data, but use the Kafka protocol, remain compatible with Redpanda subject to the limitations below (particularly those based on librdkafka, such as confluent-kafka-dotnet or confluent-python). diff --git a/modules/get-started/pages/release-notes/redpanda.adoc b/modules/get-started/pages/release-notes/redpanda.adoc index b22695bd62..8e4b461330 100644 --- a/modules/get-started/pages/release-notes/redpanda.adoc +++ b/modules/get-started/pages/release-notes/redpanda.adoc @@ -8,16 +8,20 @@ This topic includes new content added in version {page-component-version}. For a * xref:redpanda-cloud:get-started:whats-new-cloud.adoc[] * xref:redpanda-cloud:get-started:cloud-overview.adoc#redpanda-cloud-vs-self-managed-feature-compatibility[Redpanda Cloud vs Self-Managed feature compatibility] -== Crash recording for improved support +== Retrieve serialized Protobuf schemas with Schema Registry API -Redpanda now records detailed information about broker crashes to help streamline troubleshooting and reduce time to resolution. Crash reports include information such as a stack trace, exception details, the Redpanda broker version, and the timestamp of when the crash occurred. The recorded crash reports are now automatically collected as part of xref:troubleshoot:debug-bundle/overview.adoc[debug bundles], providing Redpanda customer support with more context to diagnose and resolve issues faster. +Starting in version 25.2, the Schema Registry API supports retrieving serialized schemas (Protobuf only) using the `format=serialized` query parameter for the following endpoints: -== New health probes for broker restarts and upgrades +- `GET /schemas/ids/\{id}` +- `POST /subjects/\{subject}` +- `GET subjects/\{subject}/versions/\{version}` +- `GET subjects/\{subject}/versions/\{version}/schema` -The Redpanda Admin API now includes new health probes to help you ensure safe broker restarts and upgrades. The xref:api:ROOT:admin-api.adoc#get-/v1/broker/pre_restart_probe[`pre_restart_probe`] endpoint identifies potential risks if a broker is restarted, and xref:api:ROOT:admin-api.adoc#get-/v1/broker/post_restart_probe[`post_restart_probe`] indicates how much of its workloads a broker has reclaimed after the restart. See also: +This helps facilitate migration of Protobuf clients to Redpanda. See the xref:api:ROOT:schema-registry-api.adoc[Schema Registry API reference] for details. -* xref:manage:cluster-maintenance/rolling-restart.adoc[] -* xref:upgrade:rolling-upgrade.adoc[] +== Support for confluent-kafka-javascript client + +The `confluent-kafka-javascript` client is now validated with Redpanda. For a list of validated clients, see xref:develop:kafka-clients.adoc[]. == HTTP Proxy authentication changes @@ -34,193 +38,4 @@ If you need to maintain the current HTTP Proxy functionality while transitioning - xref:reference:properties/broker-properties.adoc#scram_password[`scram_password`]: Password for SASL/SCRAM authentication - xref:reference:properties/broker-properties.adoc#sasl_mechanism[`sasl_mechanism`]: SASL mechanism (typically `SCRAM-SHA-256` or `SCRAM-SHA-512`) -== Redpanda Console v3.0.0 - -The Redpanda Console v3.0.0 release includes the following updates: - -=== New features - -Redpanda Console now supports unified authentication and authorization between Console and Redpanda, including user impersonation. This means you can authenticate to Redpanda using the same credentials you use for Redpanda Console. - -See xref:console:config/security/authentication.adoc[] for more information. - -=== Breaking changes - -* **Authentication and authorization:** - - Renamed the `login` stanza to `authentication`. - - Renamed `login.jwtSecret` to `authentication.jwtSigningKey`. - - Removed the plain login provider. - - OIDC group-based authorization is no longer supported. - - Role bindings must now be configured in the `authorization.roleBindings` stanza (no longer stored in a separate file). - -* **Schema Registry:** - - Moved from under the `kafka` stanza to a top-level `schemaRegistry` stanza. - - All authentication settings for Schema Registry are now defined under `schemaRegistry.authentication`. - -* **Admin API:** - - Authentication for the Redpanda Admin API is now defined under `redpanda.adminApi.authentication`. - -* **Serialization settings:** - - Moved `kafka.protobuf`, `kafka.cbor`, and `kafka.messagePack` to a new top-level `serde` stanza. - - The `kafka.protobuf.schemaRegistry` setting is deprecated. Use the top-level `schemaRegistry` stanza instead. - -* **Connect:** - - Renamed the `connect` stanza to `kafkaConnect` to avoid ambiguity with Redpanda Connect. - -* **Console settings:** - - Moved `console.maxDeserializationPayloadSize` to `serde.maxDeserializationPayloadSize`. - -*Action required*: xref:migrate:console-v3.adoc[]. - -=== Other changes - -The admin panel has been removed from the Redpanda Console UI. To manage users, use the Security page. To generate debug bundles, use the link on the Cluster overview page. To upload a new license, use the link on the Cluster overview page or in the license expiration warning banner. - -== Iceberg improvements - -Iceberg-enabled topics now support the following: - -- xref:manage:iceberg/about-iceberg-topics.adoc#use-custom-partitioning[Custom partitioning] for improved query performance. -- xref:manage:iceberg/query-iceberg-topics.adoc#access-iceberg-tables[Snapshot expiry]. -- xref:manage:iceberg/about-iceberg-topics.adoc#manage-dead-letter-queue[Dead-letter queue] for invalid records. -- xref:manage:iceberg/about-iceberg-topics.adoc#schema-evolution[Schema evolution], with schema mutations implemented according to the Iceberg specification. -- For Avro and Protobuf data, structured Iceberg tables without the use of the Schema Registry wire format or SerDes. See xref:manage:iceberg/choose-iceberg-mode.adoc[] for more information. - -== Protobuf normalization in Schema Registry - -Redpanda now supports normalization of Protobuf schemas in the Schema Registry. You can normalize Avro, JSON, and Protobuf schemas both during registration and lookup. For more information, see the xref:manage:schema-reg/schema-reg-overview.adoc#schema-normalization[Schema Registry overview], and the xref:api:ROOT:pandaproxy-schema-registry.adoc[Schema Registry API reference]. - -== Protobuf well-known types in `rpk` - -Support for https://protobuf.dev/reference/protobuf/google.protobuf/[Protobuf well-known types^] is available in `rpk` when encoding and decoding records using Schema Registry. - -== SASL/PLAIN authentication - -You now can configure Kafka clients to authenticate using xref:manage:security/authentication#enable-sasl.adoc[SASL/PLAIN] with a single account using the same username and password. Unlike SASL/SCRAM, which uses a challenge response with hashed credentials, SASL/PLAIN transmits plaintext passwords. You enable SASL/PLAIN by appending `PLAIN` to the list of SASL mechanisms. - -== Pause and resume uploads - -Redpanda now supports xref:manage:tiered-storage.adoc#pause-and-resume-uploads[pausing and resuming uploads] to object storage when running Tiered Storage, with no risk to data consistency or data loss. You can use the xref:reference:properties/object-storage-properties.adoc#cloud_storage_enable_segment_uploads[`cloud_storage_enable_segment_uploads`] property to pause or resume uploads to help you troubleshoot any issues that occur in your cluster during uploads. - -== Trial license - -All new Redpanda clusters automatically receive a xref:get-started:licensing/overview.adoc#trial-license[trial license] valid for 30 days. You can extend this trial for 30 days using the new xref:reference:rpk/rpk-generate/rpk-generate-license.adoc[`rpk generate license`] command. - -== Metrics - -The following metrics are new in this version: - -=== Consumer lag gauges - -Redpanda can now expose dedicated consumer lag gauges that eliminate the need to calculate lag manually. These metrics provide real-time insights into consumer group performance and help identify issues. The following metrics are available: - -- xref:reference:public-metrics-reference.adoc#redpanda_kafka_consumer_group_lag_max[`redpanda_kafka_consumer_group_lag_max`]: -Reports the maximum lag observed among all partitions for a consumer group. This metric helps pinpoint the partition with the greatest delay, indicating potential performance or configuration issues. - -- xref:reference:public-metrics-reference.adoc#redpanda_kafka_consumer_group_lag_sum[`redpanda_kafka_consumer_group_lag_sum`]: -Aggregates the lag across all partitions, providing an overall view of data consumption delay for the consumer group. - -See xref:manage:monitoring.adoc#consumers[Monitor consumer group lag] for more information. - -=== Other metrics - -- xref:reference:public-metrics-reference.adoc#redpanda_rpc_received_bytes[`redpanda_rpc_received_bytes`]: -Reports the number of bytes received from valid requests from the client. - -- xref:reference:public-metrics-reference.adoc#redpanda_rpc_sent_bytes[`redpanda_rpc_sent_bytes`]: -Reports the number of bytes sent to clients. - -- xref:reference:public-metrics-reference.adoc#redpanda_kafka_request_bytes_total[`redpanda_kafka_request_bytes_total`]: -Reports the total number of bytes read from or written to the partitions of a topic. - -- xref:reference:public-metrics-reference.adoc#redpanda_cloud_storage_paused_archivers[`redpanda_cloud_storage_paused_archivers`]: -Reports the number of paused archivers. - -== rpk commands - -The following `rpk` commands are new in this version: - -- xref:reference:rpk/rpk-generate/rpk-generate-license.adoc[`rpk generate license`] - -- xref:reference:rpk/rpk-topic/rpk-topic-analyze.adoc[`rpk topic analyze`] - -== Cluster properties - -The following cluster properties are new in this version: - -=== Metrics - -- xref:reference:properties/cluster-properties.adoc#enable_consumer_group_metrics[`enable_consumer_group_metrics`]: Enables detailed consumer group metrics collection. -- xref:reference:properties/cluster-properties.adoc#enable_host_metrics[`enable_host_metrics`]: Enables exporting of some host metrics like `/proc/diskstats`, `/proc/snmp` and `/proc/net/netstat`. - -=== Iceberg integration - -- xref:reference:properties/cluster-properties.adoc#iceberg_backlog_controller_p_coeff[`iceberg_backlog_controller_p_coeff`]: Configures the coefficient for backlog control in Iceberg tables. -- xref:reference:properties/cluster-properties.adoc#iceberg_default_partition_spec[`iceberg_default_partition_spec`]: Sets the default partition specification for Iceberg tables. -- xref:reference:properties/cluster-properties.adoc#iceberg_disable_snapshot_tagging[`iceberg_disable_snapshot_tagging`]: Disables snapshot tagging in Iceberg. -- xref:reference:properties/cluster-properties.adoc#iceberg_invalid_record_action[`iceberg_invalid_record_action`]: Specifies the action for handling invalid records in Iceberg. -- xref:reference:properties/cluster-properties.adoc#iceberg_rest_catalog_authentication_mode[`iceberg_rest_catalog_authentication_mode`]: Defines the authentication mode for the Iceberg REST catalog. -- xref:reference:properties/cluster-properties.adoc#iceberg_rest_catalog_oauth2_server_uri[`iceberg_rest_catalog_oauth2_server_uri`]: Specifies the OAuth2 server URI for the Iceberg REST catalog. -- xref:reference:properties/cluster-properties.adoc#iceberg_target_backlog_size[`iceberg_target_backlog_size`]: Sets the target backlog size for Iceberg. -- xref:reference:properties/cluster-properties.adoc#iceberg_target_lag_ms[`iceberg_target_lag_ms`]: Configures the target lag (in milliseconds) for Iceberg. - -=== Log compaction - -- xref:reference:properties/cluster-properties.adoc#log_compaction_adjacent_merge_self_compaction_count[`log_compaction_adjacent_merge_self_compaction_count`]: Adjusts the number of self-compaction merges during log compaction. -- xref:reference:properties/cluster-properties.adoc#min_cleanable_dirty_ratio[`min_cleanable_dirty_ratio`]: Sets the minimum ratio between the number of bytes in dirty segments and the total number of bytes in closed segments that must be reached before a partition's log is eligible for compaction in a compact topic. - -=== Raft optimization - -- xref:reference:properties/cluster-properties.adoc#raft_max_buffered_follower_append_entries_bytes_per_shard[`raft_max_buffered_follower_append_entries_bytes_per_shard`]: Limits the maximum bytes buffered for follower append entries per shard. -- xref:reference:properties/cluster-properties.adoc#raft_max_inflight_follower_append_entries_requests_per_shard[`raft_max_inflight_follower_append_entries_requests_per_shard`]: Replaces the deprecated `raft_max_concurrent_append_requests_per_follower` to limit in-flight follower append requests per shard. - -=== Tiered Storage - -- xref:reference:properties/object-storage-properties.adoc#cloud_storage_enable_remote_allow_gaps[`cloud_storage_enable_remote_allow_gaps`]: Controls the eviction of locally stored log segments when Tiered Storage uploads are paused. - -- xref:reference:properties/object-storage-properties.adoc#cloud_storage_enable_segment_uploads[`cloud_storage_enable_segment_uploads`]: Controls the upload of log segments to Tiered Storage. If set to `false`, this property temporarily pauses all log segment uploads from the Redpanda cluster. - -=== TLS configuration - -- xref:reference:properties/cluster-properties.adoc#tls_certificate_name_format[`tls_certificate_name_format`]: Sets the format of the certificates's distinguished name to use for mTLS principal mapping. -- xref:reference:properties/cluster-properties.adoc#tls_enable_renegotiation[`tls_enable_renegotiation`]: Enables support for TLS renegotiation. - -=== Throughput quota - -- xref:reference:properties/cluster-properties.adoc#target_fetch_quota_byte_rate[`target_fetch_quota_byte_rate`]: Configures the fetch quota in bytes per second. - -=== Topic configuration - -- xref:reference:properties/cluster-properties.adoc#topic_partitions_memory_allocation_percent[`topic_partitions_memory_allocation_percent`]: Adjusts the percentage of memory allocated for topic partitions. - -=== Scheduler improvements - -- xref:reference:properties/cluster-properties.adoc#use_kafka_handler_scheduler_group[`use_kafka_handler_scheduler_group`]: Enables the Kafka handler scheduler group. -- xref:reference:properties/cluster-properties.adoc#use_produce_scheduler_group[`use_produce_scheduler_group`]: Enables the produce scheduler group. - -=== Changes to the default configuration - -- xref:reference:properties/cluster-properties.adoc#storage_read_readahead_count[`storage_read_readahead_count`]: Reduced default from `10` to `1` to optimize read throughput and minimize unaccounted memory usage, lowering the risk of OOM errors on local storage paths. -- xref:reference:properties/cluster-properties.adoc#topic_memory_per_partition[`topic_memory_per_partition`]: Decreased default from `4194304` to `204800` -- xref:reference:properties/cluster-properties.adoc#topic_partitions_per_shard[`topic_partitions_per_shard`]: Increased default from `1000` to `5000` to support larger partition counts per shard. - -=== Client quota properties removed - -The following client configuration properties were deprecated in version 24.2.1, and have been removed in this release: - -* `kafka_client_group_byte_rate_quota` -* `kafka_client_group_fetch_byte_rate_quota` -* `target_quota_byte_rate` -* `target_fetch_quota_byte_rate` -* `kafka_admin_topic_api_rate` - -Use xref:reference:rpk/rpk-cluster/rpk-cluster-quotas.adoc[`rpk cluster quotas`] to manage xref:manage:cluster-maintenance/manage-throughput.adoc#client-throughput-limits[client throughput limits] based on the Kafka API. - -== Broker properties - -- xref:reference:properties/broker-properties.adoc#node_id_overrides[`node_id_overrides`]: Overrides a broker ID and UUID at broker startup. - -== Topic properties - -- xref:reference:properties/topic-properties.adoc#mincleanabledirtyratio[`min.cleanable.dirty.ratio`]: Sets the minimum ratio between the number of bytes in dirty segments and the total number of bytes in closed segments that must be reached before a partition's log is eligible for compaction in a compact topic. diff --git a/modules/manage/pages/schema-reg/schema-reg-api.adoc b/modules/manage/pages/schema-reg/schema-reg-api.adoc index 0a88167237..b9bf310dcb 100644 --- a/modules/manage/pages/schema-reg/schema-reg-api.adoc +++ b/modules/manage/pages/schema-reg/schema-reg-api.adoc @@ -199,7 +199,7 @@ When you register an evolved schema for an existing subject, the version `id` is == Retrieve a schema -To retrieve a registered schema from the registry, make a GET request to the `/schemas/ids/` endpoint: +To retrieve a registered schema from the registry, make a GET request to the `/schemas/ids/\{id}` endpoint: [tabs] ==== @@ -292,7 +292,7 @@ This returns the subject: == Retrieve schema versions of a subject -To query the schema versions of a subject, make a GET request to the `/subjects//versions` endpoint. +To query the schema versions of a subject, make a GET request to the `/subjects/\{subject}/versions` endpoint. For example, to get the schema versions of the `sensor-value` subject: @@ -325,9 +325,9 @@ This returns the version ID: ] ``` -== Retrieve a schema of a subject +== Retrieve a subject's specific version of a schema -To retrieve a schema associated with a subject, make a GET request to the `/subjects//versions/` endpoint: +To retrieve a specific version of a schema associated with a subject, make a GET request to the `/subjects/\{subject}/versions/\{version}` endpoint: [tabs] ==== @@ -462,7 +462,7 @@ As applications change and their schemas evolve, you may find that producer sche include::manage:partial$schema-compatibility.adoc[] -To set the compatibility type for a subject, make a PUT request to `/config/` with the specific compatibility type: +To set the compatibility type for a subject, make a PUT request to `/config/\{subject}` with the specific compatibility type: [tabs] ==== @@ -717,8 +717,8 @@ curl -H 'Content-type: application/vnd.schemaregistry.v1+json' http://127.0.0.1: The Schema Registry API provides DELETE endpoints for deleting a single schema or all schemas of a subject: -- `/subjects//versions/` -- `/subjects/` +- `/subjects/\{subject}/versions/\{version}` +- `/subjects/\{subject}` Schemas cannot be deleted if any other schemas reference it. @@ -851,7 +851,7 @@ Redpanda doesn't recommend hard (permanently) deleting schemas in a production s The DELETE APIs are primarily used during the development phase, when schemas are being iterated and revised. ==== -To hard delete a schema, use the `--permanent` flag with the `rpk registry schema delete` command, or for curl or Python, make two DELETE requests with the second request setting the `permanent` parameter to `true` (`/subjects//versions/?permanent=true`): +To hard delete a schema, use the `--permanent` flag with the `rpk registry schema delete` command, or for curl or Python, make two DELETE requests with the second request setting the `permanent` parameter to `true` (`/subjects/\{subject}/versions/\{version}?permanent=true`): [tabs] ==== @@ -980,6 +980,34 @@ This request returns the mode that is enforced. If the subject is set to a speci curl -X PUT -H "Content-Type: application/vnd.schemaregistry.v1+json" --data '{"mode": "READONLY"}' http://localhost:8081/mode/ ``` +== Retrieve serialized schemas + +Starting in Redpanda version 25.2, the following endpoints return serialized schemas (Protobuf only) using the `format=serialized` query parameter: + +[cols="1,1"] +|=== +|Operation |Path + +| <> +|`GET /schemas/ids/\{id}?format=serialized` + +| Check if a schema is already registered for a subject +|`POST /subjects/\{subject}?format=serialized` + +|<> +|`GET /subjects/\{subject}/versions/\{version}?format=serialized` + +| Get the unescaped schema only for a subject +|`GET /subjects/\{subject}/versions/\{version}/schema?format=serialized` +|=== + +The `serialized` format returns the Protobuf schema in its wire binary format in Base64. + +- Passing an empty string (`format=''`) returns the schema in the current (default) format. +- For Avro, `resolved` is a valid value, but it is not currently supported and returns a 501 Not Implemented error. +- For Protobuf, `serialized` and `ignore_extensions` are valid, but only `serialized` is currently supported; passing `ignore_extensions` returns a 501 Not Implemented error. +- Cross-schema conditions such as `resolved` with Protobuf or `serialized` with Avro are ignored and the schema is returned in the default format. + == Suggested reading ifndef::env-cloud[] * xref:manage:schema-reg/schema-reg-overview.adoc[] From 01d017e8c16f76f03abf45ffb7974b057fcfb033 Mon Sep 17 00:00:00 2001 From: JakeSCahill Date: Wed, 23 Jul 2025 13:33:53 +0100 Subject: [PATCH 14/27] DOC-1499 Update compatibility matrix for 25.2 --- modules/upgrade/pages/k-compatibility.adoc | 89 ++++++++++++++++------ 1 file changed, 64 insertions(+), 25 deletions(-) diff --git a/modules/upgrade/pages/k-compatibility.adoc b/modules/upgrade/pages/k-compatibility.adoc index e921797475..95e41864c0 100644 --- a/modules/upgrade/pages/k-compatibility.adoc +++ b/modules/upgrade/pages/k-compatibility.adoc @@ -11,24 +11,20 @@ include::partial$versioning.adoc[] The Redpanda Helm chart and Redpanda Operator are versioned and tested alongside specific Redpanda core releases, Kubernetes, and Helm. -Starting from version v25.1.1-beta1, the Redpanda Operator and Redpanda Helm chart follow a new versioning scheme aligned with Redpanda core releases: +Starting from version v25.1.1, the Redpanda Operator and Redpanda Helm chart follow a new versioning scheme aligned with Redpanda core releases: - `v25.1` refers to the Redpanda core feature release deployed by default. - The patch version denotes the patch version for either the operator or Helm chart. It is not the patch version of Redpanda core. -- The beta version is used for pre-release versions of the Redpanda Operator and Helm chart. These versions are not intended for production use. +NOTE: If a version includes `-beta`, it is a pre-release version of the Redpanda Operator and Helm chart. These versions are not intended for production use. Beta versions are available only for testing and feedback. They are not supported by Redpanda and should not be used in production environments. To give feedback on beta releases, reach out to the Redpanda team in https://redpanda.com/slack[Redpanda Community Slack^]. Each Redpanda Operator and Helm chart version supports the corresponding Redpanda core version plus one minor version above and one below. This approach ensures flexibility during upgrades. For example, Redpanda Operator version 25.1.1 supports Redpanda core versions 25.2.x, 25.1.x, and 24.3.x. Redpanda Operator and Helm chart versions are supported only while their associated Redpanda core version remains supported. If the core version reaches end of life (EoL), the corresponding versions of the Redpanda Operator and Helm chart also reach EoL. -NOTE: Beta versions are available only for testing and feedback. They are not supported by Redpanda and should not be used in production environments. To give feedback on beta releases, reach out to the Redpanda team in https://redpanda.com/slack[Redpanda Community Slack^]. - == Kubernetes version policy -The minimum supported Kubernetes version is {supported-kubernetes-version}. - The Kubernetes versions listed in the compatibility matrix are suggested ranges, based on testing and reported usage. Not every patch or minor version within these ranges is explicitly tested. To request compatibility testing of a Kubernetes version outside of the given ranges, contact https://support.redpanda.com/hc/en-us/requests/new[Redpanda support^]. @@ -41,32 +37,75 @@ Redpanda Core has no direct dependency on Kubernetes. Compatibility is influence |=== |Redpanda Core / `rpk` |Helm Chart |Operator Helm Chart |Operator |Helm CLI |Kubernetes -// |25.2.x -// |25.3-k8sx, 25.2-k8sx, 25.1-k8sx -// |25.3-k8sx, 25.2-k8sx, 25.1-k8sx -// |25.3-k8sx, 25.2-k8sx, 25.1-k8sx -// |3.13+ -// |1.30.x - 1.33.x +.2+|25.2.x +|25.2.x +|25.2.x +|25.2.x +|3.12+ +d|1.30.x - 1.33.x{fn-k8s-compatibility} + +|25.1.x +|25.1.x +|25.1.x +|3.12+ +d|1.28.x - 1.32.x{fn-k8s-compatibility} + +.3+|25.1.x +|25.1.x +|25.1.x |25.1.x -|25.1.1-betaX, 5.10.x, 5.9.x -|25.1.1-betaX, 2.4.x, 0.4.36 -|25.1.1-betaX, 2.4.x, 2.3.x |3.12+ // d (default) here is required to get footnotes to appear at the bottom of the page // instead of inside the table cell. // See https://github.com/asciidoctor/asciidoctor/issues/2350#issuecomment-546841684 d|1.28.x - 1.32.x{fn-k8s-compatibility} -|24.3.x -|25.1.1-betaX, 5.9.x -|25.1.1-betaX, 0.4.41, 0.4.36, 0.4.29 -|25.1.1-betaX, 2.4.x, 2.3.x, 2.2.x +|5.10.x +|2.4.x +|2.4.x +|3.12+ +d|1.28.x - 1.32.x{fn-k8s-compatibility} + +|5.9.x +|0.4.36 +|2.3.x +|3.12+ +d|1.28.x - 1.32.x{fn-k8s-compatibility} + +.4+|24.3.x +|25.1.x +|25.1.x +|25.1.x +|3.11+ +d|1.28.x - 1.32.x{fn-k8s-compatibility} + +|5.9.x +|0.4.41 +|2.4.x +|3.11+ +d|1.28.x - 1.31.x{fn-k8s-compatibility} + +|5.9.x +|0.4.36 +|2.3.x +|3.11+ +d|1.28.x - 1.31.x{fn-k8s-compatibility} + +|5.9.x +|0.4.29 +|2.2.x |3.11+ d|1.28.x - 1.31.x{fn-k8s-compatibility} -|24.2.x -|5.9.x, 5.8.x +.2+|24.2.x +|5.9.x +|0.4.29 +|2.2.x +|3.10+ +d|1.27.x - 1.30.x{fn-k8s-compatibility} + +|5.8.x |0.4.29 |2.2.x |3.10+ @@ -90,12 +129,12 @@ Upgrading the Helm chart may also upgrade Redpanda Console. Because of this buil |Redpanda Console |Helm Chart |Operator |v3.x.x -|v25.1.1-beta1 -|v25.1.1-beta1 +|25.2.x, 25.1.x +|Not yet supported |v2.x.x -| 5.10.1, 5.9.x, 5.8.x -|2.4.x, 2.3.x, 2.2.x +|5.10.1, 5.9.x, 5.8.x +|25.2.x, 25.1.x, 2.4.x, 2.3.x, 2.2.x |=== From 07a659628e725592fe0eb2ac0dd26e20f97a5908 Mon Sep 17 00:00:00 2001 From: JakeSCahill Date: Thu, 24 Jul 2025 08:56:28 +0100 Subject: [PATCH 15/27] Document cluster scope for the Kubernetes operator --- .../kubernetes/k-deployment-overview.adoc | 4 +- .../kubernetes/k-production-deployment.adoc | 26 +++++-------- .../partials/kubernetes/deploy-operator.adoc | 18 +++++++++ .../pages/release-notes/operator.adoc | 38 ++++++++++++++++--- .../pages/kubernetes/helm-to-operator.adoc | 4 +- modules/upgrade/pages/k-upgrade-operator.adoc | 2 +- 6 files changed, 66 insertions(+), 26 deletions(-) diff --git a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-deployment-overview.adoc b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-deployment-overview.adoc index 16c65c4aea..692d830adf 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-deployment-overview.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-deployment-overview.adoc @@ -41,7 +41,7 @@ To deploy Redpanda in Kubernetes, you can choose between Helm for its simplicity | Multi-tenancy management | ✅ | ⚠️ -| Helm requires separate releases to manage multiple clusters, making management more complex. The Redpanda Operator simplifies this through declarative custom resources. +| Helm requires separate releases to manage multiple clusters, making management more complex. The Redpanda Operator simplifies multi-tenancy by managing clusters across different namespaces from a single operator instance. |=== @@ -50,7 +50,7 @@ TIP: If you are already using the Redpanda Helm chart and want to migrate to the [[helm-and-redpanda-operator]] === Redpanda Operator -The Redpanda Operator is designed for production-grade Redpanda deployments, offering enhanced lifecycle management, automation, and GitOps compatibility. +The Redpanda Operator is designed for production-grade Redpanda deployments, offering enhanced lifecycle management, automation, and GitOps compatibility. The Redpanda Operator defaults to cluster scope, enabling it to manage multiple Redpanda clusters across different namespaces from a single operator instance. The Redpanda Operator directly reconciles Redpanda resources, performing tasks such as installations, updates, and cleanup. diff --git a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc index 746dc2e839..ad2b495a2a 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc @@ -30,7 +30,6 @@ Operator:: + -- -NOTE: The Redpanda Operator is namespace scoped. You must install the Redpanda Operator in the same namespace as your Redpanda resource (Redpanda cluster). . Make sure that you have permission to install custom resource definitions (CRDs): + @@ -107,8 +106,6 @@ spec: ```bash kubectl apply -f redpanda-cluster.yaml --namespace ``` -+ -NOTE: The Redpanda resource must be deployed in the same namespace as the Redpanda Operator. Each new deployment of Redpanda requires a separate namespace. . Wait for the Redpanda Operator to deploy Redpanda using the Helm chart: + @@ -256,19 +253,8 @@ Operator:: + -- -. Install another instance of the Redpanda Operator in a different namespace to your existing ones. This Redpanda Operator will manage Redpanda clusters only in its namespace. -+ -[,bash,subs="attributes+"] ----- -helm repo add redpanda https://charts.redpanda.com -helm repo update -helm upgrade --install redpanda-controller redpanda/operator \ - --namespace \ - --set image.tag={latest-operator-version} \ - --create-namespace ----- -. Apply a Redpanda resource in the same namespace as your new Redpanda Operator to deploy your new Redpanda cluster. +. Deploy additional Redpanda clusters in different namespaces. Your existing Redpanda Operator will automatically manage them. + NOTE: Make sure to use unique node ports for the listeners in your Redpanda resource so that they don't conflict with any existing node ports in your other Redpanda clusters. See <>. + @@ -279,6 +265,7 @@ apiVersion: cluster.redpanda.com/v1alpha2 kind: Redpanda metadata: name: redpanda-two + namespace: spec: clusterSpec: listeners: @@ -301,6 +288,13 @@ spec: default: advertisedPorts: [30084] ---- + +. Apply the resource to a different namespace: ++ +```bash +kubectl apply -f redpanda-cluster-two.yaml --namespace +``` + -- Helm:: + @@ -656,7 +650,7 @@ rbac: annotations: {} ---- -NOTE: If you use the Redpanda Operator, you must also deploy the Redpanda Operator Helm chart with `rbac.createRPKBundleCRs` set to `true` to give it the required roles. +NOTE: If you use the Redpanda Operator, you must also deploy the Redpanda Operator Helm chart with `rbac.createRPKBundleCRs` set to `true` to give it the required roles. These roles allow the operator to manage resources across all namespaces. See also: xref:manage:kubernetes/k-rack-awareness.adoc[] diff --git a/modules/deploy/partials/kubernetes/deploy-operator.adoc b/modules/deploy/partials/kubernetes/deploy-operator.adoc index 9febb2666a..6ea7a9d954 100644 --- a/modules/deploy/partials/kubernetes/deploy-operator.adoc +++ b/modules/deploy/partials/kubernetes/deploy-operator.adoc @@ -13,6 +13,24 @@ helm upgrade --install redpanda-controller redpanda/operator \ <1> This flag specifies the exact version of the Redpanda Operator Helm chart to use for deployment. By setting this value, you pin the chart to a specific version, which prevents automatic updates that might introduce breaking changes or new features that have not been tested in your environment. <2> This flag ensures that the CRDs are installed as part of the Redpanda Operator deployment. + +This command deploys the Redpanda Operator in cluster scope (default in v25.2+), allowing it to manage Redpanda clusters across multiple namespaces. ++ +To deploy the Redpanda Operator in namespace scope (managing only resources within its deployment namespace), use: ++ +[,bash,subs="attributes+"] +---- +helm upgrade --install redpanda-controller redpanda/operator \ + --namespace \ + --create-namespace \ + --version {latest-operator-version} \ + --set crds.enabled=true \ + --set 'additionalCmdFlags=["--namespace="]' <3> +---- ++ +<3> This flag restricts the Redpanda Operator to manage resources only within the specified namespace. ++ +WARNING: Do not run multiple Redpanda Operators in different scopes (cluster and namespace scope) in the same cluster as this can cause resource conflicts. ++ :note-caption: Older versions of the Redpanda Operator + [NOTE] diff --git a/modules/get-started/pages/release-notes/operator.adoc b/modules/get-started/pages/release-notes/operator.adoc index 9dcd573042..3c922e09d8 100644 --- a/modules/get-started/pages/release-notes/operator.adoc +++ b/modules/get-started/pages/release-notes/operator.adoc @@ -9,15 +9,43 @@ See also: * xref:upgrade:k-compatibility.adoc[] * xref:upgrade:k-rolling-upgrade.adoc[] -== Redpanda Operator v25.1.x +NOTE: Redpanda Console v3 is **not yet available when deploying with the Redpanda Operator**. The Redpanda Operator continues to deploy Redpanda Console v2. To try Redpanda Console v3 in Kubernetes, you can xref:deploy:deployment-option/self-hosted/kubernetes/k-production-deployment.adoc[deploy Redpanda using the Redpanda Helm chart] instead of the Redpanda Operator. -link:https://github.com/redpanda-data/redpanda-operator/blob/release/v25.1.x/operator/CHANGELOG.md[Changelog^] +== Redpanda Operator v25.2.x + +link:https://github.com/redpanda-data/redpanda-operator/blob/release/v25.2.x/operator/CHANGELOG.md[Changelog^] + +=== Cluster scope by default + +Starting in v25.2, the Redpanda Operator defaults to cluster scope instead of namespace scope. This change provides several benefits: + +* **Simplified management**: A single operator instance can manage multiple Redpanda clusters across different namespaces +* **Reduced resource overhead**: No need to deploy separate operator instances for each namespace +* **Centralized upgrades**: Upgrade the operator once to benefit all managed Redpanda clusters +* **Cross-namespace management**: Deploy the operator in a dedicated namespace (such as `redpanda-system`) while managing clusters in application namespaces + +==== Migration considerations + +If you're upgrading from a previous version that used namespace-scoped operators: -=== Redpanda Console v3 +* **No manual steps required**: The Redpanda Operator automatically reconciles existing Redpanda clusters across namespaces +* The upgrade maintains compatibility with existing deployments +* **New deployments default to cluster scope**: Regardless of which namespace you deploy the Redpanda Operator to (including `default`) -Redpanda Console v3 is **not yet available when deploying with the Redpanda Operator**, due to pending CRD updates. The Redpanda Operator continues to deploy Redpanda Console v2. +To maintain namespace scope, use the `--set 'additionalCmdFlags=["--namespace="]'` flag when installing or upgrading the Redpanda Operator. The `--namespace` flag in the helm command only specifies which namespace to deploy the Redpanda Operator into and does not affect its operational scope. -To try Redpanda Console v3 in Kubernetes, you can xref:deploy:deployment-option/self-hosted/kubernetes/k-production-deployment.adoc[deploy Redpanda using the Redpanda Helm chart] instead of the Redpanda Operator. Redpanda Console v3 introduces support for unified authentication and authorization with Redpanda, including user impersonation. +WARNING: Do not run multiple Redpanda Operators in different scopes (cluster and namespace scope) in the same cluster as this can cause resource conflicts. + +==== RBAC requirements + +Important RBAC considerations for v25.2+: + +* **ClusterRole permissions always required**: Regardless of whether you use cluster or namespace scope, the Redpanda Operator always needs ClusterRole permissions +* **Automatic configuration**: These permissions are automatically configured when you install the Redpanda Operator with `rbac.createRPKBundleCRs=true` (default) + +== Redpanda Operator v25.1.x + +link:https://github.com/redpanda-data/redpanda-operator/blob/release/v25.1.x/operator/CHANGELOG.md[Changelog^] === Flux removed diff --git a/modules/migrate/pages/kubernetes/helm-to-operator.adoc b/modules/migrate/pages/kubernetes/helm-to-operator.adoc index cb8fa97a38..2fba9d5b35 100644 --- a/modules/migrate/pages/kubernetes/helm-to-operator.adoc +++ b/modules/migrate/pages/kubernetes/helm-to-operator.adoc @@ -88,7 +88,7 @@ You should see `yes` in the output. + You need these cluster-level permissions to install the Redpanda Operator CRDs in the next steps. -. Install the Redpanda Operator *in the same namespace as your Redpanda Helm chart*: +. Install the Redpanda Operator. Starting in v25.2, the Redpanda Operator can manage Redpanda clusters in any namespace: + include::deploy:partial$kubernetes/deploy-operator.adoc[] @@ -138,7 +138,7 @@ spec: TIP: The Redpanda CRD is compatible with the version of the Helm chart defined in the operator. For details on the structure and configuration options of the Redpanda custom resource, refer to the xref:reference:k-crd.adoc#redpandaclusterspec[Redpanda Operator CRD reference]. -- -. Adopt the Redpanda cluster by creating an instance of the Redpanda custom resource in the same namespace as the Redpanda Operator: +. Adopt the Redpanda cluster by creating an instance of the Redpanda custom resource: + ```bash kubectl apply -f redpanda-cluster.yaml --namespace diff --git a/modules/upgrade/pages/k-upgrade-operator.adoc b/modules/upgrade/pages/k-upgrade-operator.adoc index 5c28bcf83d..8ff194ac8a 100644 --- a/modules/upgrade/pages/k-upgrade-operator.adoc +++ b/modules/upgrade/pages/k-upgrade-operator.adoc @@ -7,7 +7,7 @@ . Make sure to https://github.com/redpanda-data/redpanda-operator/releases[review the release notes^] to understand any significant changes, bug fixes, or potential disruptions that could affect your existing deployment. -. xref:upgrade:k-compatibility.adoc[Review the Kubernetes compatibility matrix] and determine the version of the Redpanda Operator that is compatible with the Helm chart version you plan to use. The Redpanda Operator must be able to understand and manage the Helm chart and the Redpanda version you are deploying. +. xref:upgrade:k-compatibility.adoc[Review the Kubernetes compatibility matrix]. . Back up your current Helm values for the Redpanda Operator Helm chart: + From 9358a0ec3b0a9f4af1517b0048cf3f4205791bca Mon Sep 17 00:00:00 2001 From: JakeSCahill Date: Fri, 25 Jul 2025 14:01:24 +0100 Subject: [PATCH 16/27] Remove references to createRPKBundleCRs --- .../kubernetes/k-production-deployment.adoc | 1 - modules/get-started/pages/release-notes/operator.adoc | 2 ++ modules/manage/pages/kubernetes/k-rack-awareness.adoc | 1 - .../partials/debug-bundle/generate-rpk.adoc | 2 +- .../troubleshoot/partials/errors-and-solutions.adoc | 11 ----------- 5 files changed, 3 insertions(+), 14 deletions(-) diff --git a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc index ad2b495a2a..9c2a31a195 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc @@ -650,7 +650,6 @@ rbac: annotations: {} ---- -NOTE: If you use the Redpanda Operator, you must also deploy the Redpanda Operator Helm chart with `rbac.createRPKBundleCRs` set to `true` to give it the required roles. These roles allow the operator to manage resources across all namespaces. See also: xref:manage:kubernetes/k-rack-awareness.adoc[] diff --git a/modules/get-started/pages/release-notes/operator.adoc b/modules/get-started/pages/release-notes/operator.adoc index 3c922e09d8..317d20f4df 100644 --- a/modules/get-started/pages/release-notes/operator.adoc +++ b/modules/get-started/pages/release-notes/operator.adoc @@ -23,6 +23,7 @@ Starting in v25.2, the Redpanda Operator defaults to cluster scope instead of na * **Reduced resource overhead**: No need to deploy separate operator instances for each namespace * **Centralized upgrades**: Upgrade the operator once to benefit all managed Redpanda clusters * **Cross-namespace management**: Deploy the operator in a dedicated namespace (such as `redpanda-system`) while managing clusters in application namespaces +* **Simplified RBAC for debug bundles**: The Redpanda Operator now provides all required permissions for `rpk` debug bundle collection by default. The `rbac.createRPKBundleCRs` flag is no longer needed ==== Migration considerations @@ -31,6 +32,7 @@ If you're upgrading from a previous version that used namespace-scoped operators * **No manual steps required**: The Redpanda Operator automatically reconciles existing Redpanda clusters across namespaces * The upgrade maintains compatibility with existing deployments * **New deployments default to cluster scope**: Regardless of which namespace you deploy the Redpanda Operator to (including `default`) +* **Delete extra Redpanda Operator deployments**: After upgrading, ensure only one Redpanda Operator remains in the cluster (the one running in cluster scope). Use `helm uninstall` to remove any other Redpanda Operator deployments from previous namespace-scoped installations. To maintain namespace scope, use the `--set 'additionalCmdFlags=["--namespace="]'` flag when installing or upgrading the Redpanda Operator. The `--namespace` flag in the helm command only specifies which namespace to deploy the Redpanda Operator into and does not affect its operational scope. diff --git a/modules/manage/pages/kubernetes/k-rack-awareness.adoc b/modules/manage/pages/kubernetes/k-rack-awareness.adoc index 0fdd2ed1cd..2570242588 100644 --- a/modules/manage/pages/kubernetes/k-rack-awareness.adoc +++ b/modules/manage/pages/kubernetes/k-rack-awareness.adoc @@ -18,7 +18,6 @@ You must have the following: * https://kubernetes.io/docs/tasks/tools/#kubectl[Kubectl^]: Ensure you have the `kubectl` command-line tool installed and configured to communicate with your cluster. -* If you use the xref:deploy:deployment-option/self-hosted/kubernetes/kubernetes-deploy.adoc[Redpanda Operator], you must deploy it with the `--set rbac.createRPKBundleCRs=true` flag to give it the required ClusterRoles to read node labels and annotations. == Annotate or label Node resources diff --git a/modules/troubleshoot/partials/debug-bundle/generate-rpk.adoc b/modules/troubleshoot/partials/debug-bundle/generate-rpk.adoc index 246a6db53b..ad103dc9c8 100644 --- a/modules/troubleshoot/partials/debug-bundle/generate-rpk.adoc +++ b/modules/troubleshoot/partials/debug-bundle/generate-rpk.adoc @@ -48,7 +48,7 @@ spec: kubectl apply -f redpanda-cluster.yaml --namespace ``` -NOTE: You must deploy the Redpanda Operator with the `--set rbac.createRPKBundleCRs=true` flag to give it the required ClusterRoles. + -- Helm:: diff --git a/modules/troubleshoot/partials/errors-and-solutions.adoc b/modules/troubleshoot/partials/errors-and-solutions.adoc index 7de3c86749..9d44bccb24 100644 --- a/modules/troubleshoot/partials/errors-and-solutions.adoc +++ b/modules/troubleshoot/partials/errors-and-solutions.adoc @@ -232,18 +232,7 @@ helm repo update //end::deployment-name-exists[] -//tag::deployment-forbidden-debug-bundle[] -=== redpanda-rpk-debug-bundle is forbidden -If you see this error, your Redpanda Operator's RBAC settings are out of sync with the Pod-level RBAC in the Redpanda resource: - -[.no-copy] ----- -… forbidden: user "…-operator" … attempting to grant RBAC permissions not currently held … ----- - -To fix this error, make sure you haven't disabled xref:reference:k-operator-helm-spec.adoc#rbac-createrpkbundlecrs[`rbac.createRPKBundleCRs`] in the Redpanda Operator chart while still leaving xref:reference:k-crd.adoc#k8s-api-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-rbac[`spec.clusterSpec.rbac.rpkDebugBundle`] enabled in your Redpanda resource. Either enable both or disable both. -//end::deployment-forbidden-debug-bundle[] //tag::deployment-data-dir-not-writable[] === Fatal error during checker "Data directory is writable" execution From c887d35dbf53a91932373fbca344f0e0fb0ed99b Mon Sep 17 00:00:00 2001 From: Paulo Borges Date: Fri, 25 Jul 2025 13:47:56 -0300 Subject: [PATCH 17/27] docs: use attributes instead of page level props (#1220) Co-authored-by: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> --- modules/get-started/pages/release-notes/redpanda.adoc | 3 +-- modules/manage/pages/security/authentication.adoc | 1 - modules/manage/partials/authentication.adoc | 4 ++-- .../http-proxy-ephemeral-credentials-breaking-change.adoc | 8 ++++---- modules/upgrade/partials/incompat-changes.adoc | 4 ++++ 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/modules/get-started/pages/release-notes/redpanda.adoc b/modules/get-started/pages/release-notes/redpanda.adoc index 8e4b461330..7e55dd5e0b 100644 --- a/modules/get-started/pages/release-notes/redpanda.adoc +++ b/modules/get-started/pages/release-notes/redpanda.adoc @@ -1,7 +1,6 @@ = What's New in Redpanda :description: Summary of new features and updates in this Redpanda release. :page-aliases: get-started:whats-new-233.adoc, get-started:whats-new-241.adoc, get-started:whats-new.adoc -:page-whats-new: This topic includes new content added in version {page-component-version}. For a complete list of all product updates, see the https://github.com/redpanda-data/redpanda/releases/[Redpanda release notes^]. See also: @@ -27,7 +26,7 @@ The `confluent-kafka-javascript` client is now validated with Redpanda. For a li [IMPORTANT] ==== -include::shared:partial$http-proxy-ephemeral-credentials-breaking-change.adoc[] +include::shared:partial$http-proxy-ephemeral-credentials-breaking-change.adoc[tags=!*;include-config-link] ==== HTTP Proxy previously used automatically-generated ephemeral credentials to authenticate with the Kafka API when the HTTP Proxy listeners specified `authentication_method: none`. To improve security and simplify the authentication model, ephemeral credentials are no longer available. diff --git a/modules/manage/pages/security/authentication.adoc b/modules/manage/pages/security/authentication.adoc index 89c76fdd09..febab56d94 100644 --- a/modules/manage/pages/security/authentication.adoc +++ b/modules/manage/pages/security/authentication.adoc @@ -4,7 +4,6 @@ :page-aliases: security:authentication.adoc :page-toclevels: 3 :page-categories: Management, Security -:page-http-proxy-auth: include::manage:partial$authentication.adoc[] diff --git a/modules/manage/partials/authentication.adoc b/modules/manage/partials/authentication.adoc index 12a8654e30..5c61edfd19 100644 --- a/modules/manage/partials/authentication.adoc +++ b/modules/manage/partials/authentication.adoc @@ -659,7 +659,7 @@ Schema Registry and HTTP Proxy connect to Redpanda over the Kafka API. [IMPORTANT] ==== -include::shared:partial$http-proxy-ephemeral-credentials-breaking-change.adoc[] +include::shared:partial$http-proxy-ephemeral-credentials-breaking-change.adoc[tags=!*;include-release-notes-link] ==== Schema Registry and HTTP Proxy support only the SASL/SCRAM mechanism. @@ -1779,7 +1779,7 @@ To disable authentication for a listener, set `authentication_method` to `none`: [IMPORTANT] ==== -include::shared:partial$http-proxy-ephemeral-credentials-breaking-change.adoc[] +include::shared:partial$http-proxy-ephemeral-credentials-breaking-change.adoc[tags=!*;include-release-notes-link] ==== ifdef::env-kubernetes[] diff --git a/modules/shared/partials/http-proxy-ephemeral-credentials-breaking-change.adoc b/modules/shared/partials/http-proxy-ephemeral-credentials-breaking-change.adoc index f6d3d98f5e..8c8fdd46b0 100644 --- a/modules/shared/partials/http-proxy-ephemeral-credentials-breaking-change.adoc +++ b/modules/shared/partials/http-proxy-ephemeral-credentials-breaking-change.adoc @@ -2,10 +2,10 @@ Redpanda Data recommends enabling authentication on both HTTP Proxy and the Kafka API. -ifndef::page-http-proxy-auth[] +// tag::include-config-link[] For configuration instructions, see xref:manage:security/authentication.adoc#schema-and-http-to-redpanda[Configure HTTP Proxy to connect to Redpanda with SASL]. -endif::[] +// end::include-config-link[] -ifndef::page-whats-new[] +// tag::include-release-notes-link[] For details about this breaking change, see xref:get-started:release-notes/redpanda.adoc#http-proxy-authentication-changes[What's new]. -endif::[] +// end::include-release-notes-link[] \ No newline at end of file diff --git a/modules/upgrade/partials/incompat-changes.adoc b/modules/upgrade/partials/incompat-changes.adoc index c92553bd63..4984ac080d 100644 --- a/modules/upgrade/partials/incompat-changes.adoc +++ b/modules/upgrade/partials/incompat-changes.adoc @@ -1,6 +1,10 @@ === Review incompatible changes +* {empty} ++ +-- include::shared:partial$http-proxy-ephemeral-credentials-breaking-change.adoc[] +-- * Redpanda Console v3.0.0 introduces breaking changes. If you are using Redpanda Console v2.x, xref:migrate:console-v3.adoc[review the migration guide] to address breaking changes before upgrading Redpanda Console. From 9789eb59f9e568fa4e9b04923c2cfc044941968f Mon Sep 17 00:00:00 2001 From: Kat Batuigas <36839689+kbatuigas@users.noreply.github.com> Date: Fri, 25 Jul 2025 19:07:19 -0700 Subject: [PATCH 18/27] [25.2] KIP-554 support (#1240) Co-authored-by: Michele Cyran --- modules/develop/pages/kafka-clients.adoc | 2 +- modules/get-started/pages/release-notes/redpanda.adoc | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/modules/develop/pages/kafka-clients.adoc b/modules/develop/pages/kafka-clients.adoc index e393177e32..ce27545e5e 100644 --- a/modules/develop/pages/kafka-clients.adoc +++ b/modules/develop/pages/kafka-clients.adoc @@ -49,7 +49,7 @@ supported, reach out to the Redpanda team in the community https://redpanda.com/ Redpanda does not currently support the following Apache Kafka features: -* Managing SASL users with Kafka APIs: DescribeUserSCRAMCredentialsRequest and AlterUserSCRAMCredentialsRequest APIs. +* Multiple SCRAM mechanisms simultaneously for SASL users; for example, a user having both a `SCRAM-SHA-256` and a `SCRAM-SHA-512` credential. Redpanda supports only one SASL/SCRAM mechanism per user, either `SCRAM-SHA-256` or `SCRAM-SHA-512`. See the xref:manage:security/authentication.adoc#sasl[Configure Authentication] guide for details. * HTTP Proxy (pandaproxy): Unlike other REST proxy implementations in the Kafka ecosystem, Redpanda HTTP Proxy does not support topic and ACLs CRUD through the HTTP Proxy. HTTP Proxy is designed for clients producing and consuming data that do not perform administrative functions. ifdef::env-cloud[] + diff --git a/modules/get-started/pages/release-notes/redpanda.adoc b/modules/get-started/pages/release-notes/redpanda.adoc index 7e55dd5e0b..22bbffdf09 100644 --- a/modules/get-started/pages/release-notes/redpanda.adoc +++ b/modules/get-started/pages/release-notes/redpanda.adoc @@ -7,6 +7,15 @@ This topic includes new content added in version {page-component-version}. For a * xref:redpanda-cloud:get-started:whats-new-cloud.adoc[] * xref:redpanda-cloud:get-started:cloud-overview.adoc#redpanda-cloud-vs-self-managed-feature-compatibility[Redpanda Cloud vs Self-Managed feature compatibility] +== Manage SASL users with Kafka APIs + +Redpanda now supports the following Kafka APIs for managing SASL user credentials as described in https://cwiki.apache.org/confluence/display/KAFKA/KIP-554%3A+Add+Broker-side+SCRAM+Config+API[KIP-554^]: + +- DescribeUserSCRAMCredentialsRequest (requires Cluster Describe ACLs) +- AlterUserSCRAMCredentialsRequest (requires Cluster Modify ACLs) + +See also: xref:manage:security/authentication.adoc#sasl[Configure Authentication] and xref:manage:security/authorization/acl.adoc[] + == Retrieve serialized Protobuf schemas with Schema Registry API Starting in version 25.2, the Schema Registry API supports retrieving serialized schemas (Protobuf only) using the `format=serialized` query parameter for the following endpoints: From 88e640f006071ca9650e72fc3b5b53755d0bd0e2 Mon Sep 17 00:00:00 2001 From: Kat Batuigas <36839689+kbatuigas@users.noreply.github.com> Date: Fri, 25 Jul 2025 19:21:27 -0700 Subject: [PATCH 19/27] [25.2] Iceberg - JSON Schema support (#1207) Co-authored-by: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> --- modules/ROOT/nav.adoc | 2 +- .../pages/release-notes/redpanda.adoc | 4 + ...-mode.adoc => specify-iceberg-schema.adoc} | 115 ++++++++++++++++-- .../iceberg/about-iceberg-topics.adoc | 36 ++++-- .../iceberg/query-iceberg-topics.adoc | 4 +- .../pages/properties/cluster-properties.adoc | 2 +- .../pages/properties/topic-properties.adoc | 2 +- 7 files changed, 136 insertions(+), 29 deletions(-) rename modules/manage/pages/iceberg/{choose-iceberg-mode.adoc => specify-iceberg-schema.adoc} (73%) diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index 1b6f62f4ab..f6ba2c317a 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -170,7 +170,7 @@ *** xref:manage:whole-cluster-restore.adoc[Whole Cluster Restore] ** xref:manage:iceberg/index.adoc[Iceberg] *** xref:manage:iceberg/about-iceberg-topics.adoc[About Iceberg Topics] -*** xref:manage:iceberg/choose-iceberg-mode.adoc[Choose Iceberg Mode] +*** xref:manage:iceberg/specify-iceberg-schema.adoc[Specify Iceberg Schema] *** xref:manage:iceberg/use-iceberg-catalogs.adoc[Use Iceberg Catalogs] *** xref:manage:iceberg/query-iceberg-topics.adoc[Query Iceberg Topics] *** xref:manage:iceberg/iceberg-topics-databricks-unity.adoc[Query Iceberg Topics with Databricks Unity Catalog] diff --git a/modules/get-started/pages/release-notes/redpanda.adoc b/modules/get-started/pages/release-notes/redpanda.adoc index 22bbffdf09..4f9a06a2e6 100644 --- a/modules/get-started/pages/release-notes/redpanda.adoc +++ b/modules/get-started/pages/release-notes/redpanda.adoc @@ -7,6 +7,10 @@ This topic includes new content added in version {page-component-version}. For a * xref:redpanda-cloud:get-started:whats-new-cloud.adoc[] * xref:redpanda-cloud:get-started:cloud-overview.adoc#redpanda-cloud-vs-self-managed-feature-compatibility[Redpanda Cloud vs Self-Managed feature compatibility] +== JSON Schema support for Iceberg topics + +Redpanda now supports JSON Schema for Iceberg topics. This allows you to use all supported schema types (Protobuf, Avro, and JSON Schema) for Iceberg topics. For more information, see xref:manage:iceberg/specify-iceberg-schema.adoc[]. + == Manage SASL users with Kafka APIs Redpanda now supports the following Kafka APIs for managing SASL user credentials as described in https://cwiki.apache.org/confluence/display/KAFKA/KIP-554%3A+Add+Broker-side+SCRAM+Config+API[KIP-554^]: diff --git a/modules/manage/pages/iceberg/choose-iceberg-mode.adoc b/modules/manage/pages/iceberg/specify-iceberg-schema.adoc similarity index 73% rename from modules/manage/pages/iceberg/choose-iceberg-mode.adoc rename to modules/manage/pages/iceberg/specify-iceberg-schema.adoc index 0c7e8888d6..ffcfb55f2c 100644 --- a/modules/manage/pages/iceberg/choose-iceberg-mode.adoc +++ b/modules/manage/pages/iceberg/specify-iceberg-schema.adoc @@ -1,7 +1,9 @@ -= Choose an Iceberg Mode += Specify Iceberg Schema :description: Learn about supported Iceberg modes and how you can integrate schemas with Iceberg topics. :page-categories: Iceberg, Tiered Storage, Management, High Availability, Data Replication, Integration +:page-aliases: manage:iceberg/choose-iceberg-mode.adoc :schema-id-val-doc: manage:schema-reg/schema-id-validation.adoc + // tag::single-source[] ifndef::env-cloud[] @@ -11,9 +13,7 @@ include::shared:partial$enterprise-license.adoc[] ==== endif::[] -In xref:manage:iceberg/about-iceberg-topics.adoc#enable-iceberg-integration[Iceberg-enabled clusters], the `redpanda.iceberg.mode` topic property determines how Redpanda maps topic data to the Iceberg table structure. You can have the generated Iceberg table match the structure of an Avro or Protobuf schema in the Schema Registry, or you can use the `key_value` mode where Redpanda stores the record values as-is in the table. - -NOTE: The JSON Schema format is not supported for Iceberg topics. If your topic data is in JSON, use the `key_value` mode. +In xref:manage:iceberg/about-iceberg-topics.adoc#enable-iceberg-integration[Iceberg-enabled clusters], the `redpanda.iceberg.mode` topic property determines how Redpanda maps topic data to the Iceberg table structure. You can have the generated Iceberg table match the structure of a schema in the Schema Registry, or you can use the `key_value` mode where Redpanda stores the record values as-is in the table. == Supported Iceberg modes @@ -37,7 +37,11 @@ In the xref:manage:schema-reg/schema-reg-overview.adoc#wire-format[Schema Regist === value_schema_latest -Creates an Iceberg table whose structure matches the latest schema registered for the subject in the Schema Registry. You must register a schema in the Schema Registry. Unlike the `value_schema_id_prefix` mode, `value_schema_latest` does not require that producers use the wire format. +Creates an Iceberg table whose structure matches the latest schema registered for the subject in the Schema Registry. You must register a schema in the Schema Registry. + +Producers cannot use the wire format in `value_schema_latest` mode. Redpanda expects the serialized message as-is without the magic byte or schema ID prefix in the record value. + +NOTE: The `value_schema_latest` mode is not compatible with the xref:reference:rpk/rpk-topic/rpk-topic-produce[`rpk topic produce`] command which embeds the wire format header. You must use your own producer code to produce to topics in `value_schema_latest` mode. The latest schema is cached periodically. The cache period is defined by the cluster property `iceberg_latest_schema_cache_ttl_ms` (default: 5 minutes). @@ -58,7 +62,7 @@ rpk topic create --topic-config=redpanda.iceberg.mode= --set redpanda.iceberg.mode= +rpk topic alter-config --set redpanda.iceberg.mode= ---- [[override-value-schema-latest-default]] @@ -83,8 +87,14 @@ value_schema_latest:subject=,protobuf_name=`, for example `value_schema_latest:subject=sensor-data`. * For Protobuf only: -** Specify a different message definition by using a key-value pair `protobuf_name=`, for example: `value_schema_latest:protobuf_name=com.example.manufacturing.SensorData`. ++ +-- +** Specify a different message definition by using a key-value pair `protobuf_name=`. You must use the fully qualified name, which includes the package name, for example, `value_schema_latest:protobuf_name=com.example.manufacturing.SensorData`. ** To specify both a different subject and message definition, separate the key-value pairs with a comma, for example: `value_schema_latest:subject=my_protobuf_schema,protobuf_name=com.example.manufacturing.SensorData`. +-- ++ +NOTE: If you don't specify the fully qualified Protobuf message name, Redpanda pauses the data translation to the Iceberg table until you fix the topic misconfiguration. + == How Iceberg modes translate to table format @@ -130,7 +140,7 @@ CREATE TABLE ClickEvent ( ) ---- -Use `key_value` mode if the topic data is in JSON or if you are able to use the Iceberg data in its semi-structured format. +Use `key_value` mode if you want to use the Iceberg data in its semi-structured format. The `value_schema_id_prefix` and `value_schema_latest` modes can use the schema to translate to the following table format: @@ -152,7 +162,7 @@ CREATE TABLE ClickEvent ( As you produce records to the topic, the data also becomes available in object storage for Iceberg-compatible clients to consume. You can use the same analytical tools to xref:manage:iceberg/query-iceberg-topics.adoc[read the Iceberg topic data] in a data lake as you would for a relational database. -If Redpanda fails to translate the record to the columnar format as defined by the schema, it writes the record to a dead-letter queue (DLQ) table. See xref:manage:iceberg/about-iceberg-topics.adoc#manage-dead-letter-queue[Manage dead-letter queue] for more information. +If Redpanda fails to translate the record to the columnar format as defined by the schema, it writes the record to a dead-letter queue (DLQ) table. See xref:manage:iceberg/about-iceberg-topics.adoc#troubleshoot-errors[Troubleshoot errors] for more information. === Schema types translation @@ -175,7 +185,7 @@ Avro:: | string | string | record | struct | array | list -| maps | map +| map | map | fixed | fixed* | decimal | decimal | uuid | uuid* @@ -224,7 +234,7 @@ Protobuf:: There are some cases where the Protobuf type does not map directly to an Iceberg type and Redpanda applies the following transformations: -* Repeated values are translated into Iceberg `array` types. +* Repeated values are translated into Iceberg `list` types. * Enums are translated into Iceberg `int` types based on the integer value of the enumerated type. * `uint32` and `fixed32` are translated into Iceberg `long` types as that is the existing semantic for unsigned 32-bit values in Iceberg. * `uint64` and `fixed64` values are translated into their Base-10 string representation. @@ -232,6 +242,89 @@ There are some cases where the Protobuf type does not map directly to an Iceberg Recursive types are not supported. -- + +JSON Schema:: ++ +-- +Requirements: + +- Only JSON Schema Draft-07 is currently supported. +- You must declare the JSON Schema dialect using the `$schema` keyword, for example `"$schema": "http://json-schema.org/draft-07/schema#"`. +- You must use a JSON Schema that constrains JSON documents to a strict type in order for Redpanda to translate to Iceberg; that is, each subschema must use the `type` keyword. + +.Valid JSON Schema example +[,json] +---- +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "productId": { + "type": "integer" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + } +} +---- + +|=== +| JSON type | Iceberg type | Notes + +| array +| list +| The keywords `items` and `additionalItems` must be used to constrain element types. + +| boolean +| boolean +| + +| null +| +| The `null` type is not supported except when it is paired with another type to indicate nullability. + +| number +| double +| + +| integer +| long +| + +| string +| string +| The `format` keyword can be used for custom Iceberg types. See <> for details. + +| object +| struct +| The `properties` keyword must be used to define `struct` fields and constrain their types. The `additionalProperties` keyword is accepted only when it is set to `false`. + +|=== + +[[format-translation]] +.`format` annotation translation +|=== +| `format` value | Iceberg type + +| date-time | timestamptz +| date | date +| time | time + +|=== + +The following are not supported for JSON Schema: + +* Relative and absolute (including external) references using `$ref` and `$dynamicRef` keywords +* The `default` keyword +* Conditional typing (`if`, `then`, `else`, `dependent` keywords) +* Boolean JSON Schema combinations (`allOf`, `anyOf`, `oneOf` keywords) +* Dynamic object members (`patternProperties` and `additionalProperties` (except when it is set to `false`) keywords) +-- + ====== // end::single-source[] diff --git a/modules/manage/partials/iceberg/about-iceberg-topics.adoc b/modules/manage/partials/iceberg/about-iceberg-topics.adoc index cd4ef3aefd..03d9ec1206 100644 --- a/modules/manage/partials/iceberg/about-iceberg-topics.adoc +++ b/modules/manage/partials/iceberg/about-iceberg-topics.adoc @@ -52,7 +52,7 @@ endif::[] * It is not possible to append topic data to an existing Iceberg table that is not created by Redpanda. * If you enable the Iceberg integration on an existing Redpanda topic, Redpanda does not backfill the generated Iceberg table with topic data. -* JSON schemas are not currently supported. If the topic data is in JSON, use the `key_value` mode to store the JSON in Iceberg, which then can be parsed by most query engines. +* JSON schemas are supported starting with Redpanda version 25.2. == Enable Iceberg integration @@ -233,7 +233,7 @@ Data in an Iceberg-enabled topic is consumable from Kafka based on the configure == Schema evolution -Redpanda supports schema evolution for Avro and Protobuf schemas in accordance with the https://iceberg.apache.org/spec/#schema-evolution[Iceberg specification^]. Permitted schema evolutions include reordering fields and promoting field types. When you update the schema in Schema Registry, Redpanda automatically updates the Iceberg table schema to match the new schema. +Redpanda supports schema evolution in accordance with the https://iceberg.apache.org/spec/#schema-evolution[Iceberg specification^]. Permitted schema evolutions include reordering fields and promoting field types. When you update the schema in Schema Registry, Redpanda automatically updates the Iceberg table schema to match the new schema. For example, if you produce records to a topic `demo-topic` with the following Avro schema: @@ -312,22 +312,21 @@ Querying the Iceberg table for `demo-topic` includes the new column `ts`: +---------+--------------+--------------------------+ ---- -== Manage dead-letter queue +== Troubleshoot errors -Errors may occur when translating records in the `value_schema_id_prefix` mode to the Iceberg table format; for example, if you do not use the Schema Registry wire format with the magic byte, if the schema ID in the record is not found in the Schema Registry, or if an Avro or Protobuf data type cannot be translated to an Iceberg type. +If Redpanda encounters an error while writing a record to the Iceberg table, Redpanda by default writes the record to a separate dead-letter queue (DLQ) Iceberg table named `~dlq`. The following can cause errors to occur when translating records in the `value_schema_id_prefix` and `value_schema_latest` modes to the Iceberg table format: -ifndef::env-cloud[] -If Redpanda encounters an error while writing a record to the Iceberg table, Redpanda writes the record to a separate dead-letter queue (DLQ) Iceberg table named `~dlq`. To disable the default behavior for a topic and drop the record, set the xref:reference:properties/topic-properties.adoc#redpanda-iceberg-invalid-record-action[`redpanda.iceberg.invalid.record.action`] topic property to `drop`. You can also configure the default cluster-wide behavior for invalid records by setting the `iceberg_invalid_record_action` property. -endif::[] -ifdef::env-cloud[] -If Redpanda encounters an error while writing a record to the Iceberg table, Redpanda writes the record to a separate dead-letter queue (DLQ) Iceberg table named `~dlq`. To disable the default behavior for a topic and drop the record, set the `redpanda.iceberg.invalid.record.action` topic property to `drop`. You can also configure the default cluster-wide behavior for invalid records by setting the `iceberg_invalid_record_action` property. -endif::[] +- Redpanda cannot find the embedded schema ID in the Schema Registry. +- Redpanda fails to translate one or more schema data types to an Iceberg type. +- In `value_schema_id_prefix` mode, you do not use the Schema Registry wire format with the magic byte. The DLQ table itself uses the `key_value` schema, consisting of two columns: the record metadata including the key, and a binary column for the record's value. -You can inspect the DLQ table for records that failed to write to the Iceberg table, and you can take further action on these records, such as transforming and reprocessing them, or debugging issues that occurred upstream. +NOTE: Topic property misconfiguration, such as xref:manage:iceberg/specify-iceberg-schema.adoc#override-value-schema-latest-default[overriding the default behavior of `value_schema_latest` mode] but not specifying the fully qualified Protobuf message name, does not cause records to be written to the DLQ table. Instead, Redpanda pauses the topic data translation to the Iceberg table until you fix the misconfiguration. -=== Reprocess DLQ records +=== Inspect DLQ table + +You can inspect the DLQ table for records that failed to write to the Iceberg table, and you can take further action on these records, such as transforming and reprocessing them, or debugging issues that occurred upstream. The following example produces a record to a topic named `ClickEvent` and does not use the Schema Registry wire format that includes the magic byte and schema ID: @@ -358,7 +357,9 @@ FROM ."ClickEvent~dlq"; -- Fully qualified table name +-------------------------------------------------+ ---- -The data is in binary format, and the first byte is not `0x00`, indicating that it was not produced with a schema. +The data is in binary format, and the first byte is not `0x00`, indicating that it was not produced with a schema. + +=== Reprocess DLQ records You can apply a transformation and reprocess the record in your data lakehouse to the original Iceberg table. In this case, you have a JSON value represented as a UTF-8 binary. Depending on your query engine, you might need to decode the binary value first before extracting the JSON fields. Some engines may automatically decode the binary value for you: @@ -387,6 +388,15 @@ FROM ( You can now insert the transformed record back into the main Iceberg table. Redpanda recommends employing a strategy for exactly-once processing to avoid duplicates when reprocessing records. +=== Drop invalid records + +ifndef::env-cloud[] +To disable the default behavior and drop an invalid record, set the xref:reference:properties/topic-properties.adoc#redpanda-iceberg-invalid-record-action[`redpanda.iceberg.invalid.record.action`] topic property to `drop`. You can also configure the default cluster-wide behavior for invalid records by setting the `iceberg_invalid_record_action` property. +endif::[] +ifdef::env-cloud[] +To disable the default behavior and drop an invalid record, set the `redpanda.iceberg.invalid.record.action` topic property to `drop`. You can also configure the default cluster-wide behavior for invalid records by setting the `iceberg_invalid_record_action` property. +endif::[] + == Performance considerations When you enable Iceberg for any substantial workload and start translating topic data to the Iceberg format, you may see most of your cluster's CPU utilization increase. If this additional workload overwhelms the brokers and causes the Iceberg table lag to exceed the configured target lag, Redpanda automatically applies backpressure to producers to prevent Iceberg tables from lagging further. This ensures that Iceberg tables keep up with the volume of incoming data, but sacrifices ingress throughput of the cluster. diff --git a/modules/manage/partials/iceberg/query-iceberg-topics.adoc b/modules/manage/partials/iceberg/query-iceberg-topics.adoc index 34cad3ccb5..47b353feb0 100644 --- a/modules/manage/partials/iceberg/query-iceberg-topics.adoc +++ b/modules/manage/partials/iceberg/query-iceberg-topics.adoc @@ -77,7 +77,7 @@ endif::[] === Topic with schema (`value_schema_id_prefix` mode) -NOTE: The steps in this section also apply to the `value_schema_latest` mode, except for step 2. The `value_schema_latest` mode doesn't require the Schema Registry wire format, so you'll use your own producer code instead of xref:reference:rpk/rpk-topic/rpk-topic-produce[`rpk topic produce`]. +NOTE: The steps in this section also apply to the `value_schema_latest` mode, except the produce step. The `value_schema_latest` mode is not compatible with the Schema Registry wire format. The xref:reference:rpk/rpk-topic/rpk-topic-produce[`rpk topic produce`] command embeds the wire format header, so you must use your own producer code with `value_schema_latest`. Assume that you have created the `ClickEvent` topic, set `redpanda.iceberg.mode` to `value_schema_id_prefix`, and are connecting to a REST-based Iceberg catalog. The following is an Avro schema for `ClickEvent`: @@ -139,7 +139,7 @@ In this example, assume that you have created the `ClickEvent_key_value` topic, + [,bash] ---- -echo 'key1 {"user_id":2324,"event_type":"BUTTON_CLICK","ts":"2024-11-25T20:23:59.380Z"}' | rpk topic produce ClickEvent_key_value --format='%k %v\n' +echo '"key1" {"user_id":2324,"event_type":"BUTTON_CLICK","ts":"2024-11-25T20:23:59.380Z"}' | rpk topic produce ClickEvent_key_value --format='%k %v\n' ---- . The following Spark SQL query returns the semi-structured data in the `ClickEvent_key_value` table. The table consists of two columns: one named `redpanda`, containing the record key and other metadata, and another binary column named `value` for the record's value: diff --git a/modules/reference/pages/properties/cluster-properties.adoc b/modules/reference/pages/properties/cluster-properties.adoc index 7a5df5640c..9f3c92bf76 100644 --- a/modules/reference/pages/properties/cluster-properties.adoc +++ b/modules/reference/pages/properties/cluster-properties.adoc @@ -2059,7 +2059,7 @@ endif::[] **Related topics**: -- xref:manage:iceberg/about-iceberg-topics.adoc#manage-dead-letter-queue[Manage dead-letter queue] +- xref:manage:iceberg/about-iceberg-topics.adoc#troubleshoot-errors[Troubleshoot errors] --- diff --git a/modules/reference/pages/properties/topic-properties.adoc b/modules/reference/pages/properties/topic-properties.adoc index 17f2240dbb..80edaca031 100644 --- a/modules/reference/pages/properties/topic-properties.adoc +++ b/modules/reference/pages/properties/topic-properties.adoc @@ -611,7 +611,7 @@ Whether to write invalid records to a dead-letter queue (DLQ). **Related topics**: -- xref:manage:iceberg/about-iceberg-topics.adoc#manage-dead-letter-queue[Manage dead-letter queue] +- xref:manage:iceberg/about-iceberg-topics.adoc#troubleshoot-errors[Troubleshoot errors] --- From 819623a27205c2ad5ce0d0c9fb0bc57b50ceac5a Mon Sep 17 00:00:00 2001 From: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> Date: Mon, 28 Jul 2025 09:23:25 +0100 Subject: [PATCH 20/27] Update modules/get-started/pages/release-notes/operator.adoc --- modules/get-started/pages/release-notes/operator.adoc | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/get-started/pages/release-notes/operator.adoc b/modules/get-started/pages/release-notes/operator.adoc index 317d20f4df..4faee361e7 100644 --- a/modules/get-started/pages/release-notes/operator.adoc +++ b/modules/get-started/pages/release-notes/operator.adoc @@ -30,7 +30,6 @@ Starting in v25.2, the Redpanda Operator defaults to cluster scope instead of na If you're upgrading from a previous version that used namespace-scoped operators: * **No manual steps required**: The Redpanda Operator automatically reconciles existing Redpanda clusters across namespaces -* The upgrade maintains compatibility with existing deployments * **New deployments default to cluster scope**: Regardless of which namespace you deploy the Redpanda Operator to (including `default`) * **Delete extra Redpanda Operator deployments**: After upgrading, ensure only one Redpanda Operator remains in the cluster (the one running in cluster scope). Use `helm uninstall` to remove any other Redpanda Operator deployments from previous namespace-scoped installations. From 480757a05ed532d4e63af3982337753142348d7f Mon Sep 17 00:00:00 2001 From: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> Date: Mon, 28 Jul 2025 15:39:20 +0100 Subject: [PATCH 21/27] Console tab (#1239) --- antora.yml | 1 - local-antora-playbook.yml | 1 + .../pages/config/configure-console.adoc | 3 +++ .../pages/config/connect-to-redpanda.adoc | 3 +++ .../console/pages/config/deserialization.adoc | 3 +++ .../pages/config/enterprise-license.adoc | 3 +++ .../pages/config/http-path-rewrites.adoc | 3 +++ .../console/pages/config/kafka-connect.adoc | 3 +++ .../pages/config/security/authentication.adoc | 4 ++++ .../pages/config/security/authorization.adoc | 3 +++ .../console/pages/config/security/index.adoc | 3 +++ .../config/security/tls-termination.adoc | 3 +++ .../pages/config/topic-documentation.adoc | 3 +++ modules/console/pages/index.adoc | 3 +++ modules/console/pages/ui/add-license.adoc | 3 +++ modules/console/pages/ui/check-license.adoc | 3 +++ modules/console/pages/ui/data-transforms.adoc | 4 ++++ .../pages/ui/edit-topic-configuration.adoc | 4 ++++ modules/console/pages/ui/generate-bundle.adoc | 3 +++ .../pages/ui/programmable-push-filters.adoc | 4 ++++ .../pages/ui/record-deserialization.adoc | 5 +++++ modules/console/pages/ui/schema-reg.adoc | 4 ++++ .../operator-console-version-note.adoc | 21 +++++++++++++++++++ .../kubernetes/k-high-availability.adoc | 1 - .../kubernetes/k-production-deployment.adoc | 1 - .../kubernetes/k-requirements.adoc | 1 - .../self-hosted/manual/high-availability.adoc | 1 - .../manual/production/requirements.adoc | 1 - modules/develop/pages/config-topics.adoc | 1 - .../data-transforms/k-run-transforms.adoc | 1 - .../pages/data-transforms/run-transforms.adoc | 1 - .../pages/release-notes/operator.adoc | 2 +- modules/manage/pages/audit-logging.adoc | 1 - .../cluster-property-configuration.adoc | 1 - .../decommission-brokers.adoc | 1 - .../cluster-maintenance/rolling-restart.adoc | 1 - .../pages/fast-commission-decommission.adoc | 1 - .../k-cluster-property-configuration.adoc | 1 - .../kubernetes/k-decommission-brokers.adoc | 1 - .../pages/kubernetes/k-manage-topics.adoc | 1 - .../pages/kubernetes/k-rack-awareness.adoc | 1 - .../kubernetes/k-remote-read-replicas.adoc | 1 - .../pages/kubernetes/k-rolling-restart.adoc | 1 - .../monitoring/k-monitor-redpanda.adoc | 1 - .../networking/k-configure-listeners.adoc | 1 - .../authentication/k-authentication.adoc | 1 - .../kubernetes/security/k-audit-logging.adoc | 1 - .../pages/kubernetes/security/tls/index.adoc | 1 - .../k-fast-commission-decommission.adoc | 1 - .../tiered-storage/k-recovery-mode.adoc | 1 - .../k-remote-read-replicas.adoc | 1 - .../tiered-storage/k-topic-recovery.adoc | 1 - .../k-whole-cluster-restore.adoc | 1 - modules/manage/pages/monitoring.adoc | 1 - modules/manage/pages/mountable-topics.adoc | 1 - modules/manage/pages/rack-awareness.adoc | 1 - modules/manage/pages/recovery-mode.adoc | 1 - .../manage/pages/remote-read-replicas.adoc | 1 - .../manage/pages/security/authentication.adoc | 1 - modules/manage/pages/security/encryption.adoc | 1 - .../security/listener-configuration.adoc | 1 - modules/manage/pages/tiered-storage.adoc | 1 - modules/manage/pages/topic-recovery.adoc | 1 - .../manage/pages/whole-cluster-restore.adoc | 1 - modules/upgrade/pages/k-rolling-upgrade.adoc | 1 - modules/upgrade/pages/rolling-upgrade.adoc | 1 - package-lock.json | 6 +++--- 67 files changed, 93 insertions(+), 47 deletions(-) create mode 100644 modules/console/partials/operator-console-version-note.adoc diff --git a/antora.yml b/antora.yml index c1fb810bbb..c69e4d4c35 100644 --- a/antora.yml +++ b/antora.yml @@ -19,7 +19,6 @@ asciidoc: # Fallback versions # We try to fetch the latest versions from GitHub at build time # -- - full-version: 25.1.1 latest-redpanda-tag: 'v25.1.1' latest-console-tag: 'v2.8.5' diff --git a/local-antora-playbook.yml b/local-antora-playbook.yml index c0a904527a..f2acd5bb60 100644 --- a/local-antora-playbook.yml +++ b/local-antora-playbook.yml @@ -43,6 +43,7 @@ antora: - require: '@redpanda-data/docs-extensions-and-macros/extensions/add-global-attributes' - require: '@redpanda-data/docs-extensions-and-macros/extensions/version-fetcher/set-latest-version' - require: '@redpanda-data/docs-extensions-and-macros/extensions/validate-attributes' + - require: '@redpanda-data/docs-extensions-and-macros/extensions/process-context-switcher' - require: '@redpanda-data/docs-extensions-and-macros/extensions/generate-index-data' data: sets: diff --git a/modules/console/pages/config/configure-console.adoc b/modules/console/pages/config/configure-console.adoc index c1ec66844a..0f2411e683 100644 --- a/modules/console/pages/config/configure-console.adoc +++ b/modules/console/pages/config/configure-console.adoc @@ -1,6 +1,9 @@ = Configure Redpanda Console :description: Redpanda Console configuration file with property descriptions. :page-aliases: console:reference/config.adoc, reference:console/config.adoc +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:config/configure-console.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] Redpanda Console loads configuration properties from three sources, in the following order of precedence: diff --git a/modules/console/pages/config/connect-to-redpanda.adoc b/modules/console/pages/config/connect-to-redpanda.adoc index 81d6a018c6..5a22abf59d 100644 --- a/modules/console/pages/config/connect-to-redpanda.adoc +++ b/modules/console/pages/config/connect-to-redpanda.adoc @@ -1,5 +1,8 @@ = Configure Redpanda Console to Connect to a Redpanda Cluster :description: This topic provides instructions on configuring Redpanda Console to connect to a Redpanda cluster. The configuration ensures that Redpanda Console can communicate with your Redpanda brokers. +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:config/connect-to-redpanda.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] Redpanda Console connects to your Redpanda cluster using dedicated configuration blocks for the Kafka API, Schema Registry API, and Admin API. Each connection serves a different purpose: diff --git a/modules/console/pages/config/deserialization.adoc b/modules/console/pages/config/deserialization.adoc index 87f5f63688..b714316840 100644 --- a/modules/console/pages/config/deserialization.adoc +++ b/modules/console/pages/config/deserialization.adoc @@ -1,5 +1,8 @@ = Configure Message Deserialization in Redpanda Console :description: Configure Redpanda Console to use Schema Registry, Protobuf files, and other deserialization methods to ensure your data is correctly interpreted and displayed. +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:config/deserialization.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] Redpanda Console provides tools for deserializing and inspecting messages in Kafka topics. This topic explains how to configure Redpanda Console to use Schema Registry, Protobuf files, and other deserialization methods to ensure your data is correctly interpreted and displayed. diff --git a/modules/console/pages/config/enterprise-license.adoc b/modules/console/pages/config/enterprise-license.adoc index 2d721e37c3..bb22562194 100644 --- a/modules/console/pages/config/enterprise-license.adoc +++ b/modules/console/pages/config/enterprise-license.adoc @@ -1,5 +1,8 @@ = Add a License Key to Redpanda Console :description: Learn how to apply or update a license key to Redpanda Console. +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:config/enterprise-license.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] To enable xref:get-started:licensing/overview.adoc#console[enterprise features for Redpanda Console], you must have an Enterprise Edition license to load at startup. This guide explains how to configure Redpanda Console to load the license key from its local configuration. diff --git a/modules/console/pages/config/http-path-rewrites.adoc b/modules/console/pages/config/http-path-rewrites.adoc index 2af764038b..b2c326e56d 100644 --- a/modules/console/pages/config/http-path-rewrites.adoc +++ b/modules/console/pages/config/http-path-rewrites.adoc @@ -1,6 +1,9 @@ = HTTP Path Rewrites in Redpanda Console :description: Learn how to configure Redpanda Console to work seamlessly with your URL path rewrites, particularly when hosted under a subpath. :page-aliases: console:features/http-path-rewrites.adoc, manage:console/http-path-rewrites.adoc +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:config/http-path-rewrites.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] If you want to host Redpanda Console under a subpath rather than the root path, you need to configure HTTP path rewrites. This allows you to serve Redpanda Console under a subpath of your domain, such as `+https://my-company.com/redpanda/console+`, instead of directly from `+https://my-company.com+`. This type of configuration is often necessary when: diff --git a/modules/console/pages/config/kafka-connect.adoc b/modules/console/pages/config/kafka-connect.adoc index 84eee8a7a8..87df697d49 100644 --- a/modules/console/pages/config/kafka-connect.adoc +++ b/modules/console/pages/config/kafka-connect.adoc @@ -1,9 +1,12 @@ = Connect Redpanda Console to Kafka Connect Clusters :description: Connect one or more Kafka Connect clusters with Redpanda Console. :page-aliases: console:features/kafka-connect.adoc, manage:console/kafka-connect.adoc +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:config/kafka-connect.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] include::shared:partial$community-supported-kc.adoc[] +include::console:partial$operator-console-version-note.adoc[] + Redpanda Console provides a user interface that lets you manage multiple Kafka Connect clusters. You can inspect or patch connectors; restart, pause, and resume connector tasks; and delete connectors. Redpanda Console queries all configured Kafka Connect diff --git a/modules/console/pages/config/security/authentication.adoc b/modules/console/pages/config/security/authentication.adoc index 0aff85c4ea..e55dbf4487 100644 --- a/modules/console/pages/config/security/authentication.adoc +++ b/modules/console/pages/config/security/authentication.adoc @@ -2,6 +2,10 @@ :description: Authentication in Redpanda Console enables users to log in and optionally forward their credentials to the connected Redpanda cluster, ensuring all API requests are executed under the user's identity. :page-aliases: console:single-sign-on/authentication.adoc, manage:security/console/authentication.adoc, console:config/security/plain.adoc, console:config/security/okta.adoc, console:config/security/generic-oidc.adoc, console:config/security/keycloak.adoc, console:config/security/github.adoc, console:config/security/google.adoc, console:config/security/azure-ad.adoc :page-categories: Security, Management, Redpanda Console +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:config/security/authentication.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] + // ========================AUTOMATED TESTS=================================== // The comments in this file are used to run automated tests of the documented steps. Tests are run using GitHub Actions on each pull request that changes this file in the upstream repository. For more details about the testing tool we use, see https://doc-detective.com/. diff --git a/modules/console/pages/config/security/authorization.adoc b/modules/console/pages/config/security/authorization.adoc index 304e88d247..beb84d2229 100644 --- a/modules/console/pages/config/security/authorization.adoc +++ b/modules/console/pages/config/security/authorization.adoc @@ -2,6 +2,9 @@ :description: Redpanda Console supports role-based access control (RBAC) to restrict system access to authorized users. This page is intended for cluster administrators who manage Redpanda Console access and need to configure UI-based authorization. :page-aliases: console:single-sign-on/authorization.adoc, manage:security/console/authorization.adoc, console:features/role-bindings.adoc, console:reference/role-bindings.adoc, reference:console/role-bindings.adoc :page-categories: Security, Management, Redpanda Console +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:config/security/authorization.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] [NOTE] ==== diff --git a/modules/console/pages/config/security/index.adoc b/modules/console/pages/config/security/index.adoc index ef784e67dd..b200975a1b 100644 --- a/modules/console/pages/config/security/index.adoc +++ b/modules/console/pages/config/security/index.adoc @@ -2,3 +2,6 @@ :page-aliases: manage:security/console/index.adoc :description: Security topics for Redpanda Console. :page-layout: index +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:config/security/index.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] diff --git a/modules/console/pages/config/security/tls-termination.adoc b/modules/console/pages/config/security/tls-termination.adoc index 9e8e4cf0e4..8e14117516 100644 --- a/modules/console/pages/config/security/tls-termination.adoc +++ b/modules/console/pages/config/security/tls-termination.adoc @@ -3,6 +3,9 @@ :description: To secure Redpanda Console using TLS, you can let Redpanda Console handle TLS termination or you can offload it to an upstream component, such as a reverse proxy or a Cloud HTTPS LoadBalancer. :page-categories: Management, Security, Redpanda Console :page-exclude-related-labs: true +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:config/security/tls-termination.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] To secure Redpanda Console using TLS (Transport Layer Security), you can either let Redpanda Console handle TLS termination or you can offload it to an upstream component, such as a reverse proxy or a cloud HTTPS load balancer. TLS termination refers to the process of decrypting incoming TLS-encrypted traffic. Choosing the right approach depends on various factors, such as your application's traffic load, the complexity of your infrastructure, security requirements, and resource availability: diff --git a/modules/console/pages/config/topic-documentation.adoc b/modules/console/pages/config/topic-documentation.adoc index 71db1f6558..36ec0e7c52 100644 --- a/modules/console/pages/config/topic-documentation.adoc +++ b/modules/console/pages/config/topic-documentation.adoc @@ -1,6 +1,9 @@ = Enable Topic Documentation in Redpanda Console :description: Embed your Kafka topic documentation into the Redpanda Console UI by linking a Git repository that contains the topic documentation files. :page-aliases: console:features/topic-documentation.adoc, manage:console/topic-documentation.adoc +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:config/topic-documentation.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] You can embed your topic's documentation into the Redpanda Console user interface by providing access to a public or private Git repository that hosts your documentation files in Markdown format. diff --git a/modules/console/pages/index.adoc b/modules/console/pages/index.adoc index 1dd8dda8fb..7b615c08c6 100644 --- a/modules/console/pages/index.adoc +++ b/modules/console/pages/index.adoc @@ -1,6 +1,9 @@ = Introduction to Redpanda Console :description: Learn about Redpanda Console: a web interface for managing and interacting with Redpanda clusters. :page-aliases: console:index/index.adoc, console:features/index.adoc, reference:console/index.adoc +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:index.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] Redpanda Console is a web interface for managing and interacting with Redpanda clusters. Built to provide a seamless experience for developers working with streaming data, Redpanda Console simplifies tasks associated with managing data streams, offering a UI that helps you monitor, troubleshoot, and optimize your streaming workloads. diff --git a/modules/console/pages/ui/add-license.adoc b/modules/console/pages/ui/add-license.adoc index 33b46cbe91..5c6d9457a7 100644 --- a/modules/console/pages/ui/add-license.adoc +++ b/modules/console/pages/ui/add-license.adoc @@ -1,5 +1,8 @@ = Manage Enterprise Edition Licenses through Redpanda Console :description: Learn how to manage Enterprise Edition licenses in Redpanda Console. +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:ui/add-license.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] You can add or update an xref:get-started:licensing/overview.adoc#console[Enterprise Edition license] for both Redpanda and Redpanda Console directly through the Redpanda Console UI. diff --git a/modules/console/pages/ui/check-license.adoc b/modules/console/pages/ui/check-license.adoc index a6b7279890..87ca35e215 100644 --- a/modules/console/pages/ui/check-license.adoc +++ b/modules/console/pages/ui/check-license.adoc @@ -1,5 +1,8 @@ = Check License Status in Redpanda Console :description: Learn how to check the status of your Redpanda Enterprise Edition license using the Redpanda Console. This topic includes steps to check license details and understand license warnings. +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:ui/check-license.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] You can check the expiration date of a license on the **Cluster Overview** page in Redpanda Console, under the **Licensing** section. diff --git a/modules/console/pages/ui/data-transforms.adoc b/modules/console/pages/ui/data-transforms.adoc index ce160a3d1c..f101390f8a 100644 --- a/modules/console/pages/ui/data-transforms.adoc +++ b/modules/console/pages/ui/data-transforms.adoc @@ -1,5 +1,9 @@ = Manage Data Transforms in {ui} :description: Use {ui} to monitor the status and performance metrics of your transform functions. You can also view detailed logs and delete transform functions when they are no longer needed. +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:ui/data-transforms.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] + // tag::single-source[] {description} diff --git a/modules/console/pages/ui/edit-topic-configuration.adoc b/modules/console/pages/ui/edit-topic-configuration.adoc index 695fe3337d..45e77376be 100644 --- a/modules/console/pages/ui/edit-topic-configuration.adoc +++ b/modules/console/pages/ui/edit-topic-configuration.adoc @@ -1,6 +1,10 @@ = Edit Topic Configuration in {ui} :page-aliases: manage:console/edit-topic-configuration.adoc :description: Use {ui} to edit the configuration of existing topics in a cluster. +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:ui/edit-topic-configuration.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] + // tag::single-source[] {description} diff --git a/modules/console/pages/ui/generate-bundle.adoc b/modules/console/pages/ui/generate-bundle.adoc index eeaaf38e47..38f2955040 100644 --- a/modules/console/pages/ui/generate-bundle.adoc +++ b/modules/console/pages/ui/generate-bundle.adoc @@ -1,5 +1,8 @@ = Manage Debug Bundles in Redpanda Console :description: Learn how to generate, download, and delete debug bundles in Redpanda Console for comprehensive cluster diagnostics. +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:ui/generate-bundle.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] [NOTE] ==== diff --git a/modules/console/pages/ui/programmable-push-filters.adoc b/modules/console/pages/ui/programmable-push-filters.adoc index 00381edf3e..00601bc060 100644 --- a/modules/console/pages/ui/programmable-push-filters.adoc +++ b/modules/console/pages/ui/programmable-push-filters.adoc @@ -2,6 +2,10 @@ :page-aliases: console:features/programmable-push-filters.adoc, reference:console/programmable-push-filters.adoc // Do not put page aliases in the single-sourced content :description: Learn how to filter Kafka records using custom JavaScript code within {ui}. +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:ui/programmable-push-filters.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] + // tag::single-source[] You can use push-down filters in {ui} to search through large Kafka topics that may contain millions of records. Filters are JavaScript functions executed on the backend, evaluating each record individually. Your function must return a boolean: diff --git a/modules/console/pages/ui/record-deserialization.adoc b/modules/console/pages/ui/record-deserialization.adoc index 592cf2f139..a957fdd856 100644 --- a/modules/console/pages/ui/record-deserialization.adoc +++ b/modules/console/pages/ui/record-deserialization.adoc @@ -1,8 +1,13 @@ = View Deserialized Messages in {ui} :page-aliases: console:features/record-deserialization.adoc, manage:console/protobuf.adoc, reference:console/record-deserialization.adoc :description: Learn how {ui} deserializes messages. +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:ui/record-deserialization.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] + // tag::single-source[] + In Redpanda, the messages exchanged between producers and consumers contain raw bytes. Schemas work as an agreed-upon format, like a contract, for producers and consumers to serialize and deserialize those messages. If a producer breaks this contract, consumers can fail. {ui} automatically tries to deserialize incoming messages and displays them in human-readable format. It tests different deserialization strategies until it finds one with no errors. If no deserialization attempts are successful, {ui} renders the byte array in a hex viewer. Sometimes, the payload is displayed in hex bytes because it's encrypted or because it uses a serializer that {ui} cannot deserialize. When this happens, {ui} displays troubleshooting information. You can also download the raw bytes of the message to feed it directly to your client deserializer or share it with a support team. diff --git a/modules/console/pages/ui/schema-reg.adoc b/modules/console/pages/ui/schema-reg.adoc index 8a5668efdd..bebd09c6c0 100644 --- a/modules/console/pages/ui/schema-reg.adoc +++ b/modules/console/pages/ui/schema-reg.adoc @@ -2,6 +2,10 @@ :page-aliases: manage:schema-reg/schema-reg-ui.adoc :page-categories: Management, Schema Registry :description: Perform common Schema Registry management operations in the {ui}. +:page-context-switcher: [{"name": "Redpanda Console v2.x", "to": "24.3@ROOT:console:ui/schema-reg.adoc" },{"name": "Redpanda Console v3.x", "to": "current" } ] + +include::console:partial$operator-console-version-note.adoc[] + // tag::single-source[] In {ui}, the *Schema Registry* menu lists registered and verified schemas, including their serialization format and versions. Select an individual schema to see which topics it applies to. diff --git a/modules/console/partials/operator-console-version-note.adoc b/modules/console/partials/operator-console-version-note.adoc new file mode 100644 index 0000000000..112f445975 --- /dev/null +++ b/modules/console/partials/operator-console-version-note.adoc @@ -0,0 +1,21 @@ +.The Redpanda Operator deploys Redpanda Console v2.x, not v3.x +[%collapsible] +==== +Redpanda Console v3 is **not yet available when deploying with the Redpanda Operator**. The Redpanda Operator continues to deploy Redpanda Console v2. To try Redpanda Console v3 in Kubernetes, you can xref:deploy:deployment-option/self-hosted/kubernetes/k-production-deployment.adoc[deploy Redpanda using the Redpanda Helm chart] instead of the Redpanda Operator. + +Redpanda Console configuration syntax varies by major version. Before configuring, determine which version you're using: + +[source,shell] +---- +# Check console version from deployment +kubectl get deployment -n redpanda-console -o jsonpath='{.spec.template.spec.containers[0].image}' + +# Or check from running pod +kubectl get pod -n -l app.kubernetes.io/name=console -o jsonpath='{.items[0].spec.containers[0].image}' + +# Or check from console logs +kubectl logs -n -l app.kubernetes.io/name=console | grep "started Redpanda Console" +---- + +If you see output like `redpandadata/console:v2.8.0`, you're using Redpanda Console v2.x. If you see `redpandadata/console:v3.0.0`, you're using Redpanda Console v3.x. +==== diff --git a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-high-availability.adoc b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-high-availability.adoc index 3b42de8ff7..c8f51f4202 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-high-availability.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-high-availability.adoc @@ -1,6 +1,5 @@ = High Availability in Kubernetes :description: Explore high availability configurations of Redpanda in Kubernetes. -:page-context-links: [{"name": "Linux", "to": "deploy:deployment-option/self-hosted/manual/high-availability.adoc" },{"name": "Kubernetes", "to": "deploy:deployment-option/self-hosted/kubernetes/k-high-availability.adoc" } ] :env-kubernetes: true :page-categories: Deployment, High Availability diff --git a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc index 746dc2e839..33d7282235 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-production-deployment.adoc @@ -3,7 +3,6 @@ :tags: ["Kubernetes"] :page-aliases: deploy:deployment-option/self-hosted/kubernetes/kubernetes-best-practices.adoc, deploy:deployment-option/self-hosted/kubernetes/redpanda-cluster-recommendations.adoc, deploy:deployment-option/self-hosted/kubernetes/kubernetes-deploy.adoc :page-toclevels: 1 -:page-context-links: [{"name": "Linux", "to": "deploy:deployment-option/self-hosted/manual/production/production-deployment.adoc" },{"name": "Kubernetes", "to": "deploy:deployment-option/self-hosted/kubernetes/k-production-deployment.adoc" } ] :env-kubernetes: true :page-categories: Deployment, GitOps diff --git a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-requirements.adoc b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-requirements.adoc index 1d97015180..f5876a3df6 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-requirements.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/kubernetes/k-requirements.adoc @@ -2,7 +2,6 @@ :description: A list of requirements and recommendations for provisioning Kubernetes clusters and worker nodes for running Redpanda in production. :tags: ["Kubernetes"] :page-aliases: deploy:deployment-option/self-hosted/kubernetes/cloud-instance-local-storage.adoc, deploy:deployment-option/self-hosted/kubernetes/kubernetes-requirements-index.adoc, deploy:deployment-option/self-hosted/kubernetes/kubernetes-cluster-requirements.adoc -:page-context-links: [{"name": "Linux", "to": "deploy:deployment-option/self-hosted/manual/production/requirements.adoc" },{"name": "Kubernetes", "to": "deploy:deployment-option/self-hosted/kubernetes/k-requirements.adoc" } ] :env-kubernetes: true :page-categories: Deployment diff --git a/modules/deploy/pages/deployment-option/self-hosted/manual/high-availability.adoc b/modules/deploy/pages/deployment-option/self-hosted/manual/high-availability.adoc index ef98f2184a..f6e580d3cb 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/manual/high-availability.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/manual/high-availability.adoc @@ -1,6 +1,5 @@ = High Availability :description: Learn about the trade-offs with different high availability configurations. -:page-context-links: [{"name": "Linux", "to": "deploy:deployment-option/self-hosted/manual/high-availability.adoc" },{"name": "Kubernetes", "to": "deploy:deployment-option/self-hosted/kubernetes/k-high-availability.adoc" } ] :page-aliases: deployment:high-availability.adoc :env-linux: true :page-categories: Deployment diff --git a/modules/deploy/pages/deployment-option/self-hosted/manual/production/requirements.adoc b/modules/deploy/pages/deployment-option/self-hosted/manual/production/requirements.adoc index eb4e340ceb..4ce7cabfb4 100644 --- a/modules/deploy/pages/deployment-option/self-hosted/manual/production/requirements.adoc +++ b/modules/deploy/pages/deployment-option/self-hosted/manual/production/requirements.adoc @@ -1,6 +1,5 @@ = Requirements and Recommendations :description: A list of requirements and recommendations for provisioning servers to run Redpanda in production. -:page-context-links: [{"name": "Linux", "to": "deploy:deployment-option/self-hosted/manual/production/requirements.adoc" },{"name": "Kubernetes", "to": "deploy:deployment-option/self-hosted/kubernetes/k-requirements.adoc" } ] :env-linux: true :page-categories: Deployment diff --git a/modules/develop/pages/config-topics.adoc b/modules/develop/pages/config-topics.adoc index 439295f70d..f3fa83a489 100644 --- a/modules/develop/pages/config-topics.adoc +++ b/modules/develop/pages/config-topics.adoc @@ -1,5 +1,4 @@ = Manage Topics -:page-context-links: [{"name": "Linux", "to": "develop:config-topics.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-manage-topics.adoc" } ] :page-categories: Clients, Development :description: Learn how to create topics, update topic configurations, and delete topics or records. // tag::single-source[] diff --git a/modules/develop/pages/data-transforms/k-run-transforms.adoc b/modules/develop/pages/data-transforms/k-run-transforms.adoc index 463a80c7ff..d5a0aa8d7a 100644 --- a/modules/develop/pages/data-transforms/k-run-transforms.adoc +++ b/modules/develop/pages/data-transforms/k-run-transforms.adoc @@ -1,7 +1,6 @@ = Data Transforms in Kubernetes Quickstart :description: Learn how to build and deploy your first transform function in Kubernetes deployments. :env-kubernetes: -:page-context-links: [{"name": "Linux", "to": "develop:data-transforms/run-transforms.adoc" },{"name": "Kubernetes", "to": "develop:data-transforms/k-run-transforms.adoc" } ] :page-categories: Development, Stream Processing, Data Transforms include::develop:partial$run-transforms.adoc[] diff --git a/modules/develop/pages/data-transforms/run-transforms.adoc b/modules/develop/pages/data-transforms/run-transforms.adoc index ed834934ab..237fa6f4c0 100644 --- a/modules/develop/pages/data-transforms/run-transforms.adoc +++ b/modules/develop/pages/data-transforms/run-transforms.adoc @@ -1,6 +1,5 @@ = Data Transforms in Linux Quickstart :description: Learn how to build and deploy your first transform function in Linux deployments. -:page-context-links: [{"name": "Linux", "to": "develop:data-transforms/run-transforms.adoc" },{"name": "Kubernetes", "to": "develop:data-transforms/k-run-transforms.adoc" } ] :page-categories: Development, Stream Processing, Data Transforms include::develop:partial$run-transforms.adoc[] diff --git a/modules/get-started/pages/release-notes/operator.adoc b/modules/get-started/pages/release-notes/operator.adoc index 9dcd573042..231e880506 100644 --- a/modules/get-started/pages/release-notes/operator.adoc +++ b/modules/get-started/pages/release-notes/operator.adoc @@ -15,7 +15,7 @@ link:https://github.com/redpanda-data/redpanda-operator/blob/release/v25.1.x/ope === Redpanda Console v3 -Redpanda Console v3 is **not yet available when deploying with the Redpanda Operator**, due to pending CRD updates. The Redpanda Operator continues to deploy Redpanda Console v2. +Redpanda Console v3 is **not yet available when deploying with the Redpanda Operator**, due to pending CRD updates. The Redpanda Operator continues to deploy Redpanda Console v2. xref:24.3@ROOT:console:index.adoc[View the Redpanda Console v2 documentation]. To try Redpanda Console v3 in Kubernetes, you can xref:deploy:deployment-option/self-hosted/kubernetes/k-production-deployment.adoc[deploy Redpanda using the Redpanda Helm chart] instead of the Redpanda Operator. Redpanda Console v3 introduces support for unified authentication and authorization with Redpanda, including user impersonation. diff --git a/modules/manage/pages/audit-logging.adoc b/modules/manage/pages/audit-logging.adoc index 0b98f49fbb..5a94792d7e 100644 --- a/modules/manage/pages/audit-logging.adoc +++ b/modules/manage/pages/audit-logging.adoc @@ -1,6 +1,5 @@ = Audit Logging :description: Learn how to use Redpanda's audit logging capabilities. -:page-context-links: [{"name": "Linux", "to": "manage:audit-logging.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/security/k-audit-logging.adoc" } ] :page-categories: Management, Security :env-linux: true // tag::single-source[] diff --git a/modules/manage/pages/cluster-maintenance/cluster-property-configuration.adoc b/modules/manage/pages/cluster-maintenance/cluster-property-configuration.adoc index d2d932145b..583a123603 100644 --- a/modules/manage/pages/cluster-maintenance/cluster-property-configuration.adoc +++ b/modules/manage/pages/cluster-maintenance/cluster-property-configuration.adoc @@ -1,6 +1,5 @@ = Configure Cluster Properties :description: Learn how to configure cluster properties. -:page-context-links: [{"name": "Linux", "to": "manage:cluster-maintenance/cluster-property-configuration.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-cluster-property-configuration.adoc" } ] :page-aliases: manage:cluster-maintenance/configuration.adoc, deploy-self-hosted:configuration.adoc, cluster-administration:configuration.adoc, cluster-management:configuration.adoc, cluster-administration:cluster-property-configuration.adoc :page-categories: Management diff --git a/modules/manage/pages/cluster-maintenance/decommission-brokers.adoc b/modules/manage/pages/cluster-maintenance/decommission-brokers.adoc index c2559a2217..0ad8096d0e 100644 --- a/modules/manage/pages/cluster-maintenance/decommission-brokers.adoc +++ b/modules/manage/pages/cluster-maintenance/decommission-brokers.adoc @@ -1,6 +1,5 @@ = Decommission Brokers :description: Remove a broker so that it is no longer considered part of the cluster. -:page-context-links: [{"name": "Linux", "to": "manage:cluster-maintenance/decommission-brokers.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-decommission-brokers.adoc" } ] :page-categories: Management When you decommission a broker, its partition replicas are reallocated across the remaining brokers and it is removed from the cluster. You may want to decommission a broker in the following circumstances: diff --git a/modules/manage/pages/cluster-maintenance/rolling-restart.adoc b/modules/manage/pages/cluster-maintenance/rolling-restart.adoc index 89478027a5..d63ae19d5a 100644 --- a/modules/manage/pages/cluster-maintenance/rolling-restart.adoc +++ b/modules/manage/pages/cluster-maintenance/rolling-restart.adoc @@ -1,7 +1,6 @@ = Perform a Rolling Restart :description: Learn how to perform a rolling restart of your Redpanda cluster. :rolling-restart: -:page-context-links: [{"name": "Linux", "to": "manage:cluster-maintenance/rolling-restart.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-rolling-restart.adoc" } ] :page-categories: Management A rolling restart involves restarting one broker at a time while the remaining brokers in your cluster continue running. This is to minimize downtime during a full cluster restart. diff --git a/modules/manage/pages/fast-commission-decommission.adoc b/modules/manage/pages/fast-commission-decommission.adoc index b9a47be20d..394520d79b 100644 --- a/modules/manage/pages/fast-commission-decommission.adoc +++ b/modules/manage/pages/fast-commission-decommission.adoc @@ -1,6 +1,5 @@ = Fast Commission and Decommission Brokers :description: Configure fast partition movement during cluster resize for high availability. -:page-context-links: [{"name": "Linux", "to": "manage:fast-commission-decommission.adoc" } ] :page-categories: Management, High Availability :env-linux: true diff --git a/modules/manage/pages/kubernetes/k-cluster-property-configuration.adoc b/modules/manage/pages/kubernetes/k-cluster-property-configuration.adoc index a2e36204e5..96aad4b5ab 100644 --- a/modules/manage/pages/kubernetes/k-cluster-property-configuration.adoc +++ b/modules/manage/pages/kubernetes/k-cluster-property-configuration.adoc @@ -1,6 +1,5 @@ = Configure Cluster Properties in Kubernetes :description: Learn how to configure cluster properties in Kubernetes. -:page-context-links: [{"name": "Linux", "to": "manage:cluster-maintenance/cluster-property-configuration.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-cluster-property-configuration.adoc" } ] :page-aliases: manage:kubernetes/cluster-property-configuration.adoc, reference:redpanda-operator/kubernetes-additional-config.adoc, reference:redpanda-operator/arbitrary-configuration.adoc :page-categories: Management :env-kubernetes: true diff --git a/modules/manage/pages/kubernetes/k-decommission-brokers.adoc b/modules/manage/pages/kubernetes/k-decommission-brokers.adoc index 260cc4f379..0ee5d1173d 100644 --- a/modules/manage/pages/kubernetes/k-decommission-brokers.adoc +++ b/modules/manage/pages/kubernetes/k-decommission-brokers.adoc @@ -1,6 +1,5 @@ = Decommission Brokers in Kubernetes :description: Remove a Redpanda broker from the cluster without risking data loss or causing instability. -:page-context-links: [{"name": "Linux", "to": "manage:cluster-maintenance/decommission-brokers.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-decommission-brokers.adoc" } ] :tags: ["Kubernetes"] :page-aliases: manage:kubernetes/decommission-brokers.adoc :page-categories: Management diff --git a/modules/manage/pages/kubernetes/k-manage-topics.adoc b/modules/manage/pages/kubernetes/k-manage-topics.adoc index b89d859bce..73a38a52eb 100644 --- a/modules/manage/pages/kubernetes/k-manage-topics.adoc +++ b/modules/manage/pages/kubernetes/k-manage-topics.adoc @@ -1,6 +1,5 @@ = Manage Topics with the Redpanda Operator :description: Use the Topic resource to declaratively create Kafka topics as part of a Redpanda deployment. Each Topic resource is mapped to a topic in your Redpanda cluster. The topic controller keeps the corresponding Kafka topic in sync with the Topic resource. -:page-context-links: [{"name": "Linux", "to": "develop:config-topics.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-manage-topics.adoc" } ] :page-categories: Management, Development :env-kubernetes: true :page-aliases: manage:kubernetes/manage-topics.adoc diff --git a/modules/manage/pages/kubernetes/k-rack-awareness.adoc b/modules/manage/pages/kubernetes/k-rack-awareness.adoc index 0fdd2ed1cd..ab7377dee4 100644 --- a/modules/manage/pages/kubernetes/k-rack-awareness.adoc +++ b/modules/manage/pages/kubernetes/k-rack-awareness.adoc @@ -1,6 +1,5 @@ = Enable Rack Awareness in Kubernetes :description: Enable rack awareness to place partition replicas across different failure zones. -:page-context-links: [{"name": "Linux", "to": "manage:rack-awareness.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-rack-awareness.adoc" } ] :page-tags: ["Kubernetes", "Helm configuration"] :page-aliases: manage:kubernetes/kubernetes-rack-awareness.adoc :page-categories: Management, High Availability diff --git a/modules/manage/pages/kubernetes/k-remote-read-replicas.adoc b/modules/manage/pages/kubernetes/k-remote-read-replicas.adoc index 7969c52e4c..d327687581 100644 --- a/modules/manage/pages/kubernetes/k-remote-read-replicas.adoc +++ b/modules/manage/pages/kubernetes/k-remote-read-replicas.adoc @@ -1,6 +1,5 @@ = Remote Read Replicas in Kubernetes :description: Create read-only topics (Remote Read Replica topics) that mirror topics on a different cluster. -:page-context-links: [{"name": "Linux", "to": "manage:remote-read-replicas.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-remote-read-replicas.adoc" } ] :page-categories: Management, High Availability :env-kubernetes: true :tags: ["Kubernetes", "Helm configuration"] diff --git a/modules/manage/pages/kubernetes/k-rolling-restart.adoc b/modules/manage/pages/kubernetes/k-rolling-restart.adoc index 404642009f..6643cfd337 100644 --- a/modules/manage/pages/kubernetes/k-rolling-restart.adoc +++ b/modules/manage/pages/kubernetes/k-rolling-restart.adoc @@ -1,7 +1,6 @@ = Perform a Rolling Restart of Redpanda in Kubernetes :description: Learn how to perform a rolling restart of your Redpanda cluster when it's running in Kubernetes. :rolling-restart: -:page-context-links: [{"name": "Linux", "to": "manage:cluster-maintenance/rolling-restart.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-rolling-restart.adoc" } ] :page-categories: Management, High Availability :env-kubernetes: true diff --git a/modules/manage/pages/kubernetes/monitoring/k-monitor-redpanda.adoc b/modules/manage/pages/kubernetes/monitoring/k-monitor-redpanda.adoc index d8902a32a1..5641a72fa4 100644 --- a/modules/manage/pages/kubernetes/monitoring/k-monitor-redpanda.adoc +++ b/modules/manage/pages/kubernetes/monitoring/k-monitor-redpanda.adoc @@ -1,6 +1,5 @@ = Monitor Redpanda in Kubernetes :description: Monitor the health of your system to predict issues and optimize performance. -:page-context-links: [{"name": "Linux", "to": "manage:monitoring.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/monitoring/k-monitor-redpanda.adoc" },{"name": "Cloud", "to": "deploy:deployment-option/cloud/monitor-cloud.adoc" } ] :env-kubernetes: :page-aliases: manage:kubernetes/monitoring/monitor-redpanda.adoc :page-categories: Management, Monitoring diff --git a/modules/manage/pages/kubernetes/networking/k-configure-listeners.adoc b/modules/manage/pages/kubernetes/networking/k-configure-listeners.adoc index c372b189f1..955fcb7cd0 100644 --- a/modules/manage/pages/kubernetes/networking/k-configure-listeners.adoc +++ b/modules/manage/pages/kubernetes/networking/k-configure-listeners.adoc @@ -1,6 +1,5 @@ = Configure Listeners in Kubernetes :description: Configure your Redpanda deployment in Kubernetes to meet specific network requirements by customizing advertised ports and TLS certificates for each listener. Learn to enable or disable access to these listeners as needed. -:page-context-links: [{"name": "Linux", "to": "manage:security/listener-configuration.adoc"}, {"name": "Kubernetes", "to": "manage:kubernetes/networking/k-configure-listeners.adoc"}] :tags: [Kubernetes, Helm Configuration] :page-aliases: manage:kubernetes/networking/configure-listeners.adoc :page-categories: Management, Networking diff --git a/modules/manage/pages/kubernetes/security/authentication/k-authentication.adoc b/modules/manage/pages/kubernetes/security/authentication/k-authentication.adoc index 1891906b50..6368223243 100644 --- a/modules/manage/pages/kubernetes/security/authentication/k-authentication.adoc +++ b/modules/manage/pages/kubernetes/security/authentication/k-authentication.adoc @@ -1,6 +1,5 @@ = Configure Authentication for Redpanda in Kubernetes :description: Use Helm values or the Redpanda resource manifest to enable authentication for Redpanda. This method provides a way to configure authentication during the initial deployment or updates to the cluster configuration. -:page-context-links: [{"name": "Linux", "to": "manage:security/authentication.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/security/authentication/k-authentication.adoc" } ] :tags: ["Kubernetes", "Helm configuration"] :page-categories: Management, Security :env-kubernetes: true diff --git a/modules/manage/pages/kubernetes/security/k-audit-logging.adoc b/modules/manage/pages/kubernetes/security/k-audit-logging.adoc index 9da2d42eb8..f75f9e1de5 100644 --- a/modules/manage/pages/kubernetes/security/k-audit-logging.adoc +++ b/modules/manage/pages/kubernetes/security/k-audit-logging.adoc @@ -1,6 +1,5 @@ = Audit Logging in Kubernetes :description: Learn how to use Redpanda's audit logging capabilities. -:page-context-links: [{"name": "Linux", "to": "manage:audit-logging.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/security/k-audit-logging.adoc" } ] :page-categories: Management, Security :env-kubernetes: true diff --git a/modules/manage/pages/kubernetes/security/tls/index.adoc b/modules/manage/pages/kubernetes/security/tls/index.adoc index 922b18cd76..b2626a94b1 100644 --- a/modules/manage/pages/kubernetes/security/tls/index.adoc +++ b/modules/manage/pages/kubernetes/security/tls/index.adoc @@ -1,6 +1,5 @@ = TLS for Redpanda in Kubernetes :description: Use TLS to authenticate Redpanda brokers and encrypt communication between clients and brokers. -:page-context-links: [{"name": "Linux", "to": "manage:security/encryption.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/security/kubernetes-tls.adoc" } ] :tags: ["Kubernetes", "Security"] :page-aliases: manage:kubernetes/security/kubernetes-tls.adoc, security:kubernetes-tls.adoc, security:kubernetes-mtls.adoc, features:tls-kubernetes.adoc, security:tls-kubernetes.adoc, reference:redpanda-operator/tls-kubernetes.adoc, manage:kubernetes/security/tls.adoc :page-layout: index diff --git a/modules/manage/pages/kubernetes/tiered-storage/k-fast-commission-decommission.adoc b/modules/manage/pages/kubernetes/tiered-storage/k-fast-commission-decommission.adoc index 7415ab1520..f84b982736 100644 --- a/modules/manage/pages/kubernetes/tiered-storage/k-fast-commission-decommission.adoc +++ b/modules/manage/pages/kubernetes/tiered-storage/k-fast-commission-decommission.adoc @@ -1,6 +1,5 @@ = Fast Commission and Decommission Brokers in Kubernetes :description: Configure fast partition movement during cluster resize for high availability. -:page-context-links: [{"name": "Linux", "to": "manage:fast-commission-decommission.adoc" } ] :page-categories: Management, High Availability :env-kubernetes: true :page-aliases: manage:kubernetes/storage/tiered-storage/k-fast-commission-decommission.adoc diff --git a/modules/manage/pages/kubernetes/tiered-storage/k-recovery-mode.adoc b/modules/manage/pages/kubernetes/tiered-storage/k-recovery-mode.adoc index 8a977d7937..618fd0256a 100644 --- a/modules/manage/pages/kubernetes/tiered-storage/k-recovery-mode.adoc +++ b/modules/manage/pages/kubernetes/tiered-storage/k-recovery-mode.adoc @@ -1,6 +1,5 @@ = Recovery Mode in Kubernetes :description: Recovery mode starts Redpanda with limited functionality and disables partitions so you can repair a failed cluster. -:page-context-links: [{"name": "Linux", "to": "manage:recovery-mode.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-recovery-mode.adoc" } ] :page-categories: Management, High Availability, Disaster Recovery :env-kubernetes: true :page-aliases: manage:kubernetes/k-recovery-mode.adoc, manage:kubernetes/storage/tiered-storage/k-recovery-mode.adoc diff --git a/modules/manage/pages/kubernetes/tiered-storage/k-remote-read-replicas.adoc b/modules/manage/pages/kubernetes/tiered-storage/k-remote-read-replicas.adoc index f815f84af0..d4624de4ca 100644 --- a/modules/manage/pages/kubernetes/tiered-storage/k-remote-read-replicas.adoc +++ b/modules/manage/pages/kubernetes/tiered-storage/k-remote-read-replicas.adoc @@ -1,6 +1,5 @@ = Remote Read Replicas in Kubernetes :description: Learn how to create a Remote Read Replica topic, which is a read-only topic that mirrors a topic on a different cluster. -:page-context-links: [{"name": "Linux", "to": "manage:remote-read-replicas.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-remote-read-replicas.adoc" } ] :page-categories: Management, High Availability, Data Replication :env-kubernetes: true :page-aliases: manage:kubernetes/storage/tiered-storage/k-remote-read-replicas.adoc diff --git a/modules/manage/pages/kubernetes/tiered-storage/k-topic-recovery.adoc b/modules/manage/pages/kubernetes/tiered-storage/k-topic-recovery.adoc index 1157711f86..44bb21d98b 100644 --- a/modules/manage/pages/kubernetes/tiered-storage/k-topic-recovery.adoc +++ b/modules/manage/pages/kubernetes/tiered-storage/k-topic-recovery.adoc @@ -1,6 +1,5 @@ = Topic Recovery in Kubernetes :description: Restore a single topic from object storage. -:page-context-links: [{"name": "Linux", "to": "manage:topic-recovery.adoc" } ] :page-categories: Management, High Availability :env-kubernetes: true :page-aliases: manage:kubernetes/storage/tiered-storage/k-topic-recovery.adoc diff --git a/modules/manage/pages/kubernetes/tiered-storage/k-whole-cluster-restore.adoc b/modules/manage/pages/kubernetes/tiered-storage/k-whole-cluster-restore.adoc index 8e7f6d659a..28cb9a0ecd 100644 --- a/modules/manage/pages/kubernetes/tiered-storage/k-whole-cluster-restore.adoc +++ b/modules/manage/pages/kubernetes/tiered-storage/k-whole-cluster-restore.adoc @@ -1,6 +1,5 @@ = Whole Cluster Restore for Disaster Recovery in Kubernetes :description: Restore a failed cluster, including its metadata. -:page-context-links: [{"name": "Linux", "to": "manage:whole-cluster-restore.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-whole-cluster-restore.adoc" } ] :page-categories: Management, High Availability, Disaster Recovery :env-kubernetes: true :page-aliases: manage:kubernetes/k-whole-cluster-restore.adoc, manage:kubernetes/storage/tiered-storage/k-whole-cluster-restore.adoc diff --git a/modules/manage/pages/monitoring.adoc b/modules/manage/pages/monitoring.adoc index 1d2ba8017a..4f21da42b1 100644 --- a/modules/manage/pages/monitoring.adoc +++ b/modules/manage/pages/monitoring.adoc @@ -1,6 +1,5 @@ = Monitor Redpanda :description: Metrics to monitor the health of your system to predict issues and optimize performance. -:page-context-links: [{"name": "Linux", "to": "manage:monitoring.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/monitoring/k-monitor-redpanda.adoc" },{"name": "Cloud", "to": "deploy:deployment-option/cloud/monitor-cloud.adoc" } ] :page-aliases: deploy-self-hosted:monitoring.adoc, cluster-administration:monitoring.adoc, cluster-management:monitoring.adoc :page-categories: Management, Monitoring :env-linux: true diff --git a/modules/manage/pages/mountable-topics.adoc b/modules/manage/pages/mountable-topics.adoc index bad6b94282..fa362bf099 100644 --- a/modules/manage/pages/mountable-topics.adoc +++ b/modules/manage/pages/mountable-topics.adoc @@ -1,6 +1,5 @@ = Mountable Topics :description: Safely attach and detach Tiered Storage topics to and from a Redpanda cluster. -:page-context-links: [{"name": "Linux", "to": "manage:mountable-topics.adoc" } ] :page-categories: Management :env-linux: true diff --git a/modules/manage/pages/rack-awareness.adoc b/modules/manage/pages/rack-awareness.adoc index 902833820b..a6e8fd4135 100644 --- a/modules/manage/pages/rack-awareness.adoc +++ b/modules/manage/pages/rack-awareness.adoc @@ -1,6 +1,5 @@ = Enable Rack Awareness :description: Enable rack awareness to place partition replicas across different failure zones. -:page-context-links: [{"name": "Linux", "to": "manage:rack-awareness.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-rack-awareness.adoc" } ] :page-aliases: data-management:rack-awareness.adoc :page-categories: Management, High Availability :env-linux: true diff --git a/modules/manage/pages/recovery-mode.adoc b/modules/manage/pages/recovery-mode.adoc index 8a71c3c35c..b0c5e39faa 100644 --- a/modules/manage/pages/recovery-mode.adoc +++ b/modules/manage/pages/recovery-mode.adoc @@ -1,6 +1,5 @@ = Recovery Mode :description: Recovery mode starts Redpanda with limited functionality and disables partitions so you can repair a failed cluster. -:page-context-links: [{"name": "Linux", "to": "manage:recovery-mode.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-recovery-mode.adoc" } ] :page-categories: Management, High Availability, Disaster Recovery :env-linux: true diff --git a/modules/manage/pages/remote-read-replicas.adoc b/modules/manage/pages/remote-read-replicas.adoc index c2c1cf006d..edf3cea076 100644 --- a/modules/manage/pages/remote-read-replicas.adoc +++ b/modules/manage/pages/remote-read-replicas.adoc @@ -1,6 +1,5 @@ = Remote Read Replicas :description: Learn how to create a Remote Read Replica topic, which is a read-only topic that mirrors a topic on a different cluster. -:page-context-links: [{"name": "Linux", "to": "manage:remote-read-replicas.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-remote-read-replicas.adoc" } ] :page-aliases: data-management:remote-read-replicas.adoc :page-categories: Management, High Availability, Data Replication :env-linux: true diff --git a/modules/manage/pages/security/authentication.adoc b/modules/manage/pages/security/authentication.adoc index febab56d94..6895b87124 100644 --- a/modules/manage/pages/security/authentication.adoc +++ b/modules/manage/pages/security/authentication.adoc @@ -1,6 +1,5 @@ = Configure Authentication :description: Redpanda supports multiple forms of authentication including SASL/SCRAM, mTLS with principal mapping, and basic authentication. -:page-context-links: [{"name": "Linux", "to": "manage:security/authentication.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/security/authentication/k-authentication.adoc" } ] :page-aliases: security:authentication.adoc :page-toclevels: 3 :page-categories: Management, Security diff --git a/modules/manage/pages/security/encryption.adoc b/modules/manage/pages/security/encryption.adoc index d9b26378dd..356adae346 100644 --- a/modules/manage/pages/security/encryption.adoc +++ b/modules/manage/pages/security/encryption.adoc @@ -1,6 +1,5 @@ = Configure Kafka TLS Encryption :description: Enable encryption with TLS or mTLS. -:page-context-links: [{"name": "Linux", "to": "manage:security/encryption.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/security/kubernetes-tls.adoc" } ] :page-aliases: security:encryption.adoc :page-categories: Management, Security diff --git a/modules/manage/pages/security/listener-configuration.adoc b/modules/manage/pages/security/listener-configuration.adoc index 5fbee21973..e66c18764f 100644 --- a/modules/manage/pages/security/listener-configuration.adoc +++ b/modules/manage/pages/security/listener-configuration.adoc @@ -1,6 +1,5 @@ = Configure Listeners :description: Use listeners to advertise the location of the broker, so other brokers in the cluster can be found. -:page-context-links: [{"name": "Linux", "to": "manage:security/listener-configuration.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/networking/k-configure-listeners.adoc" } ] :page-aliases: cluster-administration:listener-configuration.adoc :page-categories: Management, Security diff --git a/modules/manage/pages/tiered-storage.adoc b/modules/manage/pages/tiered-storage.adoc index 0fa18a3e87..938f25a8b7 100644 --- a/modules/manage/pages/tiered-storage.adoc +++ b/modules/manage/pages/tiered-storage.adoc @@ -1,6 +1,5 @@ = Use Tiered Storage :description: Configure your Redpanda cluster to offload log segments to cloud storage and save storage costs. -:page-context-links: [{"name": "Linux", "to": "manage:tiered-storage.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/storage/tiered-storage/k-tiered-storage.adoc" } ] :page-aliases: data-management:shadow-indexing.adoc, data-management:tiered-storage.adoc, data-management:data-archiving.adoc, manage:data-archiving.adoc :page-categories: Management, High Availability, Data Replication :env-linux: true diff --git a/modules/manage/pages/topic-recovery.adoc b/modules/manage/pages/topic-recovery.adoc index ae06a99cf7..188f60aa88 100644 --- a/modules/manage/pages/topic-recovery.adoc +++ b/modules/manage/pages/topic-recovery.adoc @@ -1,6 +1,5 @@ = Topic Recovery :description: Restore a single topic from object storage. -:page-context-links: [{"name": "Linux", "to": "manage:topic-recovery.adoc" } ] :page-categories: Management, High Availability :env-linux: true diff --git a/modules/manage/pages/whole-cluster-restore.adoc b/modules/manage/pages/whole-cluster-restore.adoc index a4caedbd57..531bbdc4f4 100644 --- a/modules/manage/pages/whole-cluster-restore.adoc +++ b/modules/manage/pages/whole-cluster-restore.adoc @@ -1,6 +1,5 @@ = Whole Cluster Restore for Disaster Recovery :description: Restore a failed cluster, including its metadata. -:page-context-links: [{"name": "Linux", "to": "manage:whole-cluster-restore.adoc" },{"name": "Kubernetes", "to": "manage:kubernetes/k-whole-cluster-restore.adoc" } ] :page-categories: Management, High Availability, Disaster Recovery :env-linux: true diff --git a/modules/upgrade/pages/k-rolling-upgrade.adoc b/modules/upgrade/pages/k-rolling-upgrade.adoc index a6c4214868..1328bf85fb 100644 --- a/modules/upgrade/pages/k-rolling-upgrade.adoc +++ b/modules/upgrade/pages/k-rolling-upgrade.adoc @@ -1,6 +1,5 @@ = Upgrade Redpanda in Kubernetes :description: To benefit from Redpanda's new features and enhancements, upgrade to the latest version. -:page-context-links: [{"name": "Linux", "to": "upgrade:rolling-upgrade.adoc" },{"name": "Kubernetes", "to": "upgrade:k-rolling-upgrade.adoc" } ] :page-aliases: manage:kubernetes/rolling-upgrade.adoc :page-categories: Upgrades :env-kubernetes: true diff --git a/modules/upgrade/pages/rolling-upgrade.adoc b/modules/upgrade/pages/rolling-upgrade.adoc index e5c394df0a..ceb111c025 100644 --- a/modules/upgrade/pages/rolling-upgrade.adoc +++ b/modules/upgrade/pages/rolling-upgrade.adoc @@ -1,6 +1,5 @@ = Upgrade Redpanda :description: To benefit from Redpanda's new features and enhancements, upgrade to the latest version. -:page-context-links: [{"name": "Linux", "to": "upgrade:rolling-upgrade.adoc" },{"name": "Kubernetes", "to": "upgrade:k-rolling-upgrade.adoc" } ] :page-aliases: manage:cluster-maintenance/rolling-upgrade.adoc,install-upgrade:rolling-upgrade.adoc,install-upgrade:version-upgrade.adoc,cluster-management:version-upgrade.adoc,cluster-administration:version-upgrade.adoc,reference:version-upgrade.adoc :rolling-upgrade: :page-categories: Upgrades diff --git a/package-lock.json b/package-lock.json index 0aba306713..89e9533b43 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1862,9 +1862,9 @@ } }, "node_modules/@redpanda-data/docs-extensions-and-macros": { - "version": "4.6.5", - "resolved": "https://registry.npmjs.org/@redpanda-data/docs-extensions-and-macros/-/docs-extensions-and-macros-4.6.5.tgz", - "integrity": "sha512-DQH5WCjZ1+oTu5yWlgmeSNyN3Klb5MWw90SXTQUuoIGuN+PBCDt5mTsDXWMUuXVWGw9V/JvC0S/hUSxPKLz0WA==", + "version": "4.6.11", + "resolved": "https://registry.npmjs.org/@redpanda-data/docs-extensions-and-macros/-/docs-extensions-and-macros-4.6.11.tgz", + "integrity": "sha512-JPvZiv6cxp0lZMGph+Q0XONBzFO2h3ZwvHKzCojKgZ+PvLoVTtWDpg1lhLhlPpkdCeEsMXecV+blI+4kxx6HDg==", "license": "ISC", "dependencies": { "@asciidoctor/tabs": "^1.0.0-beta.6", From 9bc58b4a4fdc2ed964aad782a91f7e9dc9145301 Mon Sep 17 00:00:00 2001 From: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> Date: Mon, 28 Jul 2025 16:34:00 +0100 Subject: [PATCH 22/27] Apply suggestions from code review Co-authored-by: Joyce Fee <102751339+Feediver1@users.noreply.github.com> --- .../pages/release-notes/operator.adoc | 18 +++++++++--------- modules/upgrade/pages/k-compatibility.adoc | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/modules/get-started/pages/release-notes/operator.adoc b/modules/get-started/pages/release-notes/operator.adoc index 4faee361e7..a32212ae7f 100644 --- a/modules/get-started/pages/release-notes/operator.adoc +++ b/modules/get-started/pages/release-notes/operator.adoc @@ -19,18 +19,18 @@ link:https://github.com/redpanda-data/redpanda-operator/blob/release/v25.2.x/ope Starting in v25.2, the Redpanda Operator defaults to cluster scope instead of namespace scope. This change provides several benefits: -* **Simplified management**: A single operator instance can manage multiple Redpanda clusters across different namespaces -* **Reduced resource overhead**: No need to deploy separate operator instances for each namespace -* **Centralized upgrades**: Upgrade the operator once to benefit all managed Redpanda clusters -* **Cross-namespace management**: Deploy the operator in a dedicated namespace (such as `redpanda-system`) while managing clusters in application namespaces -* **Simplified RBAC for debug bundles**: The Redpanda Operator now provides all required permissions for `rpk` debug bundle collection by default. The `rbac.createRPKBundleCRs` flag is no longer needed +* **Simplified management**: A single operator instance can manage multiple Redpanda clusters across different namespaces. +* **Reduced resource overhead**: No need to deploy separate operator instances for each namespace. +* **Centralized upgrades**: Upgrade the operator once to benefit all managed Redpanda clusters. +* **Cross-namespace management**: Deploy the operator in a dedicated namespace (such as `redpanda-system`) while managing clusters in application namespaces. +* **Simplified RBAC for debug bundles**: The Redpanda Operator now provides all required permissions for `rpk` debug bundle collection by default. The `rbac.createRPKBundleCRs` flag is no longer needed. ==== Migration considerations If you're upgrading from a previous version that used namespace-scoped operators: -* **No manual steps required**: The Redpanda Operator automatically reconciles existing Redpanda clusters across namespaces -* **New deployments default to cluster scope**: Regardless of which namespace you deploy the Redpanda Operator to (including `default`) +* **No manual steps required**: The Redpanda Operator automatically reconciles existing Redpanda clusters across namespaces. +* **New deployments default to cluster scope**: Regardless of which namespace you deploy the Redpanda Operator to (including `default`). * **Delete extra Redpanda Operator deployments**: After upgrading, ensure only one Redpanda Operator remains in the cluster (the one running in cluster scope). Use `helm uninstall` to remove any other Redpanda Operator deployments from previous namespace-scoped installations. To maintain namespace scope, use the `--set 'additionalCmdFlags=["--namespace="]'` flag when installing or upgrading the Redpanda Operator. The `--namespace` flag in the helm command only specifies which namespace to deploy the Redpanda Operator into and does not affect its operational scope. @@ -41,8 +41,8 @@ WARNING: Do not run multiple Redpanda Operators in different scopes (cluster and Important RBAC considerations for v25.2+: -* **ClusterRole permissions always required**: Regardless of whether you use cluster or namespace scope, the Redpanda Operator always needs ClusterRole permissions -* **Automatic configuration**: These permissions are automatically configured when you install the Redpanda Operator with `rbac.createRPKBundleCRs=true` (default) +* **ClusterRole permissions always required**: Regardless of whether you use cluster or namespace scope, the Redpanda Operator always needs ClusterRole permissions. +* **Automatic configuration**: These permissions are automatically configured when you install the Redpanda Operator. == Redpanda Operator v25.1.x diff --git a/modules/upgrade/pages/k-compatibility.adoc b/modules/upgrade/pages/k-compatibility.adoc index 95e41864c0..38f5e0c066 100644 --- a/modules/upgrade/pages/k-compatibility.adoc +++ b/modules/upgrade/pages/k-compatibility.adoc @@ -17,7 +17,7 @@ Starting from version v25.1.1, the Redpanda Operator and Redpanda Helm chart fol - The patch version denotes the patch version for either the operator or Helm chart. It is not the patch version of Redpanda core. -NOTE: If a version includes `-beta`, it is a pre-release version of the Redpanda Operator and Helm chart. These versions are not intended for production use. Beta versions are available only for testing and feedback. They are not supported by Redpanda and should not be used in production environments. To give feedback on beta releases, reach out to the Redpanda team in https://redpanda.com/slack[Redpanda Community Slack^]. +NOTE: If a version includes `-beta`, it is a pre-release version of the Redpanda Operator and Helm chart. These versions are not supported and should not be used in production environments. Beta versions are available only for testing and feedback. To give feedback on beta releases, reach out to the Redpanda team in https://redpanda.com/slack[Redpanda Community Slack^]. Each Redpanda Operator and Helm chart version supports the corresponding Redpanda core version plus one minor version above and one below. This approach ensures flexibility during upgrades. For example, Redpanda Operator version 25.1.1 supports Redpanda core versions 25.2.x, 25.1.x, and 24.3.x. From 7bde5cb60a291bca662d76141d95e8d0336fd430 Mon Sep 17 00:00:00 2001 From: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> Date: Tue, 29 Jul 2025 10:01:20 +0100 Subject: [PATCH 23/27] Apply suggestions from code review --- modules/get-started/pages/release-notes/operator.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/get-started/pages/release-notes/operator.adoc b/modules/get-started/pages/release-notes/operator.adoc index a32212ae7f..82743f6f37 100644 --- a/modules/get-started/pages/release-notes/operator.adoc +++ b/modules/get-started/pages/release-notes/operator.adoc @@ -9,7 +9,7 @@ See also: * xref:upgrade:k-compatibility.adoc[] * xref:upgrade:k-rolling-upgrade.adoc[] -NOTE: Redpanda Console v3 is **not yet available when deploying with the Redpanda Operator**. The Redpanda Operator continues to deploy Redpanda Console v2. To try Redpanda Console v3 in Kubernetes, you can xref:deploy:deployment-option/self-hosted/kubernetes/k-production-deployment.adoc[deploy Redpanda using the Redpanda Helm chart] instead of the Redpanda Operator. +NOTE: Redpanda Console v3 is **not yet available when deploying with the Redpanda Operator**. The Redpanda Operator continues to deploy Redpanda Console v2. To try Redpanda Console v3, you can deploy the link:https://artifacthub.io/packages/helm/redpanda-data/console[standalone Redpanda Console Helm chart^] or xref:deploy:deployment-option/self-hosted/kubernetes/k-production-deployment.adoc[deploy Redpanda using the Redpanda Helm chart] instead of the Redpanda Operator. == Redpanda Operator v25.2.x From 251fc23d47d0d9828bc7f936e269fb82837613ad Mon Sep 17 00:00:00 2001 From: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> Date: Fri, 1 Aug 2025 14:01:22 +0100 Subject: [PATCH 24/27] Apply suggestions from code review --- local-antora-playbook.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/local-antora-playbook.yml b/local-antora-playbook.yml index f2acd5bb60..e15360d1a9 100644 --- a/local-antora-playbook.yml +++ b/local-antora-playbook.yml @@ -15,7 +15,7 @@ content: - url: . branches: HEAD - url: https://github.com/redpanda-data/docs - branches: [main, v/*, api, shared, site-search,'!v-end-of-life/*'] + branches: [v/*, api, shared, site-search,'!v-end-of-life/*'] - url: https://github.com/redpanda-data/cloud-docs branches: 'main' - url: https://github.com/redpanda-data/redpanda-labs From 5a6b81b2dc403f429170f3d2a5fa013b05254de7 Mon Sep 17 00:00:00 2001 From: JakeSCahill Date: Mon, 8 Sep 2025 11:26:56 -0500 Subject: [PATCH 25/27] Remove beta from nav --- modules/ROOT/nav.adoc | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index 4a0d4568e3..32c7265146 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -66,7 +66,6 @@ ** xref:deploy:redpanda/index.adoc[Redpanda] *** xref:deploy:redpanda/kubernetes/index.adoc[Kubernetes] **** xref:deploy:redpanda/kubernetes/k-deployment-overview.adoc[Overview] -**** xref:deploy:redpanda/kubernetes/k-25.2-beta.adoc[Try v25.2] **** xref:deploy:redpanda/kubernetes/get-started-dev.adoc[Get Started] ***** xref:deploy:redpanda/kubernetes/aks-guide.adoc[Azure AKS] ***** xref:deploy:redpanda/kubernetes/eks-guide.adoc[Amazon EKS] From a009990880dff3b1e40abd5bab0ec89acbecd8a2 Mon Sep 17 00:00:00 2001 From: JakeSCahill Date: Mon, 8 Sep 2025 11:38:23 -0500 Subject: [PATCH 26/27] Remove duplicate warning --- modules/deploy/partials/kubernetes/deploy-operator.adoc | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/deploy/partials/kubernetes/deploy-operator.adoc b/modules/deploy/partials/kubernetes/deploy-operator.adoc index d1402ef6bc..dfb8419915 100644 --- a/modules/deploy/partials/kubernetes/deploy-operator.adoc +++ b/modules/deploy/partials/kubernetes/deploy-operator.adoc @@ -31,8 +31,6 @@ helm upgrade --install redpanda-controller redpanda/operator \ ---- + <1> This flag restricts the Redpanda Operator to manage resources only within the specified namespace. -+ -WARNING: Do not run multiple Redpanda Operators in different scopes (cluster and namespace scope) in the same cluster as this can cause resource conflicts. endif::[] ifndef::latest-operator-version[] [,bash,subs="attributes+"] From a8593cceec48800b701e724ab978cc0a47ff6d07 Mon Sep 17 00:00:00 2001 From: Jake Cahill <45230295+JakeSCahill@users.noreply.github.com> Date: Thu, 23 Oct 2025 17:22:09 +0100 Subject: [PATCH 27/27] Add docs for the Role resource in Kubernetes (#1378) Co-authored-by: Paulo Borges --- modules/ROOT/nav.adoc | 5 +- .../pages/release-notes/operator.adoc | 4 + .../examples/kubernetes/role-crds.feature | 110 +++ .../security/authentication/index.adoc | 6 +- .../authentication/k-user-controller.adoc | 28 +- .../authorization/k-role-controller.adoc | 223 +++++ modules/reference/pages/k-crd.adoc | 885 ++++++++++++++++-- tests/setup-tests/fetch-versions-and-rpk.json | 2 +- 8 files changed, 1200 insertions(+), 63 deletions(-) create mode 100644 modules/manage/examples/kubernetes/role-crds.feature create mode 100644 modules/manage/pages/kubernetes/security/authorization/k-role-controller.adoc diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index 33b3801117..683964011a 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -130,9 +130,10 @@ **** xref:manage:kubernetes/security/tls/index.adoc[TLS Encryption] ***** xref:manage:kubernetes/security/tls/k-cert-manager.adoc[Use cert-manager] ***** xref:manage:kubernetes/security/tls/k-secrets.adoc[Use Secrets] -**** xref:manage:kubernetes/security/authentication/index.adoc[Authentication] +**** xref:manage:kubernetes/security/authentication/index.adoc[Authentication and Authorization] ***** xref:manage:kubernetes/security/authentication/k-authentication.adoc[Enable Authentication] -***** xref:manage:kubernetes/security/authentication/k-user-controller.adoc[Manage Users and ACLs] +***** xref:manage:kubernetes/security/authentication/k-user-controller.adoc[Manage Users and ACLs (Operator)] +***** xref:manage:kubernetes/security/authorization/k-role-controller.adoc[Manage Roles and ACLs (Operator)] **** xref:manage:kubernetes/security/k-audit-logging.adoc[Audit Logging] *** xref:manage:kubernetes/k-rack-awareness.adoc[Rack Awareness] *** xref:manage:kubernetes/k-remote-read-replicas.adoc[Remote Read Replicas] diff --git a/modules/get-started/pages/release-notes/operator.adoc b/modules/get-started/pages/release-notes/operator.adoc index 603031032c..83d5734b1b 100644 --- a/modules/get-started/pages/release-notes/operator.adoc +++ b/modules/get-started/pages/release-notes/operator.adoc @@ -44,6 +44,10 @@ Important RBAC considerations for v25.2+: * **ClusterRole permissions always required**: Regardless of whether you use cluster or namespace scope, the Redpanda Operator always needs ClusterRole permissions. * **Automatic configuration**: These permissions are automatically configured when you install the Redpanda Operator. +=== Declarative RedpandaRole management + +Redpanda Operator v25.2.x now includes a RedpandaRole custom resource. The RedpandaRole resource allows you to declaratively manage Redpanda roles and permissions in Kubernetes, making it easier to control access and automate security policies for your Redpanda clusters. See the xref:manage:kubernetes/security/authorization/k-redpanda-role.adoc[RedpandaRole documentation] for details. + == Redpanda Operator v25.1.x (GA) link:https://github.com/redpanda-data/redpanda-operator/blob/release/v25.1.x/operator/CHANGELOG.md[Changelog^] diff --git a/modules/manage/examples/kubernetes/role-crds.feature b/modules/manage/examples/kubernetes/role-crds.feature new file mode 100644 index 0000000000..5d8d2942bd --- /dev/null +++ b/modules/manage/examples/kubernetes/role-crds.feature @@ -0,0 +1,110 @@ +@cluster:sasl @variant:vectorized +Feature: Role CRDs + Background: Cluster available + Given cluster "sasl" is available + + @skip:gke @skip:aks @skip:eks + Scenario: Manage roles + Given there is no role "admin-role" in cluster "sasl" + And there are the following pre-existing users in cluster "sasl" + | name | password | mechanism | + | alice | password | SCRAM-SHA-256 | + | bob | password | SCRAM-SHA-256 | + When I apply Kubernetes manifest: + """ +# tag::manage-roles-with-principals[] + # In this example manifest, a role called "admin-role" is created in a cluster called "sasl". + # The role includes two principals (alice and bob) who will inherit the role's permissions. + --- + apiVersion: cluster.redpanda.com/v1alpha2 + kind: RedpandaRole + metadata: + name: admin-role + spec: + cluster: + clusterRef: + name: sasl + principals: + - User:alice + - User:bob +# end::manage-roles-with-principals[] + """ + And role "admin-role" is successfully synced + Then role "admin-role" should exist in cluster "sasl" + And role "admin-role" should have members "alice and bob" in cluster "sasl" + + @skip:gke @skip:aks @skip:eks + Scenario: Manage roles with authorization + Given there is no role "read-only-role" in cluster "sasl" + And there are the following pre-existing users in cluster "sasl" + | name | password | mechanism | + | charlie | password | SCRAM-SHA-256 | + When I create topic "public-test" in cluster "sasl" + And I apply Kubernetes manifest: + """ +# tag::manage-roles-with-authorization[] + # In this example manifest, a role called "read-only-role" is created in a cluster called "sasl". + # The role includes authorization rules that allow reading from topics with names starting with "public-". + --- + apiVersion: cluster.redpanda.com/v1alpha2 + kind: RedpandaRole + metadata: + name: read-only-role + spec: + cluster: + clusterRef: + name: sasl + principals: + - User:charlie + authorization: + acls: + - type: allow + resource: + type: topic + name: public- + patternType: prefixed + operations: [Read, Describe] +# end::manage-roles-with-authorization[] + """ + And role "read-only-role" is successfully synced + Then role "read-only-role" should exist in cluster "sasl" + And role "read-only-role" should have ACLs for topic pattern "public-" in cluster "sasl" + And "charlie" should be able to read from topic "public-test" in cluster "sasl" + + @skip:gke @skip:aks @skip:eks + Scenario: Manage authorization-only roles + Given there are the following pre-existing users in cluster "sasl" + | name | password | mechanism | + | travis | password | SCRAM-SHA-256 | + And there is a pre-existing role "travis-role" in cluster "sasl" + When I apply Kubernetes manifest: + """ +# tag::manage-authz-only-roles[] + # In this example manifest, a role CRD called "travis-role" manages ACLs for an existing role. + # The role includes authorization rules that allow reading from topics with names starting with "some-topic". + # This example assumes that you already have a role called "travis-role" in your cluster. + --- + apiVersion: cluster.redpanda.com/v1alpha2 + kind: RedpandaRole + metadata: + name: travis-role + spec: + cluster: + clusterRef: + name: sasl + principals: + - User:travis + authorization: + acls: + - type: allow + resource: + type: topic + name: some-topic + patternType: prefixed + operations: [Read] +# end::manage-authz-only-roles[] + """ + And role "travis-role" is successfully synced + And I delete the CRD role "travis-role" + Then there should still be role "travis-role" in cluster "sasl" + And there should be no ACLs for role "travis-role" in cluster "sasl" \ No newline at end of file diff --git a/modules/manage/pages/kubernetes/security/authentication/index.adoc b/modules/manage/pages/kubernetes/security/authentication/index.adoc index b8ac87f4f1..74badb6dbb 100644 --- a/modules/manage/pages/kubernetes/security/authentication/index.adoc +++ b/modules/manage/pages/kubernetes/security/authentication/index.adoc @@ -1,6 +1,6 @@ -= Authentication for Redpanda in Kubernetes += Authentication and Authorization for Redpanda in Kubernetes :page-layout: index -:description: Learn how to configure authentication for Redpanda in Kubernetes using Helm values or the User resource with the Redpanda Operator. +:description: Learn how to configure authentication and authorization for Redpanda in Kubernetes using Helm values or the User resource with the Redpanda Operator. :page-aliases: security:sasl-kubernetes.adoc, manage:kubernetes/security/sasl-kubernetes.adoc, security:kubernetes-sasl.adoc, manage:kubernetes/security/authentication/sasl-kubernetes.adoc, reference:redpanda-operator/kubernetes-mtls.adoc, reference:redpanda-operator/kubernetes-sasl.adoc -Redpanda offers two methods to manage authentication in a Kubernetes environment. These options allow administrators to control user access and permissions, ensuring secure communication with the Redpanda cluster. \ No newline at end of file +Redpanda offers two methods to manage authentication and authorization in a Kubernetes environment. These options allow administrators to control user access and permissions, ensuring secure communication with the Redpanda cluster. \ No newline at end of file diff --git a/modules/manage/pages/kubernetes/security/authentication/k-user-controller.adoc b/modules/manage/pages/kubernetes/security/authentication/k-user-controller.adoc index 5c46594f18..5063b1420f 100644 --- a/modules/manage/pages/kubernetes/security/authentication/k-user-controller.adoc +++ b/modules/manage/pages/kubernetes/security/authentication/k-user-controller.adoc @@ -5,6 +5,8 @@ With the Redpanda Operator, you can declaratively create and manage Redpanda users and glossterm:ACL[,access control lists (ACLs)] using xref:reference:k-crd.adoc#k8s-api-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-user[User custom resources] (resources) in Kubernetes. Each User resource is mapped to a user in your Redpanda cluster. The user controller, a component of the Redpanda Operator, keeps the corresponding user in sync with the User resource. +For role-based access control where you want to define permissions once and apply them to multiple users, see xref:manage:kubernetes/security/authorization/k-role-controller.adoc[Manage Roles and ACLs]. + == Prerequisites You must have the following: @@ -267,8 +269,32 @@ Deleting a User resource will have different impacts depending on how it is conf - **Authorization-only**: When a User resource that manages only ACLs is deleted, the ACLs are removed, but the user remains in the cluster. - **Full user management (both authentication and authorization)**: When the resource manages both users and ACLs, the user and its associated ACLs are removed. +== Best practices + +When working with User resources, consider the following best practices: + +=== User design + +- *Principle of least privilege*: Grant only the minimum permissions necessary for users to perform their tasks. +- *Descriptive usernames*: Use clear, consistent naming conventions that identify the user's purpose or role. +- *Avoid shared accounts*: Create individual user accounts rather than sharing credentials between multiple people or applications. + +=== Permission management + +- *Consider roles for shared permissions*: When multiple users need the same set of permissions, consider using xref:manage:kubernetes/security/authorization/k-role-controller.adoc[RedpandaRole resources] instead of duplicating ACLs across individual User resources. +- *User-specific permissions*: Use User resource ACLs for permissions that are specific to individual users and don't need to be shared. +- *Avoid conflicts*: If using both Role and User resources, be careful not to create conflicting ACLs for the same users. + +=== Secret management + +- *Use Kubernetes Secrets*: Store passwords in Kubernetes Secrets rather than hardcoding them in manifests. +- *Regular rotation*: Implement a regular password rotation strategy for production environments. + == Suggested reading * xref:reference:k-crd.adoc#k8s-api-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-user[User resource] * xref:reference:k-crd.adoc#k8s-api-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-userlist[UserList resource] -* xref:manage:kubernetes/security/authentication/k-authentication.adoc[] \ No newline at end of file +* xref:manage:kubernetes/security/authorization/k-role-controller.adoc[Manage Roles and ACLs] +* xref:manage:kubernetes/security/authentication/k-authentication.adoc[] +* xref:manage:security/authorization/rbac.adoc[Role-Based Access Control (RBAC)] +* xref:manage:security/authorization/acl.adoc[Access Control Lists (ACLs)] \ No newline at end of file diff --git a/modules/manage/pages/kubernetes/security/authorization/k-role-controller.adoc b/modules/manage/pages/kubernetes/security/authorization/k-role-controller.adoc new file mode 100644 index 0000000000..89ce6e0c08 --- /dev/null +++ b/modules/manage/pages/kubernetes/security/authorization/k-role-controller.adoc @@ -0,0 +1,223 @@ += Manage Roles with the Redpanda Operator +:description: Use the RedpandaRole resource to declaratively create and manage roles as part of a Redpanda deployment. Each RedpandaRole resource defines a set of permissions that can be assigned to multiple users, providing role-based access control (RBAC) for your Redpanda cluster. +:page-categories: Management, Security +:env-kubernetes: true + +With the Redpanda Operator, you can declaratively create and manage Redpanda roles using xref:reference:k-crd.adoc#k8s-api-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-role[RedpandaRole custom resources] (resources) in Kubernetes. Each RedpandaRole resource defines a set of permissions that can be assigned to multiple users, providing role-based access control (RBAC) for your Redpanda cluster. The role controller, a component of the Redpanda Operator, keeps the corresponding Redpanda role in sync with the RedpandaRole resource. + +NOTE: RedpandaRole resources do not create users. Users must already exist in the Redpanda cluster before they can be assigned to roles, unless they are OIDC principals. OIDC principals do not need to be created as users in the cluster. Use xref:manage:kubernetes/security/authentication/k-user-controller.adoc[User resources] to create and manage Redpanda users. + +== What are roles and why use them? + +Think of roles like job titles in a company. Instead of giving each employee individual permissions for every door, system, and resource, you create job titles (roles) like "Developer," "Manager," or "Security Guard." Each job title comes with a specific set of permissions, and you assign employees to those job titles. + +In Redpanda, roles work the same way: + +* **Without roles**: You set up permissions individually for each user. If you have 10 developers who all need the same access to certain topics, you configure the same permissions 10 times. + +* **With roles**: You create a "Developer" role once with all the necessary permissions, then assign all 10 developers to that role. When you need to change what developers can access, you update the role once instead of updating 10 individual users. + +== Prerequisites + +You must have the following: + +* *Kubectl*: Ensure you have the https://kubernetes.io/docs/tasks/tools/#kubectl[kubectl^] command-line tool installed and configured to communicate with your cluster. +* *Redpanda Operator*: Ensure you have at least version 25.2 of the xref:deploy:deployment-option/self-hosted/kubernetes/k-production-deployment.adoc[Redpanda Operator]. +* *Redpanda cluster with SASL enabled*: Ensure you have a Redpanda resource deployed with xref:manage:kubernetes/security/authentication/k-authentication.adoc#enable[SASL authentication enabled]. +* *Existing users*: If you plan to assign users to roles, ensure the users already exist in your Redpanda cluster. You can create users using xref:manage:kubernetes/security/authentication/k-user-controller.adoc[User resources]. + +== Create a role + +You can use the RedpandaRole resource to: + +- <> +- <> +- <> + +Each Role instance is responsible for managing both the role membership (principals) and the role's ACLs within the Redpanda cluster. You cannot use one RedpandaRole resource to manage the principals and another resource to manage the ACLs. Only one Role instance is allowed per role in the Redpanda cluster. + +[[with-authorization]] +=== Create a role with authorization rules + +- *Use case*: You want to create a role that defines permissions and assign users to inherit those permissions. This is the most common use case for role-based access control, where you define permissions once and apply them to multiple users. +- *What happens when deleted*: Both the role and its associated ACLs are removed. Users assigned to the role lose the permissions granted by this role but retain any other permissions they have. + +This example shows how to create a role with both principals and authorization rules. + +.`read-only-role.yaml` +[,yaml,indent=0] +---- +include::manage:example$kubernetes/role-crds.feature[tags=manage-roles-with-authorization,indent=0] +---- + +[[with-principals]] +=== Create a role with principals + +- *Use case*: You want to create a role and assign users (principals) to it. This is useful for grouping users together without necessarily defining permissions at the role level, allowing you to manage group membership centrally. +- *What happens when deleted*: The role is deleted, but users assigned to the role remain in the cluster. Any ACLs defined at the user level are unaffected. + +This example shows how to create a role and assign principals to it. + +.`admin-role.yaml` +[,yaml,indent=0] +---- +include::manage:example$kubernetes/role-crds.feature[tags=manage-roles-with-principals,indent=0] +---- + +[[authorization-only]] +=== Create authorization rules for an existing role + +- *Use case*: You want to manage ACLs for an existing role in the Redpanda cluster, but not modify the role's membership. Use this option if role membership is managed by another process or tool, and you only want to control what resources the role can access. +- *What happens when deleted*: The ACLs are removed, but the role and its members remain. This is useful when you want to revoke permissions but retain the role structure for future use. + +This example shows how to manage only the ACLs for an existing role in the Redpanda cluster. + +.`authorization-only-role.yaml` +[,yaml,indent=0] +---- +include::manage:example$kubernetes/role-crds.feature[tags=manage-authz-only-roles,indent=0] +---- + +== Configuration + +The following sections provide guidance on setting up role membership, managing authorization rules, and defining ACLs within your Kubernetes environment. These recommendations ensure proper role management while minimizing manual interventions and preventing potential security issues. + +You can find all configuration options for the RedpandaRedpandaRole resource in the xref:reference:k-crd.adoc#k8s-api-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-role[CRD reference]. + +=== Choose a role name + +The `metadata.name` field in the RedpandaRedpandaRole resource is used to specify the role name. Keep in mind the following best practices when choosing a role name: + +- *Unique*: Ensure each role has a unique name to avoid conflicts. The role name must be unique within the Redpanda cluster. +- *Descriptive*: Choose a name that identifies the purpose or permissions of the role. For example, use names like `data-readers` or `topic-admins`. +- *Stable*: Avoid changing role names frequently. Role names are tied to authorization rules (ACLs) and user assignments. Renaming a role involves deleting and recreating the role. + +[,yaml] +---- +metadata: + name: read-only-role +---- + +In this example, `read-only-role` is the role name, which will be referenced in authorization rules and user assignments. + +=== Configure principals + +The xref:reference:k-crd.adoc#k8s-api-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-rolespec[`spec.principals`] field allows you to specify which users are assigned to the role. Principals are specified in the format `User:`. + +IMPORTANT: Users must already exist in the Redpanda cluster before they can be assigned to a role. The RedpandaRole resource does not create users that don't exist. + +[source,yaml] +---- +spec: + principals: + - User:alice + - User:bob +---- + +When users are assigned to a role, they inherit all the permissions defined in the role's ACLs. If a role has no ACLs defined, the users gain no additional permissions from the role membership. + +=== Define authorization rules + +The xref:reference:k-crd.adoc#k8s-api-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-roleauthorizationspec[`spec.authorization`] field allows you to manage ACLs for the role. ACLs define the permissions that all members of the role have over specific resources in Redpanda, such as topics, consumer groups, and clusters. + +You can define ACLs for a role by specifying which resources members can access and the operations they are permitted to perform. Here's an example configuration for managing ACLs: + +[source,yaml] +---- +spec: + authorization: + acls: + - type: allow + resource: + type: topic + name: public- + patternType: prefixed + operations: [Read, Describe] +---- + +- `type`: Defines whether the ACL allows or denies access. Acceptable values: `allow`, `deny`. +- `resource.type`: Specifies the resource type. Acceptable values: `topic`, `group`, `cluster`, `transactionalId`. +- `patternType`: Specifies how the resource name is interpreted. Acceptable values: `literal`, `prefixed`. Default: `literal`. ++ +TIP: Using `literal` names for resources ensures that only the exact resources you intend are accessible. Use `prefixed` patterns cautiously to avoid accidental permission grants. +- `operations`: Lists the allowed operations, such as `Read`, `Write`, `Create`, and `Delete`. + +You can find all configuration options for authorization in the xref:reference:k-crd.adoc#k8s-api-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-roleauthorizationspec[RoleAuthorizationSpec] of the CRD reference. + +For more details about ACLs, including supported operations and resources in Redpanda, see xref:manage:security/authorization/acl.adoc[]. + +== Deploy a RedpandaRole resource + +To deploy a RedpandaRole resource, apply the manifest to the same namespace as your Redpanda cluster: + +[,bash] +---- +kubectl apply -f .yaml --namespace +---- + +- Replace `` with the filename of your manifest. +- Replace `` with the namespace in which you deployed Redpanda. + +== Verify a role + +After deploying a RedpandaRole resource, verify that the Redpanda Operator reconciled it: + +[,bash] +---- +kubectl logs -l app.kubernetes.io/name=operator -c manager --namespace +---- + +== Update a role + +To update a role, edit the RedpandaRole resource configuration and apply the changes. + +[,bash] +---- +kubectl apply -f .yaml --namespace +---- + +== Delete a role + +To delete a role, delete the RedpandaRole resource: + +[,bash] +---- +kubectl delete -f .yaml --namespace +---- + +When a RedpandaRole resource is deleted, its underlying data is removed as well. If the role has ACLs, those ACLs are also removed. + +Deleting a RedpandaRole resource has different impacts depending on how it is configured: + +- **Principals-only**: When a RedpandaRole resource that manages only principals is deleted, the role is removed from the cluster. However, any ACLs not managed by the same resource will remain in place. +- **Authorization-only**: When a RedpandaRole resource that manages only ACLs is deleted, the ACLs are removed, but the role and its members remain in the cluster. +- **Full role management (both principals and authorization)**: When the resource manages both membership and ACLs, the role and its associated ACLs are removed. + +== Best practices + +When working with RedpandaRole resources, consider the following best practices: + +=== Role design + +- *Principle of least privilege*: Grant only the minimum permissions necessary for users to perform their tasks. +- *Logical grouping*: Create roles that align with job functions or responsibilities rather than individual users. +- *Naming conventions*: Use consistent, descriptive names that indicate the role's purpose, such as `topic-readers` or `admin-users`. + +=== Permission management + +- *Prefer role-based over user-based ACLs*: When possible, assign permissions to roles rather than individual users to simplify management. +- *Use specific resource patterns*: Prefer `literal` patterns over `prefixed` patterns unless you specifically need pattern matching. +- *Regular reviews*: Periodically review role permissions to ensure they remain appropriate and necessary. + +=== Integration with User resources + +- *Consistent management*: If you're using both Role and User resources, establish clear guidelines about which permissions are managed at the role level versus the user level. +- *Avoid conflicts*: Be careful not to create conflicting ACLs between Role and User resources for the same users. + +== Suggested reading + +* xref:reference:k-crd.adoc#k8s-api-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-role[RedpandaRole resource] +* xref:reference:k-crd.adoc#k8s-api-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-rolelist[RoleList resource] +* xref:manage:kubernetes/security/authentication/k-user-controller.adoc[Manage Users and ACLs] +* xref:manage:security/authorization/rbac.adoc[Role-Based Access Control (RBAC)] +* xref:manage:security/authorization/acl.adoc[Access Control Lists (ACLs)] diff --git a/modules/reference/pages/k-crd.adoc b/modules/reference/pages/k-crd.adoc index 73cfd173cc..9e576efde3 100644 --- a/modules/reference/pages/k-crd.adoc +++ b/modules/reference/pages/k-crd.adoc @@ -4,27 +4,61 @@ :description: Custom resource definitions for Redpanda resources. Use the Redpanda resources to create and manage Redpanda clusters, users and topics with the Redpanda Operator. :page-aliases: reference:k-topic-crd.adoc - -Package v1alpha2 defines the v1alpha2 schema for the Redpanda API. It is part of an evolving API architecture, representing an initial stage that may be subject to change based on user feedback and further development. - .Resource Types +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-console[$$Console$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpanda[$$Redpanda$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandarole[$$RedpandaRole$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-schema[$$Schema$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-topic[$$Topic$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-user[$$User$$] +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclaccessfilter"] +== ACLAccessFilter + +Filter an ACL based on its access type, operation, principal, and host. + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclfilter[$$ACLFilter$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`host`* __string__ | The host to match. If not set, will default to match all hosts + +with the specified `operation` and `permissionType`. Note that + +the asterisk `*` is literal and matches hosts that are set to `*` + +| *`operation`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-acloperation[$$ACLOperation$$]__ | The ACL operation to match + +| *`permissionType`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-acltype[$$ACLType$$]__ | The permission type + +| *`principal`* __string__ | The name of the principal, if not set will default to match + +all principals with the specified `operation` and `permissionType` + +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-acloperation"] == ACLOperation (string) ACLOperation specifies the type of operation for an ACL. +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclaccessfilter[$$ACLAccessFilter$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclrule[$$ACLRule$$] + + +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclresourcefilter"] +== ACLResourceFilter .Appears in: -- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclrule[$$ACLRule$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclfilter[$$ACLFilter$$] +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`name`* __string__ | +| *`patternType`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-patterntype[$$PatternType$$]__ | +| *`resourceType`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-resourcetype[$$ResourceType$$]__ | +|=== [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclresourcespec"] @@ -68,6 +102,7 @@ Validations taken from https://cwiki.apache.org/confluence/pages/viewpage.action .Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-roleauthorizationspec[$$RoleAuthorizationSpec$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-userauthorizationspec[$$UserAuthorizationSpec$$] [cols="25a,75a", options="header"] @@ -101,6 +136,7 @@ ACLType specifies the type, either allow or deny of an ACL rule. .Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclaccessfilter[$$ACLAccessFilter$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclrule[$$ACLRule$$] @@ -118,10 +154,19 @@ Admin configures settings for the Admin API listeners. [cols="25a,75a", options="header"] |=== | Field | Description -| *`external`* __object (keys:string, values:xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-externallistener[$$ExternalListener$$])__ | Defines settings for the external listener. + -| *`port`* __integer__ | Specifies the container port number for the internal listener. + -| *`tls`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-listenertls[$$ListenerTLS$$]__ | Configures TLS settings for the internal listener. + +| *`enabled`* __boolean__ | Specifies whether this Listener is enabled. + +| *`authenticationMethod`* __string__ | Specifies the authentication method for this listener. For example, 'mtls_identity', `sasl` or `http_basic`. + | *`appProtocol`* __string__ | +| *`port`* __integer__ | Specifies the container port number for this listener. + +| *`tls`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-listenertls[$$ListenerTLS$$]__ | Configures TLS settings for the internal listener. + +| *`prefixTemplate`* __string__ | Specifies the template used for generating the advertised addresses of + +Services. This field accepts a string template that dynamically + +constructs Service addresses based on various parameters such as Service + +name and port number. + +For historical backwards compatibility, this field is present on both + +internal and external listeners. However, it is ignored when specified + +on internal listeners. + +| *`external`* __object (keys:string, values:xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-externallistener[$$ExternalListener$$])__ | Defines settings for the external listeners. + |=== @@ -210,6 +255,24 @@ Auth configures authentication in the Helm values. See https://docs.redpanda.com |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-authenticationsecrets"] +== AuthenticationSecrets + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-secretconfig[$$SecretConfig$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`jwtSigningKey`* __string__ | +| *`oidc`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-oidcloginsecrets[$$OIDCLoginSecrets$$]__ | +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-authorizationtype"] == AuthorizationType (string) @@ -224,6 +287,28 @@ AuthorizationType specifies the type of authorization to use in creating a user. +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-autoscaling"] +== AutoScaling + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolespec[$$ConsoleSpec$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolevalues[$$ConsoleValues$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`enabled`* __boolean__ | +| *`minReplicas`* __integer__ | +| *`maxReplicas`* __integer__ | +| *`targetCPUUtilizationPercentage`* __integer__ | +| *`targetMemoryUtilizationPercentage`* __integer__ | +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-bootstrapuser"] == BootstrapUser @@ -370,6 +455,10 @@ ClusterRef represents a reference to a cluster that is being targeted. [cols="25a,75a", options="header"] |=== | Field | Description +| *`group`* __string__ | Group is used to override the object group that this reference points to. + +If unspecified, defaults to "cluster.redpanda.com". + +| *`kind`* __string__ | Kind is used to override the object kind that this reference points to. + +If unspecified, defaults to "Redpanda". + | *`name`* __string__ | Name specifies the name of the cluster being referenced. + |=== @@ -384,6 +473,8 @@ ClusterSource defines how to connect to a particular Redpanda cluster. .Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolespec[$$ConsoleSpec$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-rolespec[$$RoleSpec$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-schemaspec[$$SchemaSpec$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-topicspec[$$TopicSpec$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-userspec[$$UserSpec$$] @@ -492,8 +583,11 @@ ConfigWatcher configures a sidecar that watches for changes to the Secret in `au | Field | Description | *`enabled`* __boolean__ | Specifies whether the sidecar is enabled. + | *`extraVolumeMounts`* __string__ | Specifies additional volumes to mount to the sidecar. + +DEPRECATED: Use sideCars.extraVolumeMounts + | *`resources`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core[$$ResourceRequirements$$]__ | Specifies resource requests for the sidecar container. + +DEPRECATED: Use sideCars.resources + | *`securityContext`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#securitycontext-v1-core[$$SecurityContext$$]__ | Specifies the container's security context, including privileges and access levels of the container and its processes. + +DEPRECATED: Use sideCars.securityContext + |=== @@ -595,6 +689,36 @@ never used. Prefer Create. + |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-console"] +== Console + +Redpanda defines the CRD for Redpanda clusters. + + + + + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`apiVersion`* __string__ | `cluster.redpanda.com/v1alpha2` +| *`kind`* __string__ | `Console` +| *`kind`* __string__ | Kind is a string value representing the REST resource this object represents. + +Servers may infer this from the endpoint the client submits requests to. + +Cannot be updated. + +In CamelCase. + +More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + +| *`apiVersion`* __string__ | APIVersion defines the versioned schema of this representation of an object. + +Servers should convert recognized schemas to the latest internal value, and + +may reject unrecognized values. + +More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + +| *`metadata`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#objectmeta-v1-meta[$$ObjectMeta$$]__ | Refer to the Kubernetes API documentation for fields of `metadata`. + +| *`spec`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolespec[$$ConsoleSpec$$]__ | +| *`status`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolestatus[$$ConsoleStatus$$]__ | +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolecreateobj"] == ConsoleCreateObj @@ -612,6 +736,134 @@ ConsoleCreateObj represents configuration options for creating Kubernetes object |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolespec"] +== ConsoleSpec + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-console[$$Console$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`replicaCount`* __integer__ | +| *`image`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-image[$$Image$$]__ | +| *`imagePullSecrets`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#localobjectreference-v1-core[$$LocalObjectReference$$] array__ | +| *`automountServiceAccountToken`* __boolean__ | +| *`serviceAccount`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-serviceaccountconfig[$$ServiceAccountConfig$$]__ | +| *`commonLabels`* __object (keys:string, values:string)__ | +| *`annotations`* __object (keys:string, values:string)__ | +| *`podAnnotations`* __object (keys:string, values:string)__ | +| *`podLabels`* __object (keys:string, values:string)__ | +| *`podSecurityContext`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podsecuritycontext-v1-core[$$PodSecurityContext$$]__ | +| *`securityContext`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#securitycontext-v1-core[$$SecurityContext$$]__ | +| *`service`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-serviceconfig[$$ServiceConfig$$]__ | +| *`ingress`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-ingressconfig[$$IngressConfig$$]__ | +| *`resources`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core[$$ResourceRequirements$$]__ | +| *`autoscaling`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-autoscaling[$$AutoScaling$$]__ | +| *`nodeSelector`* __object (keys:string, values:string)__ | +| *`tolerations`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#toleration-v1-core[$$Toleration$$] array__ | +| *`affinity`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#affinity-v1-core[$$Affinity$$]__ | +| *`topologySpreadConstraints`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#topologyspreadconstraint-v1-core[$$TopologySpreadConstraint$$] array__ | +| *`priorityClassName`* __string__ | +| *`config`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#rawextension-runtime-pkg[$$RawExtension$$]__ | +| *`extraEnv`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core[$$EnvVar$$] array__ | +| *`extraEnvFrom`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envfromsource-v1-core[$$EnvFromSource$$] array__ | +| *`extraVolumes`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#volume-v1-core[$$Volume$$] array__ | +| *`extraVolumeMounts`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#volumemount-v1-core[$$VolumeMount$$] array__ | +| *`extraContainers`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#container-v1-core[$$Container$$] array__ | +| *`extraContainerPorts`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#containerport-v1-core[$$ContainerPort$$] array__ | +| *`secretMounts`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-secretmount[$$SecretMount$$] array__ | +| *`secret`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-secretconfig[$$SecretConfig$$]__ | +| *`licenseSecretRef`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#secretkeyselector-v1-core[$$SecretKeySelector$$]__ | +| *`livenessProbe`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#probe-v1-core[$$Probe$$]__ | +| *`readinessProbe`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#probe-v1-core[$$Probe$$]__ | +| *`deployment`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-deploymentconfig[$$DeploymentConfig$$]__ | +| *`strategy`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#deploymentstrategy-v1-apps[$$DeploymentStrategy$$]__ | +| *`cluster`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-clustersource[$$ClusterSource$$]__ | +|=== + + +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolestatus"] +== ConsoleStatus + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-console[$$Console$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`observedGeneration`* __integer__ | The generation observed by the Console controller. + +| *`replicas`* __integer__ | Total number of non-terminating Pods targeted by this Console's Deployment. + +| *`updatedReplicas`* __integer__ | Total number of non-terminating pods targeted by this Console's Deployment that have the desired template spec. + +| *`readyReplicas`* __integer__ | Total number of non-terminating pods targeted by this Console's Deployment with a Ready Condition. + +| *`availableReplicas`* __integer__ | Total number of available non-terminating pods (ready for at least minReadySeconds) targeted by this Console's Deployment. + +| *`unavailableReplicas`* __integer__ | Total number of unavailable pods targeted by this deployment. This is the total number of + +pods that are still required for the deployment to have 100% available capacity. They may + +either be pods that are running but not yet available or pods that still have not been created. + +|=== + + +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolevalues"] +== ConsoleValues + +ConsoleValues is a CRD friendly equivalent of [console.PartialValues]. Any +member that is optional at the top level, either by being a pointer, map, or +slice, is NOT further partial-ized. This allows us to enforce validation +constraints without accidentally polluting the defaults of the chart. + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolespec[$$ConsoleSpec$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`replicaCount`* __integer__ | +| *`image`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-image[$$Image$$]__ | +| *`imagePullSecrets`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#localobjectreference-v1-core[$$LocalObjectReference$$] array__ | +| *`automountServiceAccountToken`* __boolean__ | +| *`serviceAccount`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-serviceaccountconfig[$$ServiceAccountConfig$$]__ | +| *`commonLabels`* __object (keys:string, values:string)__ | +| *`annotations`* __object (keys:string, values:string)__ | +| *`podAnnotations`* __object (keys:string, values:string)__ | +| *`podLabels`* __object (keys:string, values:string)__ | +| *`podSecurityContext`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#podsecuritycontext-v1-core[$$PodSecurityContext$$]__ | +| *`securityContext`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#securitycontext-v1-core[$$SecurityContext$$]__ | +| *`service`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-serviceconfig[$$ServiceConfig$$]__ | +| *`ingress`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-ingressconfig[$$IngressConfig$$]__ | +| *`resources`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core[$$ResourceRequirements$$]__ | +| *`autoscaling`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-autoscaling[$$AutoScaling$$]__ | +| *`nodeSelector`* __object (keys:string, values:string)__ | +| *`tolerations`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#toleration-v1-core[$$Toleration$$] array__ | +| *`affinity`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#affinity-v1-core[$$Affinity$$]__ | +| *`topologySpreadConstraints`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#topologyspreadconstraint-v1-core[$$TopologySpreadConstraint$$] array__ | +| *`priorityClassName`* __string__ | +| *`config`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#rawextension-runtime-pkg[$$RawExtension$$]__ | +| *`extraEnv`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envvar-v1-core[$$EnvVar$$] array__ | +| *`extraEnvFrom`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#envfromsource-v1-core[$$EnvFromSource$$] array__ | +| *`extraVolumes`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#volume-v1-core[$$Volume$$] array__ | +| *`extraVolumeMounts`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#volumemount-v1-core[$$VolumeMount$$] array__ | +| *`extraContainers`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#container-v1-core[$$Container$$] array__ | +| *`extraContainerPorts`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#containerport-v1-core[$$ContainerPort$$] array__ | +| *`secretMounts`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-secretmount[$$SecretMount$$] array__ | +| *`secret`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-secretconfig[$$SecretConfig$$]__ | +| *`licenseSecretRef`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#secretkeyselector-v1-core[$$SecretKeySelector$$]__ | +| *`livenessProbe`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#probe-v1-core[$$Probe$$]__ | +| *`readinessProbe`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#probe-v1-core[$$Probe$$]__ | +| *`deployment`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-deploymentconfig[$$DeploymentConfig$$]__ | +| *`strategy`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#deploymentstrategy-v1-apps[$$DeploymentStrategy$$]__ | +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-containerresources"] == ContainerResources @@ -648,6 +900,25 @@ CredentialSecretRef can be used to set cloud_storage_secret_key from referenced |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-deploymentconfig"] +== DeploymentConfig + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolespec[$$ConsoleSpec$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolevalues[$$ConsoleValues$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`command`* __string array__ | +| *`extraArgs`* __string array__ | +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-enablable"] == Enablable @@ -760,12 +1031,19 @@ ExternalListener configures settings for the external listeners. [cols="25a,75a", options="header"] |=== | Field | Description -| *`enabled`* __boolean__ | -| *`authenticationMethod`* __string__ | Specifies the authentication method for the external listener. For example, 'mtls_identity' or `sasl`. + -| *`port`* __integer__ | Specifies the container port number for the external listener. + -| *`tls`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-listenertls[$$ListenerTLS$$]__ | Configures TLS settings for the external listener. + +| *`enabled`* __boolean__ | Specifies whether this Listener is enabled. + +| *`authenticationMethod`* __string__ | Specifies the authentication method for this listener. For example, 'mtls_identity', `sasl` or `http_basic`. + +| *`appProtocol`* __string__ | +| *`port`* __integer__ | Specifies the container port number for this listener. + +| *`tls`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-listenertls[$$ListenerTLS$$]__ | Configures TLS settings for the internal listener. + +| *`prefixTemplate`* __string__ | Specifies the template used for generating the advertised addresses of + +Services. This field accepts a string template that dynamically + +constructs Service addresses based on various parameters such as Service + +name and port number. + +For historical backwards compatibility, this field is present on both + +internal and external listeners. However, it is ignored when specified + +on internal listeners. + | *`advertisedPorts`* __integer array__ | Specifies the network port that the external Service listens on. + -| *`prefixTemplate`* __string__ | Specifies the template used for generating the advertised addresses of Services. This field accepts a string template that dynamically constructs Service addresses based on various parameters such as Service name and port number. + | *`nodePort`* __integer__ | |=== @@ -787,6 +1065,18 @@ ExternalService allows you to enable or disable the creation of an external Serv |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-filtertype"] +== FilterType (string) + +FilterType specifies the type, either include or exclude of a consumer group filter. + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-namefilter[$$NameFilter$$] + + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-fsvalidator"] == FsValidator @@ -820,13 +1110,100 @@ HTTP configures settings for the HTTP Proxy listeners. [cols="25a,75a", options="header"] |=== | Field | Description -| *`authenticationMethod`* __string__ | Specifies the authentication method for the external listener. For example, 'mtls_identity' or `sasl`. + -| *`enabled`* __boolean__ | Specifies whether the HTTP Proxy is enabled. + -| *`external`* __object (keys:string, values:xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-externallistener[$$ExternalListener$$])__ | Defines settings for the external listener. + -| *`kafkaEndpoint`* __string__ | Configures the listener to use for HTTP connections. For example `default` for the internal listener. + -| *`port`* __integer__ | Specifies the container port number for the internal listener. + +| *`enabled`* __boolean__ | Specifies whether this Listener is enabled. + +| *`authenticationMethod`* __string__ | Specifies the authentication method for this listener. For example, 'mtls_identity', `sasl` or `http_basic`. + +| *`appProtocol`* __string__ | +| *`port`* __integer__ | Specifies the container port number for this listener. + | *`tls`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-listenertls[$$ListenerTLS$$]__ | Configures TLS settings for the internal listener. + -| *`prefixTemplate`* __string__ | Specifies the template used for generating the advertised addresses of Services. This field accepts a string template that dynamically constructs Service addresses based on various parameters such as Service name and port number. + +| *`prefixTemplate`* __string__ | Specifies the template used for generating the advertised addresses of + +Services. This field accepts a string template that dynamically + +constructs Service addresses based on various parameters such as Service + +name and port number. + +For historical backwards compatibility, this field is present on both + +internal and external listeners. However, it is ignored when specified + +on internal listeners. + +| *`external`* __object (keys:string, values:xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-externallistener[$$ExternalListener$$])__ | Defines settings for the external listeners. + +| *`kafkaEndpoint`* __string__ | Configures the listener to use for HTTP connections. For example `default` for the internal listener. + +deprecated and not respected. + +|=== + + +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-image"] +== Image + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolespec[$$ConsoleSpec$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolevalues[$$ConsoleValues$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`registry`* __string__ | +| *`repository`* __string__ | +| *`pullPolicy`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#pullpolicy-v1-core[$$PullPolicy$$]__ | +| *`tag`* __string__ | +|=== + + +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-ingressconfig"] +== IngressConfig + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolespec[$$ConsoleSpec$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolevalues[$$ConsoleValues$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`enabled`* __boolean__ | +| *`className`* __string__ | +| *`annotations`* __object (keys:string, values:string)__ | +| *`hosts`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-ingresshost[$$IngressHost$$] array__ | +| *`tls`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#ingresstls-v1-networking[$$IngressTLS$$] array__ | +|=== + + +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-ingresshost"] +== IngressHost + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-ingressconfig[$$IngressConfig$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`host`* __string__ | +| *`paths`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-ingresspath[$$IngressPath$$] array__ | +|=== + + +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-ingresspath"] +== IngressPath + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-ingresshost[$$IngressHost$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`path`* __string__ | +| *`pathType`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#pathtype-v1-networking[$$PathType$$]__ | |=== @@ -902,11 +1279,19 @@ Kafka configures settings for the Kafka API listeners. [cols="25a,75a", options="header"] |=== | Field | Description -| *`authenticationMethod`* __string__ | Specifies the authentication method for the external listener. For example, 'mtls_identity' or `sasl`. + -| *`external`* __object (keys:string, values:xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-externallistener[$$ExternalListener$$])__ | Defines settings for the external listener. + -| *`port`* __integer__ | Specifies the container port number for the internal listener. + +| *`enabled`* __boolean__ | Specifies whether this Listener is enabled. + +| *`authenticationMethod`* __string__ | Specifies the authentication method for this listener. For example, 'mtls_identity', `sasl` or `http_basic`. + +| *`appProtocol`* __string__ | +| *`port`* __integer__ | Specifies the container port number for this listener. + | *`tls`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-listenertls[$$ListenerTLS$$]__ | Configures TLS settings for the internal listener. + -| *`prefixTemplate`* __string__ | Specifies the template used for generating the advertised addresses of Services. This field accepts a string template that dynamically constructs Service addresses based on various parameters such as Service name and port number. + +| *`prefixTemplate`* __string__ | Specifies the template used for generating the advertised addresses of + +Services. This field accepts a string template that dynamically + +constructs Service addresses based on various parameters such as Service + +name and port number. + +For historical backwards compatibility, this field is present on both + +internal and external listeners. However, it is ignored when specified + +on internal listeners. + +| *`external`* __object (keys:string, values:xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-externallistener[$$ExternalListener$$])__ | Defines settings for the external listeners. + |=== @@ -1027,6 +1412,28 @@ KafkaSASLOAuthBearer is the config struct for the SASL OAuthBearer mechanism |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-kafkasecrets"] +== KafkaSecrets + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-secretconfig[$$SecretConfig$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`saslPassword`* __string__ | +| *`awsMskIamSecretKey`* __string__ | +| *`tlsCa`* __string__ | +| *`tlsCert`* __string__ | +| *`tlsKey`* __string__ | +| *`tlsPassphrase`* __string__ | +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-licensesecretref"] == LicenseSecretRef @@ -1045,6 +1452,38 @@ LicenseSecretRef is deprecated. Use `EnterpriseLicenseSecretRef` instead. |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-listener"] +== Listener + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-admin[$$Admin$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-externallistener[$$ExternalListener$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-http[$$HTTP$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-kafka[$$Kafka$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-schemaregistry[$$SchemaRegistry$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`enabled`* __boolean__ | Specifies whether this Listener is enabled. + +| *`authenticationMethod`* __string__ | Specifies the authentication method for this listener. For example, 'mtls_identity', `sasl` or `http_basic`. + +| *`appProtocol`* __string__ | +| *`port`* __integer__ | Specifies the container port number for this listener. + +| *`tls`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-listenertls[$$ListenerTLS$$]__ | Configures TLS settings for the internal listener. + +| *`prefixTemplate`* __string__ | Specifies the template used for generating the advertised addresses of + +Services. This field accepts a string template that dynamically + +constructs Service addresses based on various parameters such as Service + +name and port number. + +For historical backwards compatibility, this field is present on both + +internal and external listeners. However, it is ignored when specified + +on internal listeners. + +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-listenertls"] == ListenerTLS @@ -1057,6 +1496,7 @@ ListenerTLS configures TLS configuration for each listener in the Helm values. - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-externallistener[$$ExternalListener$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-http[$$HTTP$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-kafka[$$Kafka$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-listener[$$Listener$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-rpc[$$RPC$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-schemaregistry[$$SchemaRegistry$$] @@ -1195,38 +1635,22 @@ Monitoring configures monitoring resources for Redpanda. See https://docs.redpan |=== -[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-nodepoolstatus"] -== NodePoolStatus -NodePoolStatus defines the observed state of any node pools tied to this cluster + +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-oidcloginsecrets"] +== OIDCLoginSecrets + + .Appears in: -- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandastatus[$$RedpandaStatus$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-authenticationsecrets[$$AuthenticationSecrets$$] [cols="25a,75a", options="header"] |=== | Field | Description -| *`name`* __string__ | Name is the name of the pool + -| *`replicas`* __integer__ | Replicas is the number of actual replicas currently across + -the node pool. This differs from DesiredReplicas during + -a scaling operation, but should be the same once the cluster + -has quiesced. + -| *`desiredReplicas`* __integer__ | DesiredReplicas is the number of replicas that ought to be + -run for the cluster. It combines the desired replicas across + -all node pools. + -| *`outOfDateReplicas`* __integer__ | OutOfDateReplicas is the number of replicas that don't currently + -match their node pool definitions. If OutOfDateReplicas is not 0 + -it should mean that the operator will soon roll this many pods. + -| *`upToDateReplicas`* __integer__ | UpToDateReplicas is the number of replicas that currently match + -their node pool definitions. + -| *`condemnedReplicas`* __integer__ | CondemnedReplicas is the number of replicas that will be decommissioned + -as part of a scaling down operation. + -| *`readyReplicas`* __integer__ | ReadyReplicas is the number of replicas whose readiness probes are + -currently passing. + -| *`runningReplicas`* __integer__ | RunningReplicas is the number of replicas that are actively in a running + -state. + +| *`clientSecret`* __string__ | |=== @@ -1246,6 +1670,7 @@ Password specifies a password for the user. | *`value`* __string__ | Value is a hardcoded value to use for the given password. It should only be used for testing purposes. + In production, use ValueFrom. + | *`valueFrom`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-passwordsource[$$PasswordSource$$]__ | ValueFrom specifies a source for a password to be fetched from when specifying or generating user credentials. + +| *`noGenerate`* __boolean__ | NoGenerate when set to true does not create kubernetes secret when ValueFrom points to none-existent secret. + |=== @@ -1277,7 +1702,9 @@ PatternType specifies the type of pattern applied for ACL resource matching. .Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclresourcefilter[$$ACLResourceFilter$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclresourcespec[$$ACLResourceSpec$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-namefilter[$$NameFilter$$] @@ -1358,6 +1785,60 @@ PodTemplate will pass label and annotation to Statefulset Pod template. |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-poolconfigurator"] +== PoolConfigurator + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-poolinitcontainers[$$PoolInitContainers$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`additionalCLIArgs`* __string array__ | Chart default: [] + +|=== + + +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-poolfsvalidator"] +== PoolFSValidator + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-poolinitcontainers[$$PoolInitContainers$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`enabled`* __boolean__ | Chart default: false + +| *`expectedFS`* __string__ | Chart default: xfs + +|=== + + + + +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-poolsetdatadirownership"] +== PoolSetDataDirOwnership + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-poolinitcontainers[$$PoolInitContainers$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`enabled`* __boolean__ | Chart default: false + +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-postinstalljob"] == PostInstallJob @@ -1464,8 +1945,10 @@ RPControllers configures additional controllers that can be deployed as sidecars |=== | Field | Description | *`enabled`* __boolean__ | Specifies whether the Controllers are enabled. + -| *`resources`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core[$$ResourceRequirements$$]__ | -| *`securityContext`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#securitycontext-v1-core[$$SecurityContext$$]__ | +| *`resources`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core[$$ResourceRequirements$$]__ | Specifies resource requests for the sidecar container. + +DEPRECATED: Use sideCars.resources + +| *`securityContext`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#securitycontext-v1-core[$$SecurityContext$$]__ | Specifies the container's security context, including privileges and access levels of the container and its processes. + +DEPRECATED: Use sideCars.securityContext + | *`image`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandaimage[$$RedpandaImage$$]__ | | *`healthProbeAddress`* __string__ | | *`metricsAddress`* __string__ | @@ -1545,6 +2028,26 @@ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api- |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandaadminapisecrets"] +== RedpandaAdminAPISecrets + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandasecrets[$$RedpandaSecrets$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`password`* __string__ | +| *`tlsCa`* __string__ | +| *`tlsCert`* __string__ | +| *`tlsKey`* __string__ | +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandaclusterspec"] == RedpandaClusterSpec @@ -1574,6 +2077,7 @@ For descriptions and default values, see xref:k-redpanda-helm-spec.adoc[]. | *`enterprise`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-enterprise[$$Enterprise$$]__ | Defines an Enterprise license. + | *`rackAwareness`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-rackawareness[$$RackAwareness$$]__ | Defines rack awareness settings. + | *`console`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandaconsole[$$RedpandaConsole$$]__ | Defines Redpanda Console settings. + +Deprecated: Use the dedicated Console CRD. + | *`connectors`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandaconnectors[$$RedpandaConnectors$$]__ | Defines Redpanda Connector settings. + Deprecated, ignored, and unused as of v25.1.1 + | *`auth`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-auth[$$Auth$$]__ | Defines authentication settings for listeners. + @@ -1775,6 +2279,53 @@ Defined by the `--reserve-memory` parameter. Represents the memory available for |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandarole"] +== RedpandaRole + +RedpandaRole defines the CRD for a Redpanda role. + + + + + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`apiVersion`* __string__ | `cluster.redpanda.com/v1alpha2` +| *`kind`* __string__ | `RedpandaRole` +| *`kind`* __string__ | Kind is a string value representing the REST resource this object represents. + +Servers may infer this from the endpoint the client submits requests to. + +Cannot be updated. + +In CamelCase. + +More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + +| *`apiVersion`* __string__ | APIVersion defines the versioned schema of this representation of an object. + +Servers should convert recognized schemas to the latest internal value, and + +may reject unrecognized values. + +More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + +| *`metadata`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#objectmeta-v1-meta[$$ObjectMeta$$]__ | Refer to the Kubernetes API documentation for fields of `metadata`. + +| *`spec`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-rolespec[$$RoleSpec$$]__ | Defines the desired state of the Redpanda role. + +| *`status`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-rolestatus[$$RoleStatus$$]__ | Represents the current status of the Redpanda role. + +|=== + + +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandasecrets"] +== RedpandaSecrets + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-secretconfig[$$SecretConfig$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`adminApi`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandaadminapisecrets[$$RedpandaAdminAPISecrets$$]__ | +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandaspec"] == RedpandaSpec @@ -1809,8 +2360,6 @@ RedpandaStatus defines the observed state of Redpanda | *`conditions`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#condition-v1-meta[$$Condition$$] array__ | Conditions holds the conditions for the Redpanda. + | *`license`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandalicensestatus[$$RedpandaLicenseStatus$$]__ | LicenseStatus contains information about the current state of any + installed license in the Redpanda cluster. + -| *`nodePools`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-nodepoolstatus[$$NodePoolStatus$$] array__ | NodePools contains information about the node pools associated + -with this cluster. + | *`configVersion`* __string__ | ConfigVersion contains the configuration version written in + Redpanda used for restarting broker nodes as necessary. + | *`observedGeneration`* __integer__ | Specifies the last observed generation. + @@ -1838,6 +2387,8 @@ deprecated + |=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-resourcetemplate"] == ResourceTemplate @@ -1864,6 +2415,7 @@ ResourceType specifies the type of resource an ACL is applied to. .Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclresourcefilter[$$ACLResourceFilter$$] - xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclresourcespec[$$ACLResourceSpec$$] @@ -1911,6 +2463,67 @@ and `Requests`. |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-roleauthorizationspec"] +== RoleAuthorizationSpec + +RoleAuthorizationSpec defines authorization rules for this role. + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-rolespec[$$RoleSpec$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`acls`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-aclrule[$$ACLRule$$] array__ | List of ACL rules which should be applied to this role. + +|=== + + +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-rolespec"] +== RoleSpec + +RoleSpec defines the configuration of a Redpanda role. + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandarole[$$RedpandaRole$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`cluster`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-clustersource[$$ClusterSource$$]__ | ClusterSource is a reference to the cluster where the role should be created. + +It is used in constructing the client created to configure a cluster. + +| *`principals`* __string array__ | Principals defines the list of users assigned to this role. + +Format: Type:Name (e.g., User:john, User:jane). If type is omitted, defaults to User. + +| *`authorization`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-roleauthorizationspec[$$RoleAuthorizationSpec$$]__ | Authorization rules defined for this role. If specified, the operator will manage ACLs for this role. + +If omitted, ACLs should be managed separately using Redpanda's ACL management. + +|=== + + +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-rolestatus"] +== RoleStatus + +RoleStatus defines the observed state of a Redpanda role + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandarole[$$RedpandaRole$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`observedGeneration`* __integer__ | Specifies the last observed generation. + +| *`conditions`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#condition-v1-meta[$$Condition$$] array__ | Conditions holds the conditions for the Redpanda role. + +| *`managedAcls`* __boolean__ | ManagedACLs returns whether the role has managed ACLs that need + +to be cleaned up. + +| *`managedRole`* __boolean__ | ManagedRole returns whether the role has been created in Redpanda and needs + +to be cleaned up. + +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-sasl"] == SASL @@ -2012,12 +2625,21 @@ SchemaRegistry configures settings for the Schema Registry listeners. [cols="25a,75a", options="header"] |=== | Field | Description -| *`authenticationMethod`* __string__ | Specifies the authentication method for the external listener. For example, 'mtls_identity' or `sasl`. + -| *`enabled`* __boolean__ | Specifies whether the Schema Registry is enabled. + -| *`external`* __object (keys:string, values:xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-externallistener[$$ExternalListener$$])__ | Defines settings for the external listener. + -| *`kafkaEndpoint`* __string__ | Configures the listener to use for HTTP connections. For example `default` for the internal listener. + -| *`port`* __integer__ | Specifies the container port number for the internal listener. + +| *`enabled`* __boolean__ | Specifies whether this Listener is enabled. + +| *`authenticationMethod`* __string__ | Specifies the authentication method for this listener. For example, 'mtls_identity', `sasl` or `http_basic`. + +| *`appProtocol`* __string__ | +| *`port`* __integer__ | Specifies the container port number for this listener. + | *`tls`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-listenertls[$$ListenerTLS$$]__ | Configures TLS settings for the internal listener. + +| *`prefixTemplate`* __string__ | Specifies the template used for generating the advertised addresses of + +Services. This field accepts a string template that dynamically + +constructs Service addresses based on various parameters such as Service + +name and port number. + +For historical backwards compatibility, this field is present on both + +internal and external listeners. However, it is ignored when specified + +on internal listeners. + +| *`external`* __object (keys:string, values:xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-externallistener[$$ExternalListener$$])__ | Defines settings for the external listeners. + +| *`kafkaEndpoint`* __string__ | Configures the listener to use for HTTP connections. For example `default` for the internal listener. + +deprecated and not respected. + |=== @@ -2041,6 +2663,27 @@ SchemaRegistrySASL configures credentials to connect to Redpanda cluster that ha |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-schemaregistrysecrets"] +== SchemaRegistrySecrets + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-secretconfig[$$SecretConfig$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`bearerToken`* __string__ | +| *`password`* __string__ | +| *`tlsCa`* __string__ | +| *`tlsCert`* __string__ | +| *`tlsKey`* __string__ | +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-schemaregistryspec"] == SchemaRegistrySpec @@ -2115,6 +2758,30 @@ SchemaType specifies the type of the given schema. +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-secretconfig"] +== SecretConfig + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolespec[$$ConsoleSpec$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolevalues[$$ConsoleValues$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`create`* __boolean__ | +| *`kafka`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-kafkasecrets[$$KafkaSecrets$$]__ | +| *`authentication`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-authenticationsecrets[$$AuthenticationSecrets$$]__ | +| *`license`* __string__ | +| *`redpanda`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandasecrets[$$RedpandaSecrets$$]__ | +| *`serde`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-serdesecrets[$$SerdeSecrets$$]__ | +| *`schemaRegistry`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-schemaregistrysecrets[$$SchemaRegistrySecrets$$]__ | +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-secretkeyref"] == SecretKeyRef @@ -2141,6 +2808,28 @@ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/nam |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-secretmount"] +== SecretMount + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolespec[$$ConsoleSpec$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolevalues[$$ConsoleValues$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`name`* __string__ | +| *`secretName`* __string__ | +| *`path`* __string__ | +| *`subPath`* __string__ | +| *`defaultMode`* __integer__ | +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-secretref"] == SecretRef @@ -2177,6 +2866,23 @@ SecretRef configures the Secret resource that contains existing TLS certificates |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-serdesecrets"] +== SerdeSecrets + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-secretconfig[$$SecretConfig$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`protobufGitBasicAuthPassword`* __string__ | +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-service"] == Service @@ -2215,6 +2921,48 @@ ServiceAccount configures Service Accounts. |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-serviceaccountconfig"] +== ServiceAccountConfig + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolespec[$$ConsoleSpec$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolevalues[$$ConsoleValues$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`automountServiceAccountToken`* __boolean__ | +| *`annotations`* __object (keys:string, values:string)__ | +| *`name`* __string__ | +|=== + + +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-serviceconfig"] +== ServiceConfig + + + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolespec[$$ConsoleSpec$$] +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-consolevalues[$$ConsoleValues$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`type`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#servicetype-v1-core[$$ServiceType$$]__ | +| *`port`* __integer__ | +| *`nodePort`* __integer__ | +| *`targetPort`* __integer__ | +| *`annotations`* __object (keys:string, values:string)__ | +|=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-serviceinternal"] == ServiceInternal @@ -2283,8 +3031,10 @@ SideCarObj represents a generic sidecar object. This is a placeholder for now. |=== | Field | Description | *`enabled`* __boolean__ | -| *`resources`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core[$$ResourceRequirements$$]__ | -| *`securityContext`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#securitycontext-v1-core[$$SecurityContext$$]__ | +| *`resources`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core[$$ResourceRequirements$$]__ | Specifies resource requests for the sidecar container. + +DEPRECATED: Use sideCars.resources + +| *`securityContext`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#securitycontext-v1-core[$$SecurityContext$$]__ | Specifies the container's security context, including privileges and access levels of the container and its processes. + +DEPRECATED: Use sideCars.securityContext + |=== @@ -2302,6 +3052,10 @@ SideCars configures the additional sidecar containers that run alongside the mai |=== | Field | Description | *`image`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-redpandaimage[$$RedpandaImage$$]__ | +| *`extraVolumeMounts`* __string__ | Specifies additional volumes to mount to the sidecar. + +| *`resources`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#resourcerequirements-v1-core[$$ResourceRequirements$$]__ | Specifies resource requests for the sidecar container. + +| *`securityContext`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#securitycontext-v1-core[$$SecurityContext$$]__ | Specifies the container's security context, including privileges and access levels of the container and its processes. + +| *`args`* __string array__ | | *`configWatcher`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-configwatcher[$$ConfigWatcher$$]__ | Configures the `config-watcher` sidecar. The `config-watcher` sidecar polls the Secret resource in `auth.sasl.secretRef` for changes and triggers a rolling upgrade to add the new superusers to the Redpanda cluster. + | *`rpkStatus`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-sidecarobj[$$SideCarObj$$]__ | | *`controllers`* __xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-rpcontrollers[$$RPControllers$$]__ | @@ -2431,6 +3185,8 @@ TLS configures TLS in the Helm values. See https://docs.redpanda.com/current/man |=== + + [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-tiered"] == Tiered @@ -2619,6 +3375,23 @@ TopologySpreadConstraints configures topology spread constraints to control how |=== +[id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-truststore"] +== TrustStore + +TrustStore is a mapping from a value on either a Secret or ConfigMap to the +`truststore_path` field of a listener. + + + +.Appears in: +- xref:{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-listenertls[$$ListenerTLS$$] + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`configMapKeyRef`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#configmapkeyselector-v1-core[$$ConfigMapKeySelector$$]__ | +| *`secretKeyRef`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#secretkeyselector-v1-core[$$SecretKeySelector$$]__ | +|=== [id="{anchor_prefix}-github-com-redpanda-data-redpanda-operator-operator-api-redpanda-v1alpha2-tuning"] diff --git a/tests/setup-tests/fetch-versions-and-rpk.json b/tests/setup-tests/fetch-versions-and-rpk.json index 102d64df43..54d3745abd 100644 --- a/tests/setup-tests/fetch-versions-and-rpk.json +++ b/tests/setup-tests/fetch-versions-and-rpk.json @@ -56,7 +56,7 @@ "description": "Use doc-tools to install any additional test dependencies.", "runShell": { "command": "npx doc-tools install-test-dependencies", - "timeout": 120000 + "timeout": 420000 } }, {

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 z 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 z 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