3

我正在阅读这篇关于为个人项目设置负担得起的 Kubernetes 集群并设置我的集群的博客。

麻烦的是,随着时间的推移,我往往会忘记很多手动配置,所以我决定使用 Terraform 将其存储在声明性代码中。

我设法构建了以下配置并应用它:

provider "google" {
  credentials = "${file("secret-account.json")}"
  project     = "worklark-218609"
  zone      = "us-central1-a"
}

# configuration
resource "google_container_cluster" "primary" {
  name               = "worklark-cluster"
  initial_node_count = 3

  node_config {
    machine_type = "f1-micro"
    disk_size_gb = 10 # Set the initial disk size
    preemptible = true
  }

  addons_config {
    kubernetes_dashboard {
      disabled = false # Configure the Kubernetes dashboard
    }

    http_load_balancing {
      disabled = false # Configure the Kubernetes dashboard
    }

  }
}

问题是,两个集群的配置略有不同,这是我需要添加到配置中的内容:

  • Stackdriver Logging:当前已启用,必须禁用
  • Stackdriver Monitoring:当前已启用,必须禁用
  • 自动节点升级:当前为 Disabled,必须为Enabled
  • 自动节点修复:当前已禁用,必须启用

google_container_cluster我在资源的文档中找不到配置选项。我该怎么做才能设置这些选项?

4

1 回答 1

2

我找到了以下选项:

不幸的是,这些container_node_pool选项不适用于使用集群创建的默认池,因此我发现的解决方法是删除默认池,然后将完全配置的节点池添加到集群。

这是最终的配置:

/* This configuration sets up a Kubernetes Cluster following
   https://www.doxsey.net/blog/kubernetes--the-surprisingly-affordable-platform-for-personal-projects

   Confession: there's a minor difference between the article and my config, the
   former created a Cluster and configured the default node pool, however the options
   for doing this via the API are limited, so my configuration creates an empty
   default node pool for the cluster, and the creates and adds a fully configured
   one on top
    */

provider "google" {
  credentials = "${file("secret-account.json")}"
  project     = "worklark-218609"
  zone        = "us-central1-a"
}

# Node pool configuration
resource "google_container_node_pool" "primary_pool" {
  name       = "worklark-node-pool"
  cluster    = "${google_container_cluster.primary.name}"
  node_count = 3

  node_config {
    machine_type = "f1-micro"
    disk_size_gb = 10         # Set the initial disk size
    preemptible  = true
  }

  management {
    auto_repair  = true
    auto_upgrade = true
  }
}

# configuration
resource "google_container_cluster" "primary" {
  name               = "worklark-cluster"
  logging_service    = "none"
  monitoring_service = "none"

  addons_config {
    kubernetes_dashboard {
      disabled = false # Configure the Kubernetes dashboard
    }

    http_load_balancing {
      disabled = false # Configure the Kubernetes dashboard
    }
  }

  remove_default_node_pool = "true"

  node_pool {
    name = "default-pool"
  }
}

resource "google_compute_firewall" "default" {
  name        = "http-https"
  network     = "${google_container_cluster.primary.network}"
  description = "Enable HTTP and HTTPS access"

  direction = "INGRESS"

  allow {
    protocol = "tcp"
    ports    = ["80", "443"]
  }
}
于 2018-10-08T19:11:24.850 回答