/terraform-confluent-kafka-cluster

Terraform module for Confluent Cloud Kafka clusters

Primary LanguageHCLMIT LicenseMIT

Terraform module for Confluent Cloud Kafka clusters

  • cluster.availability => SINGLE_ZONE or MULTI_ZONE
  • cluster.cloud => GCP, AWS or AZURE
  • cluster.type => BASIC or STANDARD or DEDICATED
    • for DEDICATED clusters, cluster.cku must be set

Usage

Set the Confluent provider:

module "cluster" {
    for_each        = { for cluster in var.confluent.environment.network.clusters : cluster.display_name => cluster }
    source          = "github.com/mcolomerc/terraform-confluent-kafka-cluster"
    environment     = var.confluent.environment.id
    cluster         = each.value
    network         = module.network.private_link_confluent_network.id 
    providers = {
      confluent.confluent_cloud = confluent
    }
  }

Where cluster can be defined as:

     clusters = [
          {
            display_name = "mcolomer-standard-inventory_dev1"
            availability = "MULTI_ZONE"
            cloud        = "AWS"
            region       = "eu-central-1"
            type         = "DEDICATED"
            cku          = "2" 
          }
        ] 

Requirements

Name Version
terraform >= 1.3.0
confluent >=1.51.0

Providers

Name Version
confluent 1.21.0

Modules

No modules.

Resources

Name Type
confluent_api_key.service_account_kafka_api_key resource
confluent_kafka_cluster.cluster resource
confluent_kafka_cluster_config.cluster_config resource
confluent_role_binding.saccount_role resource
confluent_environment.env data source
confluent_service_account.service_account data source

Inputs

Name Description Type Default Required
byok Confluent BYOK ID string "" no
cluster Cluster definition
object({
display_name = string
availability = string
cloud = string
region = string
type = string
cku = optional(string)
config = optional(map(string))
})
n/a yes
environment Confluent Cloud Environment string n/a yes
network Confluent Cloud Network ID string "" no
service_account Service Account and Role for cluster management.
object({
name = string
role = string
})
null no

Outputs

Name Description
cluster n/a