terraform - 在 yaml 中挂载一个目录

terraform - mounting a directory in yaml

我正在管理 goole 云平台上的实例,并使用 terraform 脚本将 docker 图像部署到 GCP 中。我现在使用 Terraform 脚本遇到的问题是,当启动 docker 图像时,将主机目录安装到 docker 容器中。

如果我可以手动 运行 一个 docker 命令,我可以做这样的事情。

docker run -v <host_dir>:<container_local_path> -it <image_id>

但是我需要在Terraform Yaml 中配置挂载目录。这是我的 Terraform YAML 文件。

spec:
  containers:
    - name: MyDocker
      image: "docker_image_name"
      ports:
        - containerPort: 80
          hostPort: 80

我在主机中有一个目录 (/www/project/data)。该目录需要挂载到 docker 容器中。

有人知道如何将这个目录挂载到这个 yaml 文件中吗?

或者任何变通方法都值得赞赏。

谢谢。

我假设您正在将 Docker 图像加载到基于容器的计算引擎中。我的建议是确定使用 GCP 控制台手动创建 GCE 映像和安装磁盘的方法。以下内容将提供有关该任务的指导。

https://cloud.google.com/compute/docs/containers/configuring-options-to-run-containers#mounting_a_host_directory_as_a_data_volume

一旦您能够手动实现所需的 GCP 环境,似乎有一个方法可以将其转换为 Terraform 脚本,如下所述:

https://github.com/terraform-providers/terraform-provider-google/issues/1022

高级配方似乎是在计算引擎配置的元数据中找到 docker 命令和规范的配置。我们可以通过 运行 手动命令并查看可以实现该目标的 REST 请求来找到所需的元数据。一旦我们知道了元数据,我们就可以将其转录为 Terraform 脚本中的等效设置,以便由 Terraform 添加。

我找到了答案。请确保 'dataDir' 名称必须在 'volumeMounts and volumes'.

之间匹配
      volumeMounts:
       - name: 'dataDir'
         mountPath: '/data/'
  volumes:
  - name: 'dataDir'
    hostPath:
      path: '/tmp/logs'