如何使用 Pulumi 获取集群节点 IP
How to get the cluster node IPs using Pulumi
这是在 DigitalOcean 上创建托管 Kubernetes 集群的示例。
import * as pulumi from "@pulumi/pulumi";
import * as digitalocean from "@pulumi/digitalocean";
const foo = new digitalocean.KubernetesCluster("foo", {
region: "nyc1",
version: "1.20.2-do.0",
nodePool: {
name: "front-end-pool",
size: "s-2vcpu-2gb",
nodeCount: 3,
},
});
示例代码取自 Pulumi DigitalOcean package documentation。
如何检索用于创建 DnsRecord
资源的 Droplet 节点 IPv4 地址?
const _default = new digitalocean.Domain("default", {name: "example.com"});
// This code doesn't work because foo.nodePool is just the inputs.
const dnsRecords = foo.nodePool.nodes(node => new digitalocean.DnsRecord("www", {
domain: _default.name,
type: "A",
value: node.ipv4Address,
}));
DigitalOcean 没有 return 您创建的 Kubernetes 集群的节点 IP 地址列表。您可以使用 getDroplet
函数检索这些值。
但是,您需要在 apply()
中执行此迭代,如下所示:
const addresses = foo.nodePool.nodes.apply(
nodes => nodes.forEach(
(node) => {
let n = digitalocean.getDropletOutput({
name: node.name
})
new digitalocean.DnsRecord("www", {
domain: domain.name,
type: "A",
value: n.ipv4Address,
})
}
)
)
在此处使用应用让我们等待 foo.nodePool.nodes
已由 API 创建。然后我们可以像普通数组一样对其进行迭代,获取液滴,将其分配给变量n
,然后为每个节点创建一个新的 DNS 记录
这是在 DigitalOcean 上创建托管 Kubernetes 集群的示例。
import * as pulumi from "@pulumi/pulumi";
import * as digitalocean from "@pulumi/digitalocean";
const foo = new digitalocean.KubernetesCluster("foo", {
region: "nyc1",
version: "1.20.2-do.0",
nodePool: {
name: "front-end-pool",
size: "s-2vcpu-2gb",
nodeCount: 3,
},
});
示例代码取自 Pulumi DigitalOcean package documentation。
如何检索用于创建 DnsRecord
资源的 Droplet 节点 IPv4 地址?
const _default = new digitalocean.Domain("default", {name: "example.com"});
// This code doesn't work because foo.nodePool is just the inputs.
const dnsRecords = foo.nodePool.nodes(node => new digitalocean.DnsRecord("www", {
domain: _default.name,
type: "A",
value: node.ipv4Address,
}));
DigitalOcean 没有 return 您创建的 Kubernetes 集群的节点 IP 地址列表。您可以使用 getDroplet
函数检索这些值。
但是,您需要在 apply()
中执行此迭代,如下所示:
const addresses = foo.nodePool.nodes.apply(
nodes => nodes.forEach(
(node) => {
let n = digitalocean.getDropletOutput({
name: node.name
})
new digitalocean.DnsRecord("www", {
domain: domain.name,
type: "A",
value: n.ipv4Address,
})
}
)
)
在此处使用应用让我们等待 foo.nodePool.nodes
已由 API 创建。然后我们可以像普通数组一样对其进行迭代,获取液滴,将其分配给变量n
,然后为每个节点创建一个新的 DNS 记录