kubernetes - 在 DigitalOcean 上使用 terraform 预部署 Kubernetes 负载均衡器?
问题描述
我正在学习如何使用 terraform 在 DO 上创建一个 k8s 集群,我一直在尝试使用ID
我创建的单个 K8s 节点,并从负载均衡器中引用它。
这样做的主要原因是我可以在.tf
文件中声明 FQDN。
首先,这是集群声明:
variable "digitalocean_token" {}
provider "digitalocean" {
token = "${var.digitalocean_token}"
}
resource "digitalocean_kubernetes_cluster" "foo" {
name = "foo"
region = "nyc1"
version = "1.12.1-do.2"
node_pool {
name = "woker-pool"
size = "s-1vcpu-2gb"
node_count = 1
}
}
这是负载均衡器声明:
resource "digitalocean_loadbalancer" "foo" {
name = "k8s-lb.nyc1"
region = "nyc1"
forwarding_rule {
entry_port = 80
entry_protocol = "http"
target_port = 80
target_protocol = "http"
}
droplet_ids = ["${digitalocean_kubernetes_cluster.foo.node_pool.0.id}"]
}
output "loadbalancer_ip" {
value = "${digitalocean_loadbalancer.foo.ip}"
}
resource "digitalocean_record" "terraform" {
domain = "example.com" # "${digitalocean_domain.example.name}"
type = "A"
name = "terraform"
value = "${digitalocean_loadbalancer.foo.ip}"
}
# Output the FQDN for the record
output "fqdn" {
value = "${digitalocean_record.terraform.fqdn}"
}
我猜也许这些digitalocean_loadbalancer
资源仅设置为与单个液滴一起使用?
以下是输出错误:当我运行时terraform apply
:
* output.loadbalancer_ip: Resource 'digitalocean_loadbalancer.foo' not found for variable 'digitalocean_loadbalancer.foo.ip'
* digitalocean_record.terraform: Resource 'digitalocean_loadbalancer.foo' not found for variable 'digitalocean_loadbalancer.foo.ip'
* digitalocean_loadbalancer.foo: droplet_ids.0: cannot parse '' as int: strconv.ParseInt: parsing "d4292e64-9c0a-4afb-83fc-83f239bcb4af": invalid syntax
铂。2
我添加了一个digitalocean_droplet
资源,以查看传递给负载均衡器的 id 类型。
resource "digitalocean_droplet" "web" {
name = "web-1"
size = "s-1vcpu-1gb"
image = "ubuntu-18-04-x64"
region = "nyc1"
}
digitalocean_kubernetes_cluster.foo.node_pool.0.id = '6ae6a787-d837-4e78-a915-cb52155f66fe'
digitalocean_droplet.web.id = 132533158
解决方案
因此,digitalocean_loadbalancer
资源有一个可选droplet_tag
参数,可用于提供给创建的节点/液滴的公共标签。
但是,当在 Kubernetes 中声明负载均衡器时,仍会创建一个新的负载均衡器。因此,至少目前看来,在 digitalocean 上无法使用 terraform 定义域/CNAME 记录
推荐阅读
- javascript - 通过 document.write 警告调用解析器阻塞、跨站点(即不同的 eTLD+1)脚本
- python-3.x - 字典列表中的最小值和最大值输出不正确
- esp32 - 用于 ESP32 的 NodeMCU 中是否提供 rtctime 模块
- orientdb - OrientDB-3.1 无法连接远程服务器地址
- python-3.x - BeautifulSoup - 有条件地导出到 csv
- flutter - 启用 Flutter Web 后,Flutter 无法检测到连接的设备
- javascript - 如何删除 Javascript 数组中的重复对象属性
- r - 在已填充的列中进行 Vlookup
- java - 具有完全相同字段的对象之间的 Mapstruct
- azure - Azure IoT 设备需要在离线时获取所需的属性