Apache Kafka - K8s

Channel Revision Published Runs on
latest/stable 5 09 Mar 2022
Ubuntu 20.04
latest/edge 27 25 Apr 2023
Ubuntu 22.04 Ubuntu 20.04
latest/edge 13 21 Oct 2022
Ubuntu 22.04 Ubuntu 20.04
3/stable 56 27 Feb 2024
Ubuntu 22.04
3/candidate 56 27 Feb 2024
Ubuntu 22.04
3/beta 56 27 Feb 2024
Ubuntu 22.04
3/edge 76 11 Dec 2024
Ubuntu 22.04
juju deploy kafka-k8s --channel 3/stable
Show information

Platform:

Configuration backup and restore

Apache Kafka configuration is distributed using Apache ZooKeeper. An Apache ZooKeeper backup can be stored on any S3-compatible storage. S3 access and configurations are managed with the s3-integrator charm, that can be integrated with Charmed Apache ZooKeeper.

This guide will teach you how to deploy and configure the s3-integrator charm for AWS S3, send the configurations to Charmed Apache ZooKeeper K8s, and finally manage your Apache ZooKeeper backups.

Configure s3-integrator

First, deploy and run the charm:

juju deploy s3-integrator
juju run s3-integrator/leader sync-s3-credentials access-key=<access-key-here> secret-key=<secret-key-here>

Then, use juju config to add your configuration parameters. For example:

juju config s3-integrator \
    endpoint="https://s3.us-west-2.amazonaws.com" \
    bucket="zk-backups-bucket-1" \
    path="/zk-backups" \
    region="us-west-2"

The only mandatory configuration parameter in the command above is bucket.

Integrate with Charmed Apache ZooKeeper K8s

To pass these configurations to Charmed Apache ZooKeeper K8s, integrate the two applications:

juju integrate s3-integrator zookeeper-k8s

You can create, list, and restore backups now:

juju run zookeeper-k8s/leader list-backups
juju run zookeeper-k8s/leader create-backup
juju run zookeeper-k8s/leader list-backups
juju run zookeeper-k8s/leader restore backup-id=<backup-id-here>

Create a backup

Once you have a Charmed Apache ZooKeeper K8s deployment with configurations set for S3 storage, check that it is active and idle with juju status.
Once Charmed Apache ZooKeeper K8s is active and idle, you can create your first backup with the create-backup command.

juju run zookeeper-k8s/leader create-backup

Apache ZooKeeper K8s backups created with the command above will always be full backups: a copy of all the Apache Kafka K8s configuration will be stored in S3.

The command will output the ID of the newly created backup:

                                     Backup created
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Id                   ┃ Log-sequence-number ┃ Path                           ┃
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 2024-09-12T14:32:46Z │          8589934621 │ zookeeper_backups/2024-09-12T1 │
│                      │                     │ 4:32:46Z/snapshot              │
└──────────────────────┴─────────────────────┴────────────────────────────────┘

List backups

You can list your available backups by running the list-backups command:

juju run zookeeper-k8s/leader list-backups

This should show your available backups, like in the sample output below:

                                     Backups
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Id                   ┃ Log-sequence-number ┃ Path                           ┃
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ 2024-09-12T14:32:46Z │          8589934621 │ zookeeper_backups/2024-09-12T1 │
│                      │                     │ 4:32:46Z/snapshot              │
│ 2024-09-12T14:32:00Z │          8589934621 │ zookeeper_backups/2024-09-12T1 │
│                      │                     │ 4:32:00Z/snapshot              │
│ 2024-09-12T14:26:12Z │          8589934621 │ zookeeper_backups/2024-09-12T1 │
│                      │                     │ 4:26:12Z/snapshot              │
└──────────────────────┴─────────────────────┴────────────────────────────────┘

Below is a list of parameters shown for each backup:

  • Id: identifier of the backup.
  • Log-Sequence-number: a database-specific number to identify its state. Learn more about the Zxid on Apache ZooKeeper documentation.
  • Path: path of the snapshot file in the S3 repository.

Restore a backup

This operation puts you at risk of losing unsaved configuration data. We recommend creating a backup first.

To restore a backup from that list, run the restore command and pass the backup-id (in the form of YYYY-MM-DDTHH:MM:SSZ) that is listed in the list-backups action output:

juju run zookeeper-k8s/leader restore backup-id=<backup-id-here>

The restore will then proceed. Follow its progress using juju status.