所以我正在努力实现以下目标: -通过Terraform在GCE上部署Rancher 2 -创建K8s集群 -添加防火墙规则,使节点能够与Racher Master Vm对话。
我能够使用节点的外部IP添加防火墙规则来访问牧场主,但我应该能够使用标签来代替添加IP。 Google Kubernetes Engine创建一个计算引擎实例组
gke-c-wlvrt-default-0-5c42eb4e-grp
当我添加防火墙规则时:
Target Tag: rancher-master
Source Tag: gke-c-wlvrt-default-0-5c42eb4e-grp
没有用。
当我将其更改为:
Target Tag: rancher-master
Source IP: 35.xx.xx.xx, 35.xx.xx.xx.xx, 35.xx.x.xxx.x
有效。
所以我要获得在防火墙规则上工作的Kubernetes节点的标签?
答案 0 :(得分:3)
您没有使用正确的标签。要知道这一点,请转到Compute Engine页面,然后单击VM上的详细信息。您可以看到以下内容:
实例组名称与网络标记名称不同。使用网络标记代替实例组名称。
当您转到实例组页面并转到实例模板详细信息时,您也可以看到这些值。
更新
由于您不知道(或我不知道该怎么做)应用于VM的网络标签,因此可以在GCP上使用特殊技巧。
开始使用服务帐户更新节点池定义
resource "google_service_account" "sa-node" {
account_id = "sa-node"
display_name = "sa-node"
}
resource "google_container_node_pool" "primary_preemptible_nodes" {
name = "my-node-pool"
location = "us-central1"
cluster = google_container_cluster.primary.name
node_count = 1
node_config {
preemptible = true
machine_type = "n1-standard-1"
service_account = google_service_account.sa-node.email
....
然后通过使用服务帐户而不是网络标记作为源来定义防火墙规则
resource "google_compute_firewall" "default" {
name = "test-firewall"
network = google_compute_network.default.name
allow {
protocol = "tcp"
ports = ["80", "8080", "1000-2000"]
}
source_service_accounts = [google_service_account.sa-node.email]
}
遗憾的是,您无法混合使用target tag
和source service account
,但是可以使用target service account
。因此,在Rancher上执行相同的操作。为您的牧场主部署使用特定的服务帐户,这应该可以工作。
希望有帮助!
答案 1 :(得分:0)
我不太确定这里描述的问题是否相同,但是您可以向VM添加另一个标签。 (GKE的节点)
我的问题是我想向GKE自动生成的防火墙规则添加另一个端口。
resource "google_container_node_pool" "node_pool" {
...
tags = [
module.vpc_network.private
]
...
}
resource "google_compute_firewall" "master_webhooks" {
...
target_tags = [module.vpc_network.private]
...
}