Skip to content

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)