GCP 上的 Terraform:如何将我的集群节点列入 RDS 白名单

Posted

技术标签:

【中文标题】GCP 上的 Terraform:如何将我的集群节点列入 RDS 白名单【英文标题】:Terraform on GCP: How to whitelist my cluster nodes for RDS 【发布时间】:2021-10-15 15:10:09 【问题描述】:

我有一个 kubernetes 集群和一个在 terraform 中配置的 RDS,现在我想将 RDS 的节点 IP 列入白名单。有没有办法以某种方式从集群配置访问节点池实例?我基本上想要的 RDS 配置类似于

    ip_configuration 

      dynamic "authorized_networks" 
        for_each = google_container_cluster.data_lake.network
        iterator = node
        content 
          name = node.network.ip
          value = node.network.ip
        
      
    

但据我所知,似乎没有办法获得节点/IP 的列表.. 我试过了

    ip_configuration 
      authorized_networks 
        value = google_container_cluster.my_cluster.cluster_ipv4_cidr
      
    

这导致了Non-routable or private authorized network (10.80.0.0/14).., invalid,所以看起来这只适用于公共 IP。或者我必须为此设置一个单独的 VPC?

【问题讨论】:

【参考方案1】:

我建议您首先在 GKE 前面设置 NAT 网关,以便您可以管理来自单个 egress 点。

您可以使用此 terraform 创建和设置 NAT 网关:https://registry.terraform.io/modules/GoogleCloudPlatform/nat-gateway/google/latest/examples/gke-nat-gateway

模块源码:https://github.com/GoogleCloudPlatform/terraform-google-nat-gateway/tree/v1.2.3/examples/gke-nat-gateway

使用 NAT 网关,您的所有节点流量将从单个 IP 流出,您可以将此 single IP 列入白名单到 RDS

由于 RDSAWS 服务中,VPC 对等是不可能的,否则如果使用 GCP SQL 也是一种选择。

【讨论】:

以上是关于GCP 上的 Terraform:如何将我的集群节点列入 RDS 白名单的主要内容,如果未能解决你的问题,请参考以下文章

在同一个 TF 脚本中使用多个 Terraform 提供程序(GCP 和 Kubernetes)创建资源

Terraform GCP 启动脚本本地文件而不是内联文件

使用 terraform 创建多个 GCP 存储桶

如何使用 terraform 为自动创建的 GKE 集群和服务防火墙规则启用 Logconfig

如何使用 Terraform 公开 gcp 云功能

terraform GCE 服务帐户节