如何在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
相关产品推荐
相关产品推荐

