Automating the creation of topics and ACLs is a common task for Kafka administrators. This repository contains a set of utilities to automate these tasks.
- Create a topic with a given number of partitions and replication factor
- Create ACLs for a given topic
See the documentation for more information.
To install the library from the GitLab package registry, write the following lines in the file requirements.txt:
kafka-ease==[VERSION]
To install the library, run the following command:
pip install kafka-ease==[VERSION]Check PEP 440 for version schemes and version specifiers.
The file format is YAML or JSON. The file must contain a list of topics and a list of ACLs.
# acl.yaml
topics:
- name: topic.name
num_partitions: 1
replication_factor: 1
cleanup_policy: delete
retention_days: 7
acls:
- resource_type: TOPIC
resource_name: topic.name
principal: User:kafka-user
host: "*"
operation: READ
permission_type: ALLOW
pattern_type: LITERAL{
"topics": [
{
"name": "topic.name",
"num_partitions": 1,
"replication_factor": 1,
"cleanup_policy": "delete",
"retention_days": 7
}
],
"acls": [
{
"resource_type": "TOPIC",
"resource_name": "topic.name",
"principal": "User:kafka-user",
"host": "*",
"operation": "READ",
"permission_type": "ALLOW",
"pattern_type": "LITERAL"
}
]
}-
Topics
- name: Topic name
- num_partitions: Number of partitions
- replication_factor: Replication factor
- cleanup_policy: Cleanup policy (
delete,compact) - retention_days: Delete retention days
-
ACLs
- resource_type: Resource type (
UNKNOWN,ANY,CLUSTER,TOPIC,DELEGATION_TOKEN,GROUP,TRANSACTIONAL_ID) - resource_name: Resource name
- principal: Principal (
User:,Group:) - host: Host (
*) - operation: Operation (
ANY,ALL,READ,WRITE,CREATE,DELETE,ALTER,DESCRIBE,CLUSTER_ACTION,DESCRIBE_CONFIGS,ALTER_CONFIGS,IDEMPOTENT_WRITE) - permission_type: Permission type (
ANY,DENY,ALLOW) - pattern_type: Pattern type (
ANY,MATCH,LITERAL,PREFIXED)
- resource_type: Resource type (
kafka-ease apply -f acl.yaml --only-validateExpected output:
Validating file acl.yaml...
File: acl.yaml
YAML file detected
2 topics found.
2 ACLs found.
File acl.yaml is valid.
kafka-ease apply -f acl.yaml \
--kafka-brokers kafka:9093 \
--security-protocol SASL_PLAINTEXT \
--sasl-mechanism SCRAM-SHA-256 \
--sasl-username kafka-admin \
--sasl-password SECRETExpected output:
Applying file...
Kafka brokers: kafka:9093
Security protocol: SASL_PLAINTEXT
SASL mechanism: SCRAM-SHA-256
SASL username: kafka-admin
SASL password: ***************
File: acl.yaml
YAML file detected
1 topics found.
1 ACLs found.
Topic topic.name updated
Removing old ACLs 3
ACL User:kafka-user synced
File synced successfully.
kafka-ease apply --helpExpected output:
Usage: kafka-ease apply [OPTIONS]
Apply configuration file with topics and ACL to Kafka.
Options:
--kafka-brokers TEXT Kafka server to connect to use.
--security-protocol [PLAINTEXT|SASL_PLAINTEXT]
Kafka Security protocol to use.
--sasl-mechanism [PLAIN|SCRAM-SHA-256|SCRAM-SHA-512]
SASL mechanism to use.
--sasl-username TEXT SASL username to use.
--sasl-password TEXT SASL password to use.
-f, --file TEXT File path to validate
--only-validate Only validate the file
--help Show this message and exit.
- 1.0.0 (2023-09-20)
Initial release of Kafka Ease
- 1.0.1 (2023-09-20)
Fix packaging error
- 1.0.2 (2023-09-20)
Fix minor bugs