创建一个能够从容器注册表中提取的 Docker 就绪计算引擎

2024-04-30

我们使用 terraform 设置 GCE 实例,然后使用 ansible-playbooks 来配置它们并将我们的服务转移到机器上。

我正在我们的组织中运行一个项目,该项目需要从另一个项目中提取 Docker 映像。这些图像托管在另一个项目的容器注册表中。

我理想的事件顺序是:

  1. 使用 terraform 和正确配置的服务帐户在我的项目中创建 GCE。
  2. 使用ansible在GCE上安装docker。
  3. 使用ansible模块docker_container从容器注册表中提取我想要的必要图像。

这个看似简单的工作流程其实并不简单。起初,我发现仅运行 docker_container 就会失败,因为 docker 需要首先进行身份验证。鉴于我不想登录计算机并使用凭据助手等进行设置,我唯一的方法就是尝试运行命令docker login -u _json_key -p<jsonkeyfile> http://gcr.io

如果我登录到有问题的机器,但尝试使用 ansible 运行它,我可以让它直接在命令行上运行docker-login让我做噩梦单独的问题 https://stackoverflow.com/questions/57260374/docker-login-to-gce-using-ansible-docker-login-and-json-key所以我想完全避免它。 GCE 实例是使用在创建过程中预先配置的专用服务帐户(使用 terraform)创建的。所有角色都已授予该帐户,因为如果我从命令行使用服务帐户密钥,我可以登录并提取图像。

我真正期望的是,在上面的步骤 1 中,如果我使用具有所有正确凭据的 google 服务帐户,则 GCE 实例应该已经设置为与容器注册表通信。 有没有办法让它纯粹作为启动配置的一部分工作? 我调查了https://cloud.google.com/container-optimized-os/docs/ https://cloud.google.com/container-optimized-os/docs/但我还不想使用 chromeOS,此外我也不知道它是否会开箱即用,尽管阅读文档感觉如此。

有没有办法预先设置一个 docker 就绪的 GCE 实例?如果没有,是否有人尝试过使用基于 ansible 的工作流程docker login并让它发挥作用吗?


你应该利用(使用容器优化的操作系统!)而不是手动安装 Docker 并配置它。这允许在引导过程中拉取并启动映像。对于身份验证,您应该能够授权您的Compute Engine 默认服务帐号 https://cloud.google.com/compute/docs/access/service-accounts#compute_engine_default_service_account甚至可以从另一个项目访问 GCR 中的图像。或者创建并使用专用服务帐户,请参阅this doc https://cloud.google.com/sdk/gcloud/reference/auth/activate-service-account关于如何在实例中激活它。另请参阅here https://cloud.google.com/iam/docs/granting-roles-to-service-accounts关于向服务账户授予 IAM 角色。

要使用 Docker 映像创建 Compute Engine 实例,您可以使用以下命令Gcloud命令 https://cloud.google.com/sdk/gcloud/reference/beta/compute/instances/create-with-container(不确定 Ansible 是否有等效的)

gcloud beta compute instances create-with-container

注意:考虑在 ServerFault 中发布此类问题,因为它将针对网络和系统管理员受众。 StackOverflow更适合开发者社区。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建一个能够从容器注册表中提取的 Docker 就绪计算引擎 的相关文章

