Can you help us set up Kafka with Debezium CDC?
Yes. I've run Debezium on PostgreSQL with pgoutput in production. Setup is the easy part; the heartbeat, slot monitoring and the agreement with whoever owns the database are what keep it running.
Transactional outbox or change data capture?
If you own the application that writes the data, an outbox table drained by a poller is usually simpler to run. CDC earns its cost when you can't change the writer. Both need idempotent consumers downstream.
Why is our PostgreSQL WAL growing with Debezium?
Almost always an inactive or lagging replication slot. Debezium only advances the slot when it commits an offset, so quiet captured tables on a busy database pin the WAL. Add a heartbeat action that writes to a captured table, and alert on retained WAL per slot.
Is exactly-once processing possible with Kafka?
End to end, in practice you get at-least-once delivery plus an idempotent consumer. That's achievable and reliable: commit the deduplication marker with the state change, and push side effects through an outbox.