Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 部署无效的地形+;Kubernetes:spec.template.spec.containers[0]。envFrom:无效值:“0”&引用;_Mongodb_Kubernetes_Terraform - Fatal编程技术网

Mongodb 部署无效的地形+;Kubernetes:spec.template.spec.containers[0]。envFrom:无效值:“0”&引用;

Mongodb 部署无效的地形+;Kubernetes:spec.template.spec.containers[0]。envFrom:无效值:“0”&引用;,mongodb,kubernetes,terraform,Mongodb,Kubernetes,Terraform,我正在试验terraform来部署k8s资源 我创建了一个mongodb部署 provider "kubernetes" { config_context = "kubernetes-admin@kubernetes" } resource "kubernetes_namespace" "demo-namespace" { metadata { name = "my-demo-namesp

我正在试验terraform来部署k8s资源

我创建了一个mongodb部署

provider "kubernetes" {
  config_context = "kubernetes-admin@kubernetes"
}

resource "kubernetes_namespace" "demo-namespace" {
  metadata {
    name = "my-demo-namespace"
  }
}
// mongodb
resource "kubernetes_deployment" "mongodb" {
  metadata {
    name = "mongodb"
    namespace = kubernetes_namespace.demo-namespace.metadata[0].name
    labels = {
      app = "mongodb"
    }
  }

  spec {
    replicas = 1

    selector {
      match_labels = {
        app = "mongodb"
      }
    }

    template {
      metadata {
        labels = {
          app = "mongodb"
        }
      }

      spec {
        container {
          image = "mongo"
          name  = "mongodb"

          env_from { 
            secret_ref {
              name = kubernetes_secret.scrt-mongodb.metadata[0].name
            }
            config_map_ref {
              name = kubernetes_config_map.cm-mongodb.metadata[0].name  
            }
          }

          resources {
            limits {
              cpu    = "500m"
              memory = "1Gi"
            }
            requests {
              cpu    = "150m"
              memory = "256Mi"
            }
          }

          liveness_probe {
            exec {
              command =  ["bash", "-c", "mongo -u $MONGO_INITDB_ROOT_USERNAME -p $MONGO_INITDB_ROOT_PASSWORD --eval db.adminCommand(\"ping\")"]
            }
            initial_delay_seconds = 3
            period_seconds        = 1
          }
        }
      }
    }
  }
}

// mongodb configmap
resource "kubernetes_config_map" "cm-mongodb" {
  metadata {
    name = "cm-mongodb"
    namespace = kubernetes_namespace.demo-namespace.metadata.0.name
  }

  // improve creds with secret
  data = {
    MONGO_INITDB_DATABASE = "movies"
  }
}

// monbodb secret
resource "kubernetes_secret" "scrt-mongodb" {
  metadata {
    name = "mongodb-creds"
  }

  data = {
    MONGO_INITDB_ROOT_USERNAME = "root-user"
    MONGO_INITDB_ROOT_PASSWORD = "secret"
  }

  type = "opaque"
}
这在以下情况下失败:

kubernetes_config_map.cm-mongodb: Creation complete after 0s [id=my-demo-namespace/cm-mongodb]
kubernetes_deployment.mongodb: Creating...

Error: Failed to create deployment: Deployment.apps "mongodb" is invalid: spec.template.spec.containers[0].envFrom: Invalid value: "": may not have more than one field specified at a time

  on template.tf line 12, in resource "kubernetes_deployment" "mongodb":
  12: resource "kubernetes_deployment" "mongodb" {
这里怎么了?

您错过了这一行:

namespace = kubernetes_namespace.demo-namespace.metadata.0.name
您没有在所需名称空间中定义资源,因此terraform无法“找到”所需的值


//蒙博德秘密
资源“kubernetes_机密”“scrt mongodb”{
元数据{
name=“mongodb信誉”
# -------------------------------------------------------------
# -------------------------------------------------------------
#在此处添加名称空间
namespace=kubernetes_namespace.demo-namespace.metadata.0.name
# -------------------------------------------------------------
# -------------------------------------------------------------
}
数据={
MONGO_INITDB_ROOT_USERNAME=“ROOT用户”
MONGO_INITDB_ROOT_PASSWORD=“secret”
}
type=“不透明”
}
您错过了这一行:

namespace = kubernetes_namespace.demo-namespace.metadata.0.name
您没有在所需名称空间中定义资源,因此terraform无法“找到”所需的值


//蒙博德秘密
资源“kubernetes_机密”“scrt mongodb”{
元数据{
name=“mongodb信誉”
# -------------------------------------------------------------
# -------------------------------------------------------------
#在此处添加名称空间
namespace=kubernetes_namespace.demo-namespace.metadata.0.name
# -------------------------------------------------------------
# -------------------------------------------------------------
}
数据={
MONGO_INITDB_ROOT_USERNAME=“ROOT用户”
MONGO_INITDB_ROOT_PASSWORD=“secret”
}
type=“不透明”
}

谢谢,我已经添加了它(并且我检查了它是否都部署在正确的命名空间上),但是我仍然得到了错误。嗯,我现在看到了。谢谢,我已经添加了它(并且我检查了它是否都部署在正确的命名空间上),但是我仍然得到了错误。嗯,我现在看到了