随机推荐

  • 如何在文件中固定数量的字符后插入换行符

    我正在寻找一个 bash 或 sed 脚本 最好是单行脚本 用它可以在巨大的文本文件中的固定数量的字符之后插入一个新行字符 像这样的事情怎么样 Change 20 是换行符之前的字符数 temp text 是要替换的文件 sed e s 2
  • 与 NA 匹配的值 - 缺失值 - 使用 mutate

    我有点卡住了 有没有比下面更好的方法来进行值匹配 将 NA 视为 实际值 mutate library dplyr data foo lt data frame A c 1 2 NA 4 NA B c 1 3 NA NA 4 不是所需的输出
  • 如何从 XBAP 关闭浏览器?

    我正在完全信任地使用 XBAP 应用程序 单击按钮时 我需要关闭托管 XBAP 的浏览器 我怎样才能实现这个目标 Application Currenty ShutDown 仅关闭应用程序 使浏览器保持空白 我知道这是一个非常老的问题 但如
  • 文件保存期间语法突出显示随机消失

    我正在使用 vim 编辑一些 python 文件 最近偶尔会出现在 vim 中保存缓冲区后语法高亮消失的情况 我尝试重置syntax on and set filetype python但无济于事 我根本不知道是什么原因导致了这个问题 所以
  • 如何从 WP_User 对象获取 WordPress 用户的名字?

    我正在写一个基本的插件 这是我的代码 new user get userdata user id user id is passed as a parameter first name1 new user gt user firstname
  • TextField“更改”事件仅在模糊时触发

    通常 Change 事件将在 TextField 失去焦点 模糊 后触发 但我需要它在字段值发生变化时立即触发 而不需要失去对该字段的关注 KeyListener 不会删除它 因为该值可能来自条形码扫描仪等 有什么办法可以做到这一点吗 提前
  • 更新到 Android SDK 工具 R22

    我也将 SDK 工具和 ADT 插件更新到了 R22 在更新之前一切都运行良好 但从那以后 我遇到了问题 基本上我有 2 个库项目和一个应用程序项目 我的一个库项目在 libs 文件夹中包含一些 jar 文件 这些 jar 之一在应用程序项
  • 路由器解析器不渲染组件

    我有这个路由器解析器来从 Google Firestore 检索数据 我正在尝试使用解析器来提前获取数据 当我将调试器放置在解析函数中时 它会显示从服务器检索的数据 但它永远不会从resolve 方法返回 谁能帮我一下 路由模块 const
  • 使用 javascript 复制到所有浏览器的剪贴板

    我试图让 复制到剪贴板 适用于所有浏览器 但运气不好 我正在使用 javascript 但我不想使用零剪贴板 http zeroclipboard org to do 请让我们知道我的代码有什么问题 感谢您的帮助 下面是代码 目前我的代码仅
  • jQuery 创建多维数组

    我花了很长时间试图弄清楚如何在 jQuery 中创建多维数组 我在循环之外实例化数组 在循环内部我想添加数组元素 i 0 loop start
  • 在 C 中释放 NULL 指针是一个好习惯吗? [复制]

    这个问题在这里已经有答案了 可能的重复 ptr 为 NULL 的 free ptr 是否会损坏内存 https stackoverflow com questions 1938735 does freeptr where ptr is nu
  • Libsourcey 缺少 -fPIC 编译错误

    我正在尝试运行 LibSourcey 以使用 Webrtc 流服务器 问题是我似乎无法让它发挥作用 我努力在我的 Ubuntu 16 04 上 cmake 该项目 cmake 文件中的正则表达式 但现在它已修复 我实际上遇到的问题是编译时的
  • 基本身份验证:是否可以像 getRemoteUser() 一样设置RemoteUser

    您好 我正在使用基本身份验证方法来保护我的 Web 应用程序中的某些页面 其中有指定的 url 模式如下
  • 起订量中的匹配设置问题

    我过去一周左右一直在使用 Moq 直到今天才遇到任何问题 我在获取时遇到问题VerifyAll 以正确匹配我的模拟的设置 我目前正在为我的应用程序的 API 编写单元测试 该应用程序的结构如下 API lt gt Service lt gt
  • android 中的 onSensorChanged 在模拟器中不断触发

    我正在使用 ACCELEROMETER 传感器 并已通过相同的方式注册了一个侦听器 mSensorManager SensorManager getSystemService Context SENSOR SERVICE mAccelera
  • gradle - 从 url 下载并解压文件

    从 url 下载和解压文件的正确 gradle 方法是什么 http 如果可能的话 我想防止每次运行任务时重新下载 在ant get可以通过以下方式实现skipexisting true 我当前的解决方案是 task foo ant get
  • Xcode 4.x - 使其指向有问题的崩溃行

    每次 Xcode 崩溃时 它都会指向 main m 上的这一行 int retVal UIApplicationMain argc argv nil AppController 我知道 Xcode 4 调试与 3 x 相比很糟糕 但是我如何
  • 带有 CompletableFuture 的 MDC 记录器

    我正在使用 MDC Logger 除了一种情况外 它对我来说非常适合 无论我们在代码中的何处使用 CompletableFuture 对于创建的线程 MDC 数据都不会传递到下一个线程 因此日志会失败 例如 在代码中我使用下面的代码片段来创
  • 使用适用于 IE7 和 IE8 的 jQuery 在 Facebox 中加载 FLV

    不用说 这在 Chrome Firefox 和 Safari 中完美运行 IE 任何版本 都是问题所在 客观的 我正在尝试加载 JWplayer 它会在 Facebox 弹出窗口中加载来自 S3 的 FLV jQuery document
  • 创建一个能够从容器注册表中提取的 Docker 就绪计算引擎

    我们使用 terraform 设置 GCE 实例 然后使用 ansible playbooks 来配置它们并将我们的服务转移到机器上 我正在我们的组织中运行一个项目 该项目需要从另一个项目中提取 Docker 映像 这些图像托管在另一个项目