You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pulumi代码中添加GitHub Actions的CIDR部署GCP Postgres实例

如何在Pulumi代码中添加GitHub Actions的CIDR到GCP Postgres实例的授权网络?

我正在尝试用Pulumi结合GitHub Actions部署GCP Postgres实例,当前的Pulumi代码如下:

myinstance = sql.DatabaseInstance(
    "backoffice-instance",
    database_version="POSTGRES_15",
    settings=sql.DatabaseInstanceSettingsArgs(
        tier="db-custom-2-4096",
        activation_policy="ALWAYS",
        availability_type="ZONAL",
        ip_configuration=sql.DatabaseInstanceSettingsIpConfigurationArgs(
            authorized_networks=[
                sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs(
                    value="0.0.0.0/0"
                )
            ]
        ),
        backup_configuration={
            "enabled": True,
            "point_in_time_recovery_enabled": True,
        },
    ),
    deletion_protection=False,
)

原本计划通过查询https://api.github.com/meta接口把返回的CIDR作为环境变量使用,但这个方案比较复杂,想知道有没有更简单的替代方案?


方案一:直接硬编码GitHub Actions官方CIDR

GitHub会公开Actions服务使用的CIDR范围,且这些范围变更时会提前在官方渠道公告。你可以直接把这些CIDR写入Pulumi代码的授权网络列表,无需动态查询。

修改后的代码示例:

# 可根据GitHub最新公布的CIDR补充完整
github_actions_cidrs = [
    "185.199.108.0/22",
    "185.199.112.0/22",
    "140.82.112.0/20",
    "143.55.64.0/20"
]

myinstance = sql.DatabaseInstance(
    "backoffice-instance",
    database_version="POSTGRES_15",
    settings=sql.DatabaseInstanceSettingsArgs(
        tier="db-custom-2-4096",
        activation_policy="ALWAYS",
        availability_type="ZONAL",
        ip_configuration=sql.DatabaseInstanceSettingsIpConfigurationArgs(
            authorized_networks=[
                sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs(value=cidr)
                for cidr in github_actions_cidrs
            ]
            # 若需要保留原有其他授权网络,可在此追加
        ),
        backup_configuration={
            "enabled": True,
            "point_in_time_recovery_enabled": True,
        },
    ),
    deletion_protection=False,
)

这种方式简单直接,没有额外依赖或网络请求,适合对稳定性要求高的场景,只需定期关注GitHub的CIDR更新公告即可。

方案二:在Pulumi代码中直接拉取GitHub Meta数据

如果希望动态获取最新CIDR,可以在Pulumi代码中直接发起HTTP请求获取https://api.github.com/meta的内容,解析出actions字段对应的CIDR列表,无需通过环境变量传递。

示例代码(依赖Python的requests库):

import requests

# 拉取并解析GitHub Meta接口数据
github_meta = requests.get("https://api.github.com/meta").json()
github_actions_cidrs = github_meta.get("actions", [])

myinstance = sql.DatabaseInstance(
    "backoffice-instance",
    database_version="POSTGRES_15",
    settings=sql.DatabaseInstanceSettingsArgs(
        tier="db-custom-2-4096",
        activation_policy="ALWAYS",
        availability_type="ZONAL",
        ip_configuration=sql.DatabaseInstanceSettingsIpConfigurationArgs(
            authorized_networks=[
                sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs(value=cidr)
                for cidr in github_actions_cidrs
            ]
        ),
        backup_configuration={
            "enabled": True,
            "point_in_time_recovery_enabled": True,
        },
    ),
    deletion_protection=False,
)

注意:需确保Pulumi运行环境能访问GitHub API,也可添加缓存逻辑避免每次执行都发起请求,提升效率。

内容的提问来源于stack exchange,提问作者p.magalhaes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 18:28:24