0

My ConfigMap is obsessed with connecting to my localhost and I want it to connect to Google Cloud.

Question: How do I get my Config Map to connect to GCP?

Below is the error I am getting from terraform apply Error: Post "http://localhost/api/v1/namespaces/default/configmaps": dial tcp [::1]:80: connect: connection refused

This is my ConfigMap module main.tf:

resource "kubernetes_config_map" "patshala_config_map" {
  metadata {
    name = "backend-config-files"
    namespace = "default"
    labels = {
      app = "patshala"
      component = "backend"
    }
  }

  data = {
    "patshala-service-account.json" = file(var.gcp_service_account),
    "swagger.html" = file(var.swagger_file_location),
    "openapi-v1.0.yaml" = file(var.openapi_file_location)
  }
}

This is my Kubernetes module main.tf:

# Retrieve an access token as the Terraform runner
data "google_client_config" "provider" {}

data "google_container_cluster" "gke_cluster_data" {
  name     = var.cluster_name
  location = var.location
}

# Define the Kubernetes provider to manage Kubernetes objects
provider "kubernetes"  {

  # Set the Kubernetes API server endpoint to the GKE cluster's endpoint
  host  = "https://${data.google_container_cluster.gke_cluster_data.endpoint}"

  # Use the access token from the Google Cloud client configuration
  token = data.google_client_config.provider.access_token

  # Retrieve the cluster's CA certificate for secure communication
  cluster_ca_certificate = base64decode(
    data.google_container_cluster.gke_cluster_data.master_auth[0].cluster_ca_certificate,
  )
}

This is my root main.tf bringing everything together:

provider "google" {
  project     = var.project_id
  region      = var.region
  zone        = var.zone
}

module "gke_cluster" {
  source = "./modules/gke_cluster"
  machine_type = var.machine_type
  node_count = var.node_count
}

module "kubernetes" {
  source = "./modules/kubernetes"
}

module "config_map" {
  source = "./modules/config_map"
  gcp_service_account = var.gcp_service_account
  spec_folder = var.spec_folder
  openapi_file_location = var.openapi_file_location
  swagger_file_location = var.swagger_file_location
  cluster_name = module.gke_cluster.cluster_name
  depends_on = [module.gke_cluster, module.kubernetes]
}

module "secret_manager" {
  source      = "./modules/secret_manager"
  db_password = var.db_password
  stripe_key_pub = var.stripe_secret_key
  stripe_key_secret = var.stripe_pub_key
  gcp_service_account = var.gcp_service_account
  depends_on = [module.config_map]
}

module "patshala_db" {
  source = "./modules/database"
  region = var.region
  db_user = var.db_user
  db_password = module.secret_manager.db_password_id
  db_name = var.db_name
  db_version = var.db_version

  depends_on = [module.secret_manager]
}

module "backend_app" {
  source = "./modules/backend"
  gke_cluster_name = module.gke_cluster.cluster_name
  project_id = var.project_id
  region = var.region
  app_image = var.app_image

  db_host = module.patshala_db.db_public_ip
  db_name    = var.db_name
  db_user = var.db_user
  db_password = module.secret_manager.db_password_id

  environment         = var.environment
#  service_account_file = module.config_map.service_account_file
#  openapi_file        = module.config_map.openapi_file
#  swagger_file        = module.config_map.swagger_file
  stripe_pub_key      = module.secret_manager.stripe_key_pub_id
  stripe_secret_key   = module.secret_manager.stripe_key_secret_id

  db_port    = var.db_port
  server_port = var.server_port

  depends_on = [module.patshala_db]
}

These are my logs:

2023-10-29T11:14:41.294-0500 [ERROR] provider.terraform-provider-kubernetes_v2.23.0_x5: Response contains error diagnostic: @module=sdk.proto diagnostic_detail= tf_provider_addr=registry.terraform.io/hashicorp/kubernetes tf_resource_type=kubernetes_config_map tf_proto_version=5.3 tf_req_id=a9d34e91-aeb2-2a6a-0168-2c7f9068aafc tf_rpc=ApplyResourceChange @caller=github.com/hashicorp/[email protected]/tfprotov5/internal/diag/diagnostics.go:55 diagnostic_severity=ERROR diagnostic_summary="Post "http://localhost/api/v1/namespaces/default/configmaps": dial tcp 127.0.0.1:80: connect: connection refused" timestamp=2023-10-29T11:14:41.293-0500
2023-10-29T11:14:41.322-0500 [ERROR] vertex "module.config_map.kubernetes_config_map.patshala_config_map" error: Post "http://localhost/api/v1/namespaces/default/configmaps": dial tcp 127.0.0.1:80: connect: connection refused
2023-10-29T11:14:41.347-0500 [DEBUG] provider.stdio: received EOF, stopping recv loop: err="rpc error: code = Unavailable desc = error reading from server: EOF"
2023-10-29T11:14:41.350-0500 [DEBUG] provider: plugin process exited: path=.terraform/providers/registry.terraform.io/hashicorp/kubernetes/2.23.0/darwin_amd64/terraform-provider-kubernetes_v2.23.0_x5 pid=6649
2023-10-29T11:14:41.350-0500 [DEBUG] provider: plugin exited
2
  • Maybe try to add scopes to your google provider like scopes = ["https://www.googleapis.com/auth/bigquery"] - should be kubernetes in your case. Commented Oct 25, 2023 at 7:51
  • 2
    Debug logs help here. Add TF_LOG=trace before terraform apply, redact any sensitive information & post the logs.. Commented Oct 26, 2023 at 7:45

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.