Data sources

Terraform data sources let you retrieve read-only information from existing Cloudfleet resources so you can reference them elsewhere in your configuration. They’re especially useful when you need to connect to an existing cluster, fleet, or use client credentials without managing those resources directly in your Terraform code. This allows for more flexible and modular setups, where infrastructure is shared or managed outside of the current deployment workflow.

cloudfleet_cfke_cluster

Retrieves information about an existing CFKE cluster.

Required arguments:

  • id - Cluster identifier

Available attributes:

  • name - Cluster name
  • region - Cluster region
  • endpoint - Kubernetes API endpoint
  • certificate_authority - Base64 encoded CA certificate
  • kubernetes_version - Current Kubernetes version
  • status - Cluster status
  • created_at - Creation timestamp
  • updated_at - Last update timestamp

Example:

data "cloudfleet_cfke_cluster" "existing" {
  id = "b3618d0a-5a46-4e23-a583-2c79171b31a0"
}

# Use cluster information in outputs
output "cluster_info" {
  value = {
    name               = data.cloudfleet_cfke_cluster.existing.name
    status             = data.cloudfleet_cfke_cluster.existing.status
    kubernetes_version = data.cloudfleet_cfke_cluster.existing.kubernetes_version
    region             = data.cloudfleet_cfke_cluster.existing.region
    endpoint           = data.cloudfleet_cfke_cluster.existing.endpoint
  }
}

# Configure kubectl provider using cluster data
provider "kubectl" {
  host                   = data.cloudfleet_cfke_cluster.existing.endpoint
  cluster_ca_certificate = base64decode(data.cloudfleet_cfke_cluster.existing.certificate_authority)
  token                  = data.cloudfleet_client_config.me.access_token
}

cloudfleet_cfke_fleet

Retrieves information about an existing CFKE fleet.

Required arguments:

  • id - Fleet identifier
  • cluster_id - Cluster identifier the fleet belongs to

Available attributes:

  • name - Fleet name
  • limits - Resource limits configuration
    • cpu - CPU limit in cores
  • aws - AWS configuration (if enabled)
    • enabled - Whether AWS fleet is enabled
    • role_arn - AWS IAM role ARN
  • gcp - GCP configuration (if enabled)
    • enabled - Whether GCP fleet is enabled
    • project_id - GCP Project ID
  • hetzner - Hetzner configuration (if enabled)
    • enabled - Whether Hetzner fleet is enabled

Example:

data "cloudfleet_cfke_fleet" "existing" {
  id         = "my-fleet"
  cluster_id = "b3618d0a-5a46-4e23-a583-2c79171b31a0"
}

# Display fleet configuration information
output "fleet_info" {
  value = {
    name       = data.cloudfleet_cfke_fleet.existing.name
    cluster_id = data.cloudfleet_cfke_fleet.existing.cluster_id

    # AWS configuration (if enabled)
    aws_enabled  = data.cloudfleet_cfke_fleet.existing.aws != null ? data.cloudfleet_cfke_fleet.existing.aws.enabled : false
    aws_role_arn = data.cloudfleet_cfke_fleet.existing.aws != null ? data.cloudfleet_cfke_fleet.existing.aws.role_arn : null

    # GCP configuration (if enabled)
    gcp_enabled    = data.cloudfleet_cfke_fleet.existing.gcp != null ? data.cloudfleet_cfke_fleet.existing.gcp.enabled : false
    gcp_project_id = data.cloudfleet_cfke_fleet.existing.gcp != null ? data.cloudfleet_cfke_fleet.existing.gcp.project_id : null

    # Hetzner configuration (if enabled)
    hetzner_enabled = data.cloudfleet_cfke_fleet.existing.hetzner != null ? data.cloudfleet_cfke_fleet.existing.hetzner.enabled : false

    # Resource limits
    cpu_limit = data.cloudfleet_cfke_fleet.existing.limits != null ? data.cloudfleet_cfke_fleet.existing.limits.cpu : null
  }
}

cloudfleet_client_config

Retrieves current Cloudfleet client configuration for authentication. This data source is essential for configuring other providers (like kubernetes or kubectl) to connect to your CFKE clusters.

Available attributes:

  • access_token - OAuth2 access token for API authentication
  • organization_id - Organization ID from JWT token
  • user - Authenticated user email address

Example:

# Get current client configuration
data "cloudfleet_client_config" "me" {}

# Create a CFKE cluster
resource "cloudfleet_cfke_cluster" "example" {
  name   = "my-cluster"
  region = "europe-central-1a"
  tier   = "basic"
}

# Configure Kubernetes provider using cluster connection details and client credentials
provider "kubernetes" {
  host                   = cloudfleet_cfke_cluster.example.endpoint
  cluster_ca_certificate = base64decode(cloudfleet_cfke_cluster.example.certificate_authority)
  token                  = data.cloudfleet_client_config.me.access_token
}

# Example: Create a namespace using the configured kubernetes provider
resource "kubernetes_namespace" "example" {
  metadata {
    name = "my-application"
  }
}

# Output current user information
output "current_user" {
  value = {
    user            = data.cloudfleet_client_config.me.user
    organization_id = data.cloudfleet_client_config.me.organization_id
  }
}