<a id="kubectl-confluent-cluster-kraft-migration-rollback"></a>

# kubectl confluent cluster kraft-migration rollback

Rollback KRaft migration to ZooKeeper.

To install the Confluent plugin, see [Confluent kubectl plugin](../co-install-plugin.md#co-install-plugin).

## Synopsis

Rollback a KRaft migration to ZooKeeper.

Rollback can be triggered from any active migration phase (SETUP, MIGRATE, or DUAL-WRITE).
The rollback behavior depends on how far the migration has progressed:

> - Early SETUP (before IBP upgrade): No Kafka or KRaftController changes to revert. CR lock may still need to be released.
> - SETUP (after IBP upgrade): Kafka config overrides are reverted automatically.
> - SETUP (after KRaftController started): Requires manual ZooKeeper znode cleanup.
> - MIGRATE or DUAL-WRITE: Full rollback with znode cleanup and Kafka reconfiguration.

After triggering rollback, follow these steps:
1. Monitor progress: kubectl confluent cluster kraft-migration status –name <name> -n <namespace>
2. If required, run znode cleanup: kubectl confluent cluster kraft-migration zk-node-removal –name <name> -n <namespace>

OR
Follow the manual steps in the docs: [https://docs.confluent.io/operator/current/co-migrate-kraft.html#roll-back-to-zk](https://docs.confluent.io/operator/current/co-migrate-kraft.html#roll-back-to-zk)

WARNING: This operation cannot be reversed once completed.

```none
kubectl confluent cluster kraft-migration rollback [flags]
```

## Examples

```none
# Rollback migration to ZooKeeper
kubectl confluent cluster kraft-migration rollback --name my-migration -n confluent
```

## Options

```none
-h, --help   help for rollback
```

## Options inherited from parent commands

```none
    --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
    --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
    --as-uid string                  UID to impersonate for the operation.
    --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
    --certificate-authority string   Path to a cert file for the certificate authority
    --client-certificate string      Path to a client certificate file for TLS
    --client-key string              Path to a client key file for TLS
    --cluster string                 The name of the kubeconfig cluster to use
    --context string                 The name of the kubeconfig context to use
    --disable-compression            If true, opt-out of response compression for all requests to the server
    --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
    --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
    --name string                    name of the KRaftMigrationJob CR (required for most subcommands)
-n, --namespace string               If present, the namespace scope for this CLI request
    --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-s, --server string                  The address and port of the Kubernetes API server
    --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
    --token string                   Bearer token for authentication to the API server
    --user string                    The name of the kubeconfig user to use
```

## SEE ALSO

* [kubectl confluent cluster kraft-migration](kubectl_confluent_cluster_kraft-migration.html)          - KRaft migration job operations.
