google-cloud-platform - 使用 terraform 将容器映像从一个 Google 项目复制到另一个
问题描述
我在说“项目 A”的容器注册表中有一个图像,并希望将其复制到“项目 B”的容器注册表中。我该如何使用 terraform 呢?
解决方案
我认为你不应该,但这并不意味着你不能。
Don't Terraform 是管理基础设施 的绝佳工具;它不适合与数据或应用程序代码交互。这两者之间的界限可能很难划清,尤其是对于 GCP 的高级服务,如 AppEngine、Cloud Run 等,但是 imo,在容器注册表可以被视为基础设施的情况下,容器镜像应该被视为数据(或代码),而不是在 Terraform 中进行管理。不要这样做!
但我真的很想……
嘿,我该评判谁?也许您的特定问题有些我不知道。没有用于复制图像或与图像交互的 GCP 资源,但您可以将 GCR 作为通用容器注册表进行交互。您可以使用社区模块neomantra/mirror/docker
。它的来源很容易阅读和适应;它使用该
docker_image
资源将远程图像拉到您的本地计算机,然后将图像适时local-exec
地传送docker push
到其目的地。
示例用法:
module "docker-mirror-vault" {
source = "github.com/neomantra/terraform-docker-mirror?ref=v0.4.0"
image_name = "myexample"
image_tag = "latest"
source_prefix = "us.gcr.io/my-one-gcp-project"
dest_prefix = "us.gcr.io/my-other-gcp-project"
}
您可以选择使用数据资源google_container_registry_image
来构建 Container Registry 中图像的句柄。
仅供参考,如果您要迁移,请考虑迁移到 Artifact Registry,因为 Google 正在弃用 Container Registry,转而支持 Artifact Registry。
推荐阅读
- node.js - 在 lambdas/箭头函数中抛出没有大括号的错误
- python - 熊猫查询没有返回正确的DataFrame Python
- android - Socket/DataOutputStream/DataInputStream 可以打包吗?
- c++ - 使用 Rcpp 模块向 R 公开简单的 C++ Student 类
- python - argparse and custom Actions - code path not obvious
- sql - 过滤具有一对多父子映射的表的最有效方法
- sql - Alter Table Column Type 在 Aster 中不起作用 - 我可能搞砸了
- c# - 如何在 C# 中实例化整个 XAML Grid 对象?
- r - 使用 R 从 csv 文件分配树尖标签
- java - 编译器是否违反了范围规则?