问题标签 [google-artifact-registry]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-cloud-platform - GCP Artifact Registry - 仅在不存在时创建 repo
我正在尝试将 repo 创建放在 Github Action for CI/CD 中。
但是,我发现我无法重复以下创建命令。
如果我在已经有 repo 的情况下执行此操作,则操作将失败。
只有在没有这样的回购的情况下,有没有一种好方法来执行创建?
google-container-registry - 如何在 Google Artifact Registry 中的项目之间复制工件
以前使用 Container Registry,可以使用此方法在项目之间复制容器
但是我无法使用 Artifact Registry 来完成这项工作。如果我尝试
它给出了错误
我已经搜索过,但找不到任何有关如何执行此操作的示例或文档。
google-cloud-platform - 如何创建令牌以从 Artifact Registry 中提取单个容器?
如何生成一个短期令牌以从 Google 的 Artifact Registry 中提取单个 Docker 容器(最好使用 Node API 生成令牌)?如何使用令牌来拉容器(例如从 Bash 命令行)?
google-cloud-platform - 如何从工件注册表(GCP)下载 jar?
我有一个 maven Artifact Registry,并且能够在 pom.xml 中添加依赖项并获取 jar。
我有另一个用例,我只想使用 CLI 下载 jar,您可以使用其他外部 maven 存储库轻松完成这些操作,例如curl https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-spark-runtime/0.7.0-incubating/iceberg-spark-runtime-0.7.0-incubating.jar --output temp.jar
我没有看到有关如何执行此操作的任何说明。
maven - 如何解决使用 jib-maven-plugin 从 Cloud Build 推送到 Google Artifact Registry 的权限?
这个问题似乎与我在 GCP 中的权限有关,但到目前为止尝试设置正确的权限还没有奏效。
我正在使用com.google.cloud.tools:jib-maven-plugin
将 Spring Boot 项目打包到容器中并将其推送到 Google Artifact Registry (GAR)。当我在本地运行它时它工作得很好,但是当我使用 Google Cloud Build 运行 maven 构建时它会失败。它说它失败了,因为artifactregistry.repositories.downloadArtifacts
缺少许可。
但这是根据Google Docs默认启用的权限之一。
我的目标是 Google Artifacts (docker) Registry。我能够将目标更改为 Google Container Registry(已弃用,因此我需要更改为 GAR),并且在 Cloud Build 下运行良好,没有权限问题。该构建还从存储在不同 GAR 中的 maven 存储库下载 jar 文件,尽管在同一个 Google 项目中。很明显,该 Maven GAR 的权限是可以的。
我验证了在本地运行 maven 构建工作,包括写入 GAR,这消除了 jib 插件配置或 GAR 配置中出现的问题。这是使用我自己的用户凭据。
我尝试了什么?
- 我将适当的角色添加到 Cloud Build 使用的默认服务帐户(尽管它们应该在那里)。该
downloadArtifacts
权限包含在角色 Artifact Registry Reader 中,因此我添加了该角色以及 Artifact Registry Writer。 - 我切换到了不同的服务帐户(构建服务帐户,我们称之为 BSA),是的,确保具有相同的适当角色(见上文)。
- 我将 BSA 作为主体添加到目标 GAR 并在那里为其赋予了适当的角色(变得绝望)
- 我的用户凭据包括所有者角色,因此我将所有者角色添加到 BSA(不是我想要保留的)
所有这些都给了我相同的权限被拒绝错误。以防万一我真的误解了一些东西,我在我的 Cloud Build yaml 中添加了一个步骤来运行gcloud info
并验证,是的,它使用的是我已经配置了我需要的角色的 BSA。
有什么我错过的吗?谢谢
...编辑更多信息。我的大多数构建都使用 jib,但一个使用 Spotify 创建本地 docker 映像,然后使用 docker 推送到注册表。这行得通!所以问题是特定于jib的。不知何故,在云构建下,jib 看不到信用,尽管它确实在本地看到了它们。
...编辑实际的错误消息:
另请注意,我使用的是最新版本的 jib:3.1.4
...编辑
我又尝试了几件事。我在 maven 构建之前添加了一个较早的步骤,它执行gcloud auth configure-docker --quiet --verbosity=debug australia-southeast1-docker.pkg.dev
. 这会创建一个/builder/home/.docker/config.json
文件。因为似乎对该文件应该真正存在的位置感到困惑,所以我将其复制到/root/.docker
. 但这并没有帮助。
我尝试的第二件事是使用$DOCKER_CONFIG
to 指向/builder/home/.docker
目录(如此处所建议),但这也无济于事。
两种情况下的错误相同。我确实收到了来自gcloud auth configure-docker...
我认为这是试图提供帮助并告诉我它找不到安装的 docker(这是真的),但它仍然创建了凭据(也是真的)。这并不重要,因为 jib 不依赖 docker 本身,只依赖于信誉。但是它仍然不起作用。
docker - 是否可以在不实际部署映像的情况下在 GCE 上配置容器优化的 OS VM?
我想构建一个 CI 管道,在将 Dockerized 应用程序上传到 Artifact Registry 并首次部署之前,基础设施阶段使用 Terraform 在 Google Compute Engine 上提供容器优化的操作系统实例。
我的 Terraform 配置:
我从 Artifact Registry 部署最新版本图像的命令:
当我省略gce-container-declaration
元数据时,我收到以下错误:
我希望能够在不指定图像的情况下配置实例gce-container-declaration
——这可能吗?我担心的是,当检测到基础架构更改时,gce-container-declaration
将部署其中的图像而不是我的应用程序的图像。
google-compute-engine - Compute Engine 部署容器
我正在使用 golang 使用Compute Engine API以编程方式创建和销毁一次性 Compute Engine 实例。
我可以很好地创建一个实例,但我真正遇到的问题是在启动时启动一个容器。
您可以从控制台 UI 执行此操作:
但据我所知,以编程方式执行此操作非常困难,尤其是使用容器优化操作系统作为基础映像时。我尝试做一个启动脚本,docker pull us-central1-docker.pkg.dev/project/repo/image:tag
但它失败了,因为你需要先做gcloud auth configure-docker us-central1-docker.pkg.dev
它才能工作,而 COOS 没有 gcloud 也没有包管理器来获取它。
我所有的解决方法似乎都很老套:
- 手动创建具有所需容器的 VM 模板并创建模板的实例
- 将容器放在外部注册表中,如 docker hub(不可接受)
- 使用带有包管理器的 Ubuntu 而不是 COOS,这样我就可以在启动时以编程方式安装 gcloud、docker 和容器
- 使用 COOS 从 dockerhub 中拉下包含 gcloud 的映像,然后执行某种 docker-in-docker mount 以将其拉下
我是否遗漏了什么,或者在不使用 gcloud 或控制台 UI 的情况下将容器部署到计算引擎实例真的很麻烦?
google-cloud-build - 谷歌云构建器图像是否已移至 Artifact Registry?
Google Cloud Builders是否有更新的位置?Google 鼓励我们从 Google Container Registry 转移到 Artifact Registry,但 Cloud Builder 映像仍然通过例如gcr.io/cloud-builders/mvn:3.5.0-jdk-8
Container Registry 地址来寻址。我正在修改我的所有构建以使用 Artifact Registry,我宁愿不必再通过它们来更改这些gcr.io/cloud-builders...
引用。
有人知道吗?
google-cloud-platform - 如何将自定义 Cloud Builders 与来自 Google Artifact Repository 的图像一起使用
如何在 Cloud Build 中使用自定义构建器映像,该映像存储在 Artifact Registry(而不是 Container Registry)的存储库中?
我在 Cloud Build 中设置了一个管道,其中一些 python 代码使用官方 python 图像执行。因为我想缓存我的 python 依赖项,所以我想创建一个自定义 Cloud Builder,如官方文档中所示。
GCP 明确表示要切换到 Artifact Registry,因为 Container Registry 将被前者取代。因此,我已将我的 docker 镜像推送到 Artifact Registry。我还向我的 Cloud Builder 服务帐户授予了 Artifact Registry 的读取权限。
在这样的 Cloud Build 步骤中使用图像
引发以下错误
步骤#0 - “install_dependencies”:拉取镜像:europe-west3-docker.pkg.dev/xxxx/yyyy:latest 步骤#0 - “install_dependencies”:来自守护进程的错误响应:europe-west3-docker.pkg.dev 的清单/xxxx/yyyy:latest not found: manifest unknown: 未找到请求的实体。
“xxxx”是存储库名称,“yyyy”是我的图像的名称。标签“最新”存在。我可以在本地提取图像并访问存储库。
我找不到任何关于如何从 Artifact Registry 集成这些图像的文档。只有这个官方指南,其中镜像是使用 Container Registry 中的 Docker 镜像构建的——但这不应该是未来的证明。