首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform,错误409: Cloud实例已经存在

Terraform,错误409: Cloud实例已经存在
EN

Stack Overflow用户
提问于 2022-09-03 13:34:01
回答 1查看 318关注 0票数 0

你好,我是新来的。尝试配置在GCP中的Kubernetes上运行的Wordpress服务。

我有一个variable.tf文件和一个main.tf文件

当我应用tf文件时,我会得到这个错误:

代码语言:javascript
复制
│ Error: Error, failed to create instance mysql: googleapi: Error 409: The Cloud SQL instance already exists., instanceAlreadyExists
│
│   with google_sql_database_instance.sqldb_1Instance,
│   on main.tf line 29, in resource "google_sql_database_instance" "sqldb_1Instance":
│   29: resource "google_sql_database_instance" "sqldb_1Instance" {

我试过“地形状态rm”。没起作用。我在tf文件上只有一个db实例,为什么会发生这种情况?我怎么才能修好它?

main.tf:

代码语言:javascript
复制
terraform {
  required_providers {
    kubernetes = {
      source  = "hashicorp/kubernetes"
      version = ">= 2.0"
    }
  }
}

// Configure the Google Cloud provider
provider "google" {
 credentials = file("gproject-360616-1decd194ddc5.json")
 project     = var.project_id
}

provider "helm" {
  kubernetes {
  }
}

//Creating First VPC Network
resource "google_compute_network" "vpc_network" {
  name        = "enuygun-vpc"
  description = "VPC Network for WordPress"
  project     = var.project_id
}

//Configuring SQL Database instance
resource "google_sql_database_instance" "sqldb_1Instance" {
  name             = "mysql"
  database_version = "MYSQL_5_6"
  region           = var.region

  settings {

    ip_configuration {
      ipv4_enabled = true

      authorized_networks {
        name  = "sqlnet"
        value = "0.0.0.0/0"
      }
    }
  }
}

//Creating SQL Database
resource "google_sql_database" "sql_db" {
  name     = var.database
  instance = google_sql_database_instance.sqldb_1Instance.name

  depends_on = [
    google_sql_database_instance.sqldb_1Instance
  ]  
}

//Creating SQL Database User
resource "google_sql_user" "dbUser" {
  name     = var.db_user
  instance = google_sql_database_instance.sqldb_1Instance.name
  password = var.db_user_pass

  depends_on = [
    google_sql_database_instance.sqldb_1Instance
  ]
}

//Creating Container Cluster
resource "google_container_cluster" "gke_cluster" {
  name     = "my-cluster"
  description = "My GKE Cluster"
  project = var.project_id
  location = var.region
  network = google_compute_network.vpc_network.name
  remove_default_node_pool = true
  initial_node_count       = 1

}

//Creating Node Pool For Container Cluster
resource "google_container_node_pool" "nodepool" {
  name       = "my-node-pool"
  project    = var.project_id
  location   = var.region
  cluster    = google_container_cluster.gke_cluster.name
  node_count = 1

  node_config {
    preemptible  = true
    machine_type = "e2-micro"
  }

  autoscaling {
    min_node_count = 1
    max_node_count = 3
  }

  depends_on = [
    google_container_cluster.gke_cluster
  ]
}

//Configure Kubectl with Our GCP K8s Cluster
resource "null_resource" "configure_kubectl" {
  provisioner "local-exec" {
    command = "gcloud container clusters get-credentials ${google_container_cluster.gke_cluster.name} --region ${google_container_cluster.gke_cluster.location} --project ${google_container_cluster.gke_cluster.project}"
  }  

  depends_on = [
    google_container_cluster.gke_cluster
  ]
}

//WordPress Deployment
resource "kubernetes_deployment" "wp-dep" {
  metadata {
    name   = "wp-dep"
    labels = {
      env     = "Production"
    }
  }

  spec {
    replicas = 1
    selector {
      match_labels = {
        pod     = "wp"
        env     = "Production"
      }
    }

    template {
      metadata {
        labels = {
          pod     = "wp"
          env     = "Production"
        }
      }

      spec {
        container {
          image = "wordpress"
          name  = "wp-container"

          env {
            name  = "WORDPRESS_DB_HOST"
            value = "${google_sql_database_instance.sqldb_1Instance.ip_address.0.ip_address}"
          }
          env {
            name  = "WORDPRESS_DB_USER"
            value = var.db_user
          }
          env {
            name  = "WORDPRESS_DB_PASSWORD"
            value = var.db_user_pass
          }
          env{
            name  = "WORDPRESS_DB_NAME"
            value = var.database
          }
          env{
            name  = "WORDPRESS_TABLE_PREFIX"
            value = "wp_"
          }

          port {
            container_port = 80
          }
        }
      }
    }
  }

  depends_on = [
    google_container_cluster.gke_cluster,
    google_container_node_pool.nodepool,
    null_resource.configure_kubectl
  ]
}

//Creating LoadBalancer Service
resource "kubernetes_service" "wpService" {
  metadata {
    name   = "wp-svc"
    labels = {
      env     = "Production" 
    }
  }  

  spec {
    type     = "LoadBalancer"
    selector = {
      pod = "${kubernetes_deployment.wp-dep.spec.0.selector.0.match_labels.pod}"
    }

    port {
      name = "wp-port"
      port = 80
    }
  }

  depends_on = [
    kubernetes_deployment.wp-dep,
  ]
}
EN

回答 1

Stack Overflow用户

发布于 2022-09-03 15:50:54

好像是个窃听器,现在起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73592648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档