Skip to content
Open
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
2a45fbe
Add Redpanda hosting integration
slang25 Jun 14, 2026
ac76e85
Add configurable broker CPU/memory options and bind mount test
slang25 Jun 14, 2026
74c5aaf
Add WithKafkaUI for Kafbat-based Kafka management UI
slang25 Jun 14, 2026
14e039d
Align example AppHost SDK with main (Aspire 13.4.3)
slang25 Jun 23, 2026
03a93c0
Merge branch 'main' into slang25/redpanda-hosting-package
slang25 Jun 25, 2026
73f6caf
Merge branch 'main' into slang25/redpanda-hosting-package
aaronpowell Jun 29, 2026
c895d9d
Address review feedback
slang25 Jun 29, 2026
197a635
Add TypeScript app host and a Redpanda consumer sample
slang25 Jun 29, 2026
980694d
Merge branch 'main' into slang25/redpanda-hosting-package
slang25 Jun 29, 2026
139bd86
Add integration tests for Redpanda Console and Kafka UI
slang25 Jul 7, 2026
9250897
Merge branch 'main' into slang25/redpanda-hosting-package
slang25 Jul 7, 2026
a2199dd
Merge branch 'main' into slang25/redpanda-hosting-package
slang25 Jul 7, 2026
a79fda0
Fix Redpanda broker connectivity and add consumer health check
slang25 Jul 7, 2026
537c70c
Add Kafka broker health check to Redpanda resource
slang25 Jul 12, 2026
596fb29
Merge branch 'main' into slang25/redpanda-hosting-package
slang25 Jul 12, 2026
77b860e
Merge branch 'main' into slang25/redpanda-hosting-package
slang25 Jul 17, 2026
9e4db7b
Nest Redpanda UIs under broker and cache Kafka health check
slang25 Jul 21, 2026
69225f3
Merge branch 'main' into slang25/redpanda-hosting-package
jmezach Aug 4, 2026
798bc66
Allow multiple Redpanda resources by keeping the Kafka endpoint proxied
slang25 Aug 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CommunityToolkit.Aspire.slnx
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,9 @@
<Folder Name="/examples/redis-ext/">
<Project Path="examples/redis-ext/CommunityToolkit.Aspire.Hosting.Redis.Extensions.AppHost/CommunityToolkit.Aspire.Hosting.Redis.Extensions.AppHost.csproj" />
</Folder>
<Folder Name="/examples/redpanda/">
<Project Path="examples/redpanda/CommunityToolkit.Aspire.Hosting.RedPanda.AppHost/CommunityToolkit.Aspire.Hosting.RedPanda.AppHost.csproj" />
</Folder>
<Folder Name="/examples/rust/">
<Project Path="examples/rust/CommunityToolkit.Aspire.Hosting.Rust.AppHost/CommunityToolkit.Aspire.Hosting.Rust.AppHost.csproj" />
<Project Path="examples/rust/CommunityToolkit.Aspire.Hosting.Rust.ServiceDefaults/CommunityToolkit.Aspire.Hosting.Rust.ServiceDefaults.csproj" />
Expand Down Expand Up @@ -270,6 +273,7 @@
<Project Path="src/CommunityToolkit.Aspire.Hosting.Python.Extensions/CommunityToolkit.Aspire.Hosting.Python.Extensions.csproj" />
<Project Path="src/CommunityToolkit.Aspire.Hosting.RavenDB/CommunityToolkit.Aspire.Hosting.RavenDB.csproj" />
<Project Path="src/CommunityToolkit.Aspire.Hosting.Redis.Extensions/CommunityToolkit.Aspire.Hosting.Redis.Extensions.csproj" />
<Project Path="src/CommunityToolkit.Aspire.Hosting.RedPanda/CommunityToolkit.Aspire.Hosting.RedPanda.csproj" />
<Project Path="src/CommunityToolkit.Aspire.Hosting.Rust/CommunityToolkit.Aspire.Hosting.Rust.csproj" />
<Project Path="src/CommunityToolkit.Aspire.Hosting.SeaweedFS/CommunityToolkit.Aspire.Hosting.SeaweedFS.csproj" />
<Project Path="src/CommunityToolkit.Aspire.Hosting.RustFs/CommunityToolkit.Aspire.Hosting.RustFs.csproj" />
Expand Down Expand Up @@ -343,6 +347,7 @@
<Project Path="tests/CommunityToolkit.Aspire.Hosting.PowerShell.Tests/CommunityToolkit.Aspire.Hosting.PowerShell.Tests.csproj" />
<Project Path="tests/CommunityToolkit.Aspire.Hosting.RavenDB.Tests/CommunityToolkit.Aspire.Hosting.RavenDB.Tests.csproj" />
<Project Path="tests/CommunityToolkit.Aspire.Hosting.Redis.Extensions.Tests/CommunityToolkit.Aspire.Hosting.Redis.Extensions.Tests.csproj" />
<Project Path="tests/CommunityToolkit.Aspire.Hosting.RedPanda.Tests/CommunityToolkit.Aspire.Hosting.RedPanda.Tests.csproj" />
<Project Path="tests/CommunityToolkit.Aspire.Hosting.Rust.Tests/CommunityToolkit.Aspire.Hosting.Rust.Tests.csproj" />
<Project Path="tests/CommunityToolkit.Aspire.Hosting.SeaweedFS.Tests/CommunityToolkit.Aspire.Hosting.SeaweedFS.Tests.csproj" />
<Project Path="tests/CommunityToolkit.Aspire.Hosting.RustFs.Tests/CommunityToolkit.Aspire.Hosting.RustFs.Tests.csproj" />
Expand Down
2 changes: 2 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -55,5 +55,7 @@
<!-- SQLitePCLRaw.lib.e_sqlite3 <= 2.1.11 depends on vulnerable SQLite < 3.50.2 (memory corruption).
No patched NuGet version available yet. Suppress until upstream ships a fix. -->
<NuGetAuditSuppress Include="https://github.com/advisories/GHSA-2m69-gcr7-jv3q" />
<!-- MessagePack 2.5.192 is pulled transitively via Aspire.Hosting; the advisory is suppressed repo-wide. -->
<NuGetAuditSuppress Include="https://github.com/advisories/GHSA-hv8m-jj95-wg3x" />
Comment thread
slang25 marked this conversation as resolved.
Outdated
</ItemGroup>
</Project>
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ This repository contains the source code for the Aspire Community Toolkit, a col
| - **Learn More**: [`Hosting.Redis.Extensions`][redis-ext-integration-docs] <br /> - Stable 📦: [![CommunityToolkit.Aspire.Redis.Extensions][redis-ext-shields]][redis-ext-nuget] <br /> - Preview 📦: [![CommunityToolkit.Aspire.Hosting.Redis.Extensions][redis-ext-shields-preview]][redis-ext-nuget-preview] | An integration that contains some additional extensions for hosting Redis container. |
| - **Learn More**: [`Hosting.SqlServer.Extensions`][sqlserver-ext-integration-docs] <br /> - Stable 📦: [![CommunityToolkit.Aspire.SqlServer.Extensions][sqlserver-ext-shields]][sqlserver-ext-nuget] <br /> - Preview 📦: [![CommunityToolkit.Aspire.Hosting.SqlServer.Extensions][sqlserver-ext-shields-preview]][sqlserver-ext-nuget-preview] | An integration that contains some additional extensions for hosting SqlServer container. |
| - **Learn More**: [`Hosting.LavinMQ`][lavinmq-integration-docs] <br /> - Stable 📦: [![CommunityToolkit.Aspire.Hosting.LavinMQ][lavinmq-shields]][lavinmq-nuget] <br /> - Preview 📦: [![CommunityToolkit.Aspire.Hosting.LavinMQ][lavinmq-shields-preview]][lavinmq-nuget-preview] | An Aspire hosting integration for [LavinMQ](https://www.lavinmq.com). |
| - **Learn More**: [`Hosting.RedPanda`][redpanda-integration-docs] <br /> - Stable 📦: [![CommunityToolkit.Aspire.Hosting.RedPanda][redpanda-shields]][redpanda-nuget] <br /> - Preview 📦: [![CommunityToolkit.Aspire.Hosting.RedPanda][redpanda-shields-preview]][redpanda-nuget-preview] | An Aspire hosting integration for the [Redpanda](https://www.redpanda.com/) Kafka-compatible streaming platform. |
| - **Learn More**: [`Hosting.MailPit`][mailpit-ext-integration-docs] <br /> - Stable 📦: [![CommunityToolkit.Aspire.Hosting.MailPit][mailpit-ext-shields]][mailpit-ext-nuget] <br /> - Preview 📦: [![CommunityToolkit.Aspire.Hosting.MailPit][mailpit-ext-shields-preview]][mailpit-ext-nuget-preview] | An Aspire integration leveraging the [MailPit](https://mailpit.axllent.org/) container. |
| - **Learn More**: [`Hosting.k6`][k6-integration-docs] <br /> - Stable 📦: [![CommunityToolkit.Aspire.Hosting.k6][k6-shields]][k6-nuget] <br /> - Preview 📦: [![CommunityToolkit.Aspire.Hosting.k6][k6-shields-preview]][k6-nuget-preview] | An Aspire integration leveraging the [Grafana k6](https://k6.io/) container. |
| - **Learn More**: [`Hosting.MySql.Extensions`][mysql-ext-integration-docs] <br /> - Stable 📦: [![CommunityToolkit.Aspire.MySql.Extensions][mysql-ext-shields]][mysql-ext-nuget] <br /> - Preview 📦: [![CommunityToolkit.Aspire.Hosting.MySql.Extensions][mysql-ext-shields-preview]][mysql-ext-nuget-preview] | An integration that contains some additional extensions for hosting MySql container. |
Expand Down Expand Up @@ -269,6 +270,11 @@ This project is supported by the [.NET Foundation](https://dotnetfoundation.org)
[lavinmq-nuget]: https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.LavinMQ/
[lavinmq-shields-preview]: https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.LavinMQ?label=nuget%20(preview)
[lavinmq-nuget-preview]: https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.LavinMQ/absoluteLatest
[redpanda-integration-docs]: https://learn.microsoft.com/dotnet/aspire/community-toolkit/hosting-redpanda
[redpanda-shields]: https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.RedPanda
[redpanda-nuget]: https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.RedPanda/
[redpanda-shields-preview]: https://img.shields.io/nuget/vpre/CommunityToolkit.Aspire.Hosting.RedPanda?label=nuget%20(preview)
[redpanda-nuget-preview]: https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.RedPanda/absoluteLatest
[mailpit-ext-integration-docs]: https://learn.microsoft.com/dotnet/aspire/community-toolkit/hosting-mailpit
[mailpit-ext-shields]: https://img.shields.io/nuget/v/CommunityToolkit.Aspire.Hosting.MailPit
[mailpit-ext-nuget]: https://nuget.org/packages/CommunityToolkit.Aspire.Hosting.MailPit/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<Project Sdk="Aspire.AppHost.Sdk/13.4.3">

<PropertyGroup>
<OutputType>Exe</OutputType>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsAspireHost>true</IsAspireHost>
<UserSecretsId>3dc32fad-1d56-45b5-bea8-b96fa74a9628</UserSecretsId>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\..\src\CommunityToolkit.Aspire.Hosting.RedPanda\CommunityToolkit.Aspire.Hosting.RedPanda.csproj" IsAspireProjectResource="false" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
var builder = DistributedApplication.CreateBuilder(args);

builder.AddRedPanda("redpanda")
.WithConsole();

builder.Build().Run();
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"profiles": {
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:17277;http://localhost:15247",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"DOTNET_ENVIRONMENT": "Development",
"DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21270",
"DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22001"
}
},
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "http://localhost:15247",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"DOTNET_ENVIRONMENT": "Development",
"DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19100",
"DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20013"
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"Aspire.Hosting.Dcp": "Warning"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Description>An Aspire hosting package for the Redpanda Kafka-compatible streaming platform.</Description>
<AdditionalPackageTags>hosting redpanda kafka streaming messaging</AdditionalPackageTags>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Aspire.Hosting" />
</ItemGroup>

<ItemGroup>
<InternalsVisibleTo Include="CommunityToolkit.Aspire.Hosting.RedPanda.Tests" />
</ItemGroup>

</Project>
82 changes: 82 additions & 0 deletions src/CommunityToolkit.Aspire.Hosting.RedPanda/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# CommunityToolkit.Aspire.Hosting.RedPanda

## Overview

This Aspire hosting integration runs [Redpanda](https://www.redpanda.com/) in a container. Redpanda is a Kafka API compatible streaming platform, so the resource can be referenced by any Kafka client integration (for example the official `Aspire.Confluent.Kafka` client integration). The integration exposes the Kafka API, the Schema Registry, and the Admin API, and can optionally run the Redpanda Console web UI.

## Usage

### Example 1: Add a Redpanda broker

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var redpanda = builder.AddRedPanda("redpanda");

builder.AddProject<Projects.MyApp>("myapp")
.WithReference(redpanda)
.WaitFor(redpanda);

builder.Build().Run();
```

The connection string injected into the referencing resource is the Kafka bootstrap server address in the form `host:port`.

### Example 2: Pin the Kafka host port

```csharp
var redpanda = builder.AddRedPanda("redpanda", port: 9092);
```

### Example 3: Tune the broker CPU and memory

```csharp
var redpanda = builder.AddRedPanda("redpanda", options =>
{
options.CpuCount = 2; // Redpanda --smp, defaults to 1
options.Memory = "2G"; // Redpanda --memory, defaults to "1G"
});
```

### Example 4: Persist data with a volume or bind mount

```csharp
var redpanda = builder.AddRedPanda("redpanda")
.WithDataVolume();

// or

var redpanda = builder.AddRedPanda("redpanda")
.WithDataBindMount("./redpanda-data");
```

### Example 5: Add the Redpanda Console web UI

```csharp
var redpanda = builder.AddRedPanda("redpanda")
.WithConsole(console => console.WithHostPort(8080));
```

The console is configured automatically to connect to the broker's Kafka API, Schema Registry, and Admin API.

### Example 6: Add the Kafka UI web UI

```csharp
var redpanda = builder.AddRedPanda("redpanda")
.WithKafkaUI(kafkaUi => kafkaUi.WithHostPort(9000));
```

`WithKafkaUI` runs the same Kafka management UI (the `kafbat/kafka-ui` image) used by the official Aspire Kafka integration. It is wired automatically to the broker's Kafka API and Schema Registry, and can be used as an alternative to the Redpanda Console.

## Endpoints

| Name | Description |
| ---------------- | -------------------------------------------- |
| `kafka` | Kafka API (host accessible) |
| `internal` | Kafka API (container-to-container) |
| `schemaregistry` | Schema Registry HTTP API |
| `admin` | Admin API HTTP (used for the health check) |

## Upstream Image

This integration pins the `redpandadata/redpanda` image (from `docker.redpanda.com`) to a specific version tag (`v26.1.10`) rather than a floating tag, and the optional console uses `redpandadata/console` pinned to `v3.7.4`. Redpanda publishes immutable, fully-versioned tags (`vYY.M.P`); update the pinned tags to adopt newer releases. The optional Kafka UI uses `kafbat/kafka-ui` (from `docker.io`) pinned to `v1.5.0`.
Loading
Loading