Redpanda¶
Since testcontainers-go v0.20.0
Introduction¶
Redpanda is a streaming data platform for developers. Kafka API compatible. 10x faster. No ZooKeeper. No JVM! This Testcontainers module provides three APIs:
- Kafka API
- Schema Registry API
- Redpanda Admin API
Adding this module to your project dependencies¶
Please run the following command to add the Redpanda module to your Go dependencies:
go get github.com/testcontainers/testcontainers-go/modules/redpanda
Usage example¶
container, err := RunContainer(ctx,
WithEnableSASL(),
WithEnableKafkaAuthorization(),
WithNewServiceAccount("superuser-1", "test"),
WithNewServiceAccount("superuser-2", "test"),
WithNewServiceAccount("no-superuser", "test"),
WithSuperusers("superuser-1", "superuser-2"),
WithEnableSchemaRegistryHTTPBasicAuth(),
)
require.NoError(t, err)
Module reference¶
The Redpanda module exposes one entrypoint function to create the Redpanda container, and this function receives two parameters:
func RunContainer(ctx context.Context, opts ...testcontainers.ContainerCustomizer) (*RedpandaContainer, error)
context.Context
, the Go context.testcontainers.ContainerCustomizer
, a variadic argument for passing options.
Container Options¶
When starting the Redpanda container, you can pass options in a variadic way to configure it.
Image¶
If you need to set a different Redpanda Docker image, you can use testcontainers.WithImage
with a valid Docker image
for Redpanda. E.g. testcontainers.WithImage("docker.redpanda.com/redpandadata/redpanda:v23.1.7")
.
Wait Strategies¶
If you need to set a different wait strategy for Redpanda, you can use testcontainers.WithWaitStrategy
with a valid wait strategy
for Redpanda.
Info
The default deadline for the wait strategy is 60 seconds.
At the same time, it's possible to set a wait strategy and a custom deadline with testcontainers.WithWaitStrategyAndDeadline
.
Docker type modifiers¶
If you need an advanced configuration for Redpanda, you can leverage the following Docker type modifiers:
testcontainers.WithConfigModifier
testcontainers.WithHostConfigModifier
testcontainers.WithEndpointSettingsModifier
Please read the Create containers: Advanced Settings documentation for more information.
Container Methods¶
The Redpanda container exposes the following methods:
KafkaSeedBroker¶
KafkaSeedBroker returns the seed broker that should be used for connecting to the Kafka API with your Kafka client. It'll be returned in the format: "host:port" - for example: "localhost:55687".
seedBroker, err := container.KafkaSeedBroker(ctx)
require.NoError(t, err)
SchemaRegistryAddress¶
SchemaRegistryAddress returns the address to the schema registry API. This is an HTTP-based API and thus the returned format will be: http://host:port.
schemaRegistryURL, err := container.SchemaRegistryAddress(ctx)
require.NoError(t, err)
AdminAPIAddress¶
AdminAPIAddress returns the address to the Redpanda Admin API. This is an HTTP-based API and thus the returned format will be: http://host:port.
adminAPIURL, err := container.AdminAPIAddress(ctx)
require.NoError(t, err)