Open
Conversation
Implement Kafka as a new destination type with SASL auth (plain, scram-sha-256, scram-sha-512), TLS support, and configurable partition keys via JMESPath templates. Extract shared partition key evaluator from Kinesis into reusable partitionkey package. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add Kafka to test compose (confluent-local), testinfra helper, and rename test services with test- prefix to avoid name collisions when sharing the outpost Docker network. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Make destination type list scrollable and fix Create Destination button overlapping form fields when there are many config fields (e.g. Kafka). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add generic select field type to the portal destination config system and use it for Kafka SASL Mechanism, replacing the free-text input with a dropdown (None, PLAIN, SCRAM-SHA-256, SCRAM-SHA-512). Closes #141 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Add "Timed Out" pattern to also match kafka-go's RequestTimedOut protocol error, not just Go-level i/o timeouts. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Collaborator
Author
Local testing guide1. Start Kafka UIdocker run -d --name outpost-kafka-ui \
-p 38080:8080 \
-e KAFKA_CLUSTERS_0_NAME=outpost-test \
--network outpost \
-e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=test-kafka:29092 \
provectuslabs/kafka-ui:latest2. Create a topicIn Kafka UI, create a topic (e.g. 3. Create a Kafka destination via PortalOpen the portal at http://localhost:3334 and create a new destination:
4. Publish an eventcurl -X POST http://localhost:3333/api/v1/publish \
-H "Authorization: Bearer apikey" \
-H "Content-Type: application/json" \
-d '{
"tenant_id": "tenant_1",
"topic": "user.created",
"data": {"user_id": "u_123", "email": "test@example.com"},
"metadata": {"event-id": "evt_abc"}
}'5. Verify delivery
6. Cleanupdocker rm -f outpost-kafka-ui |
Add select to DestinationSchemaField type enum with options property. Add kafka to destination type path enum and list example. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Require username/password credentials when SASL mechanism is configured - Accept empty string for TLS config in Validate (treat as "not configured") - Add WriteTimeout (10s) and MaxAttempts (3) to kafka.Writer - Use "authentication" instead of "auth" in ClassifyKafkaError to avoid overly broad string matching Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Use fixed host port (19092) for kafka test container so advertised listeners match the actual port clients connect to - Add KafkaURL to non-TESTINFRA config path for consistency - Use atomic.Bool for KafkaConsumer.shuttingDown to fix data race Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Ensures the parent component is notified when the select value changes, consistent with how other field types propagate changes. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Test CreatePublisher with each SASL mechanism (plain, scram-sha-256, scram-sha-512) to exercise the buildSASLMechanism code path - Add comprehensive ClassifyKafkaError tests covering all error categories Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The registry already enforces DeliveryTimeout via context deadline on every Publish call. A hardcoded WriteTimeout would silently cap delivery time regardless of the configured timeout. Let the context control it, consistent with how webhook and other providers work. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
alexbouchardd
approved these changes
Mar 22, 2026
SASL mechanism + credentials are now mandatory. TLS defaults to enabled. Field order updated: brokers, topic, TLS, partition key, SASL mechanism. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove viewport-height constraints and inner container scrolling so the page scrolls naturally when form content overflows. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
selectfield type to portal destination config, used for Kafka SASL Mechanism dropdownCloses #141
Test plan
go buildpasses🤖 Generated with Claude Code