Este es un ejemplo de cómo crear un clúster de Kubernetes administrado en DigitalOcean.
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, }, });Código de ejemplo tomado de la documentación del paquete Pulumi DigitalOcean .
¿Cómo recupero las direcciones IPv4 del nodo droplet para usar, por ejemplo, creando recursos DnsRecord ?
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 no devuelve una lista de direcciones IP de nodos del clúster de Kubernetes que creó. Puede recuperar estos valores utilizando la función getDroplet .
Sin embargo, necesitará hacer esta iteración dentro de una apply() así:
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, }) } ) ) El uso de una aplicación aquí nos permite esperar hasta que la API haya creado foo.nodePool.nodes . Luego podemos iterar sobre él como una matriz normal, obtener la gota, asignarla a la variable n y luego crear un nuevo registro DNS para cada uno de los nodos.