> ## Documentation Index
> Fetch the complete documentation index at: https://www.qovery.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Confluent Cloud for Apache Kafka

> Confluent Cloud Kafka cluster (Basic) with an environment, service account, and client API key, via the Confluent Terraform provider

Qovery creates it in your account with a third-party provider, using credentials you enter in the form, as a [Blueprint](https://www.qovery.com/docs/configuration/blueprints.md) service in one of your environments.

| | |
| - | - |
| Catalog name | `confluent-kafka` |
| Category | Messaging & Streaming |
| Provider | EXTERNAL |
| Engine | terraform |
| Major versions (latest release) | `default` (1.0.7) |
| Source | [EXTERNAL/confluent-kafka/default](https://github.com/Qovery/service-catalog/tree/EXTERNAL/confluent-kafka/default/1.0.7/EXTERNAL/confluent-kafka/default) |

> [!TIP]
>
> **New to this?** You don't need to know Terraform or Kubernetes. Qovery sets up Confluent Cloud for Apache Kafka in your account with the provider: you fill in a form, or paste the prompt below into your coding agent. The values it publishes, listed under Outputs, reach your other services as environment variables. Qovery tells you when a newer version of the Blueprint is available. Check the requirements in the Reference section before you start, and try it first in a development environment.

## Create it

> [tab] Console
>
> 1. Open the environment, then **New service** › **Blueprint**.
> 2. Find **Confluent Cloud for Apache Kafka** in the catalog and pick the major version.
> 3. Fill in the variables. Required ones are marked; the others use their defaults.
> 4. Create the service, and deploy it now or later.

> [tab] CLI and API
>
> List the catalog to get the latest tag, then create the service from it. `qovery api` signs the requests with your CLI session.
>
> ```bash theme={null}
> ORG_ID="REPLACE_WITH_ORGANIZATION_ID"
> ENV_ID="REPLACE_WITH_ENVIRONMENT_ID"
>
> qovery api "organization/$ORG_ID/blueprint/catalog" | jq '.. | objects | select(.name? == "confluent-kafka")'
>
> cat > blueprint.json <<'EOF'
> {
>   "name": "confluent-kafka",
>   "tag": "EXTERNAL/confluent-kafka/default/1.0.7",
>   "icon": "app://qovery-console/confluent",
>   "variables": [
>     {
>       "name": "confluent_cloud_api_key",
>       "value": "REPLACE_WITH_CONFLUENT_CLOUD_API_KEY",
>       "is_secret": true
>     },
>     {
>       "name": "confluent_cloud_api_secret",
>       "value": "REPLACE_WITH_CONFLUENT_CLOUD_API_SECRET",
>       "is_secret": true
>     },
>     {
>       "name": "cluster_name",
>       "value": "REPLACE_WITH_CLUSTER_NAME"
>     }
>   ],
>   "spec_overrides": {
>     "engine_version": "1.9.7"
>   }
> }
> EOF
> BLUEPRINT_ID=$(qovery api "environment/$ENV_ID/blueprint" --method POST --input - < blueprint.json | jq -r .id)
> rm blueprint.json   # it can hold secret values
> qovery api "blueprint/$BLUEPRINT_ID/deploy" --method POST
> qovery api "blueprint/$BLUEPRINT_ID"   # status of the latest deployment
> ```
>
> Replace each `REPLACE_WITH_` value. Add optional variables to `variables` the same way.

> [tab] Coding agent
>
> Paste this into Claude Code, Cursor, Codex or another coding agent with the [Qovery agent skills](https://www.qovery.com/docs/getting-started/quickstart/agent-skills.md) installed (`curl -fsSL https://skill.qovery.com/install.sh | bash`).
>
> ```text Prompt wrap theme={null}
> Add the Qovery Blueprint Confluent Cloud for Apache Kafka (confluent-kafka) to one of my Qovery environments and deploy it. Ask me for confluent_cloud_api_key, confluent_cloud_api_secret and cluster_name.
> Ask me before deploying to a production environment.
> Docs: https://www.qovery.com/docs/configuration/blueprints/confluent-kafka.md
> ```

You don't add any file to your repository. Qovery creates the Blueprint from the Console or the API.

## Variables and outputs

Generated from `qbm.yml` at `EXTERNAL/confluent-kafka/default/1.0.7`, the manifest the Console form is built from.

> [accordion] All 8 variables
>
> | Name | Type | Required | Default | Secret | Description |
> | - | - | - | - | - | - |
> | `confluent_cloud_api_key` | string | Yes | | Yes | Cloud-level key Terraform uses |
> | `confluent_cloud_api_secret` | string | Yes | | Yes | Confluent Cloud API secret |
> | `environment_name` | string | | `qovery` | | Confluent environment display name to create |
> | `cluster_name` | string | Yes | | | Display name, max 64 chars |
> | `availability` | string | | `SINGLE_ZONE` | | Cluster availability |
> | `cloud` | string | | `AWS` | | Cloud provider hosting the cluster |
> | `region` | string | | `us-east-2` | | Cloud region for the cluster (e.g. us-east-2 for AWS) |
> | `service_account_name` | string | | `qovery-app` | | Service account display name for the generated client API key |

Outputs become environment variables that other services in the environment can use. By default Qovery also creates an alias for each output, prefixed with the Blueprint's name; see [Aliases Qovery creates for outputs](https://www.qovery.com/docs/configuration/environment-variables.md#aliases-qovery-creates-for-outputs) for the naming rules and the cases where no alias is created.

> [accordion] All 6 outputs
>
> | Name | Secret | Description |
> | - | - | - |
> | `environment_id` | | Confluent environment ID |
> | `cluster_id` | | Kafka cluster ID (lkc-...) |
> | `bootstrap_endpoint` | | Kafka bootstrap endpoint (connect target) |
> | `rest_endpoint` | | Kafka REST proxy endpoint |
> | `kafka_api_key` | | Client Kafka API key (SASL username) |
> | `kafka_api_secret` | Yes | Client Kafka API secret (SASL password) |

> [!WARNING]
>
> Secret variables and outputs are encrypted and masked in Qovery, but Terraform can also keep their values, and values derived from them, in its state. With the Qovery-managed state backend (the default), Qovery stores the state. If you use your own backend, protect it and keep state files out of version control.

## Reference

From the Blueprint's [README](https://github.com/Qovery/service-catalog/blob/EXTERNAL/confluent-kafka/default/1.0.7/EXTERNAL/confluent-kafka/default/README.md).

Provisions a [Confluent Cloud](https://www.confluent.io/confluent-cloud/) Kafka cluster (Basic) via the official `confluentinc/confluent` provider (`~> 2.0`), along with the environment, a service account, and a client API key so an app can connect immediately.

Resource chain: `confluent_environment` → `confluent_kafka_cluster` (`basic {}`) → `confluent_service_account` → `confluent_api_key`.

### Credentials

A Confluent Cloud **API key/secret** (Cloud-level) as sensitive `confluent_cloud_api_key` / `confluent_cloud_api_secret` (`credentials.default: env`).

### Variables

#### Required

| Name | Type | Sensitive | Description |
| - | - | - | - |
| `confluent_cloud_api_key` | string | yes | Confluent Cloud API key (Cloud-level, used by the provider) |
| `confluent_cloud_api_secret` | string | yes | Cloud API secret |
| `cluster_name` | string | | Kafka cluster display name |

#### Optional

| Name | Type | Default | Description |
| - | - | - | - |
| `environment_name` | string | `qovery` | Confluent environment to create |
| `availability` | string | `SINGLE_ZONE` | `SINGLE_ZONE` or `MULTI_ZONE` |
| `cloud` | string | `AWS` | `AWS`, `AZURE`, `GCP` |
| `region` | string | `us-east-2` | Cloud region |
| `service_account_name` | string | `qovery-app` | Service account for the client API key |

### Outputs

| Name | Sensitive | Description |
| - | - | - |
| `environment_id` | | Confluent environment ID |
| `cluster_id` | | Kafka cluster ID (`lkc-...`) |
| `bootstrap_endpoint` | | Kafka bootstrap endpoint (connect here) |
| `rest_endpoint` | | Kafka REST proxy endpoint |
| `kafka_api_key` | | Client Kafka API key (SASL username) |
| `kafka_api_secret` | yes | Client Kafka API secret (SASL password) |

### Notes

* No free tier — Basic has no base cost but bills throughput/storage; Standard/Dedicated/Enterprise cost more.
* Connect with `bootstrap_endpoint` using SASL/PLAIN and the `kafka_api_key` / `kafka_api_secret`.
* Creates a **new environment** (`environment_name`); the client API key is scoped to this cluster + service account.


## Related topics

- [Blueprints](https://www.qovery.com/docs/configuration/blueprints.md)
- [Aiven for Apache Kafka](https://www.qovery.com/docs/configuration/blueprints/aiven-kafka.md)
- [Redpanda Cloud](https://www.qovery.com/docs/configuration/blueprints/redpanda-kafka.md)
- [Amazon MSK](https://www.qovery.com/docs/configuration/blueprints/aws-msk.md)
- [Cloud Credentials](https://www.qovery.com/docs/configuration/organization/cloud-credentials.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.