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

Posted

技术标签:

【中文标题】如何使用 terraform 为自动创建的 GKE 集群和服务防火墙规则启用 Logconfig【英文标题】:How to Enable Logconfig for automatically created GKE Cluster & Service firewall rules using terraform 【发布时间】:2021-11-15 20:47:38 【问题描述】:

在 Terraform 中,我在防火墙模块中启用了日志记录,并在 GCP 中创建了 3 个自定义防火墙规则,一旦应用 terraform,logconfig 就会设置为 true。如果我触发 gcloud compute firewall-rules list --format="table(name,logConfig)" 命令,我的自定义防火墙规则将 LOG_CONFIG 显示为“启用”:True 而自动创建的 GKE 集群和服务防火墙规则显示为 False。

手动从控制台/命令行我可以将 GKE 集群和服务防火墙规则更新为 true,而通过 terraform 我找不到解决方案。我在 GCP https://cloud.google.com/kubernetes-engine/docs/concepts/firewall-rules 中找到了关于自动创建防火墙规则的文档,但发现自动启用日志配置。

谁能给我解决方案。

目前我正在使用此防火墙规则及其为我的自定义规则启用 logconfig。

resource "google_compute_firewall" "default" 
  name    = "sample"
  network = "sample-network"
  project = "sample-project"
  enable_logging = "true"

  allow 
    protocol  = var.proto
    ports     = var.ports
  
  
 log_config 
   metadata = "INCLUDE_ALL_METADATA"
  

  source_tags   = var.sourceTags
  source_ranges = var.sourceRanges
  target_tags   = var.targetTags

【问题讨论】:

请提供您正在使用的 Terraform 代码。 @MarkoE 我已经添加了 terraform 代码并编辑了问题。使用该模块,我可以为防火墙启用日志,但对于我找不到的 kubernetes 防火墙规则。 您能告诉我您要向哪个资源添加防火墙日志吗? IE。它是 GCP 资源还是其他什么? @MarkoE 我正在尝试为 GCP cloud.google.com/kubernetes-engine/docs/concepts/firewall-rules 中自动创建的防火墙规则启用日志配置。如果您登录到任何集群,请触发此命令 gcloud compute firewall-rules list --format="table(name,logConfig)" ,您可以在其中看到防火墙名称以 gke-something 和 k8s-something 开头,其中 logconfig 将为 false。我想通过 terraform 实现它。手动我可以做到,但通过自动化我找不到解决方案。 好的,所以,主要问题是:GCP Terraform 提供程序中是否有资源可以让您这样做? 【参考方案1】:

我认为您链接的文档有解决方案:

https://cloud.google.com/kubernetes-engine/docs/concepts/firewall-rules

如果您想更好地控制防火墙行为,您可以创建具有更高优先级的防火墙规则。在自动创建的防火墙规则之前应用优先级较高的防火墙规则。

【讨论】:

以上是关于如何使用 terraform 为自动创建的 GKE 集群和服务防火墙规则启用 Logconfig的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Terraform 创建一个健康的 VPC-Native GKE 集群?

如何使用 Terraform 将 GKE 凭证传递给 Kubernetes 提供者?

Terraformed 私有 GKE 集群自动化访问

在 terraform 中设置 gke 自动驾驶仪的好例子

如何禁用节点自动修复

在具有私有 GKE 集群的 Terraform 上使用 Kubernetes 提供程序