【问题标题】:Packer google cloud authentication within vpcvpc 中的 Packer 谷歌云身份验证
【发布时间】:2019-11-01 15:24:46
【问题描述】:

我们正在使用 Packer 在 GCP 计算实例中构建图像。 Packer 尝试根据项目和图像抓取图像如下:

https://www.googleapis.com/compute/v1/projects/<project-name>/global/images/<image-name>?alt=json

然后它抛出一个错误: oauth2: cannot fetch token: Post https://accounts.google.com/o/oauth2/token: dial tcp 108.177.111.84:443: i/o timeout

基于安全原则,我们的计算实例没有外部 IP 地址,因此无法访问互联网。在这种情况下,accounts.google.com 不再可访问。那么我们如何认证google apis呢?

我尝试启用防火墙规则并为互联网访问提供路由。但是根据here的要求,如果没有外部IP地址,实例仍然无法访问。

这意味着我们必须有一种单独的方式来验证 googleapis。 但是 Packer 支持吗?

这是我们的打包器生成器:

"builders": [
    {
        "type": "googlecompute",
        "project_id": "test",
        "machine_type": "n1-standard-4",
        "source_image_family": "{{user `source_family`}}",
        "source_image": "{{user `source_image`}}",
        "source_image_project_id": "{{user `source_project_id`}}",
        "region": "{{user `region`}}",
        "zone": "{{user `zone`}}",
        "network": "{{user `network`}}",
        "subnetwork": "{{user `subnetwork`}}",
        "image_name": "test-{{timestamp}}",
        "disk_size": 10,
        "disk_type": "pd-ssd",
        "state_timeout": "5m",
        "ssh_username": "build",
        "ssh_timeout": "1000s",
        "ssh_private_key_file": "./gcp-instance-key.pem",
        "service_account_email": "test-account@test-mine.iam.gserviceaccount.com",
        "omit_external_ip": true,
        "use_internal_ip": true,
        "metadata": {
            "user": "build"
        }
    }

【问题讨论】:

  • 你是如何启动你的打包脚本的? CI/CD,手动?
  • 我们正在设置它。所以暂时手动。

标签: google-cloud-platform google-api firewall google-oauth packer


【解决方案1】:

要手动执行您想要的操作,您需要在项目内的工作计算实例上或在您想要访问的计算所在的网络上启用对等互连的 vpc 中打开 ssh 隧道。

如果您随后将 CI 与 gitlab-ci 之类的运行器一起使用,请确保在同一 vpc 或具有对等互连的 vpc 中创建运行器。

如果您不想使用外部 ip 创建计算,您可以尝试打开与项目的 vpn 连接并通过 vpn 进行。

【讨论】:

  • 很抱歉没有具体说明这一点。我们实际上是在 vpc 中运行 Packer。问题是我们无权访问accounts.google.com。虽然根据here 存在对 googleapis.com 的私有访问权限并且我们已经对其进行了设置,但是我没有看到用于对 googleapis.com 进行身份验证的 accounts.google.com 的私有访问权限,这就是问题所在发生。
  • haaaa 你有真正的问题,当你谈到外部 IP 时我误解了......你能用服务帐户角色更新你的问题吗?
  • 另一个愚蠢的问题,您是否尝试使用 NAT 路由器?
  • 谢谢。这一点都不傻。我们将使用 NAT 来考虑这个选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-20
  • 1970-01-01
  • 2021-12-20
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
  • 2012-09-20
相关资源
最近更新 更多