es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo obtener las direcciones IP de los nodos del clúster utilizando Pulumi

Aquí tienes 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 de DigitalOcean de Pulumi.

¿Cómo puedo obtener las direcciones IPv4 de los nodos del droplet para utilizarlas, por ejemplo, en la creación de recursos de DnsRecord?

const _default = new digitalocean.Domain("default", {name: "example.com"});

// Este código no funciona porque foo.nodePool es solo la configuración de entrada.
const dnsRecords = foo.nodePool.nodes(node => new digitalocean.DnsRecord("www", {
    domain: _default.name,
    type: "A",
    value: node.ipv4Address,
}));
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para recuperar las direcciones IPv4 del nodo droplet para utilizar en la creación de recursos DnsRecord, necesitas acceder a la propiedad status del nodePool y recuperar el array loadBalancerIngress, el cual contiene información sobre los nodos droplet. Luego, puedes iterar sobre este array y crear un recurso DnsRecord para cada droplet:

    const nodes = pulumi.all([foo.status]);
    
    const dnsRecords = nodes.apply(([status]) => {
        return status.loadBalancerIngress.map((node, idx) => {
            return new digitalocean.DnsRecord(`www-${idx}`, {
                domain: _default.name,
                type: "A",
                value: node.ip,
            });
        });
    });
    

    Este código primero crea un recurso pulumi.all() que depende de la propiedad status del clúster Kubernetes foo. Luego, mapea el array loadBalancerIngress del objeto status para crear un DnsRecord para cada nodo droplet. Las propiedades node.ip se utilizan como valores para los DnsRecord. Finalmente, los recursos DnsRecord resultantes se almacenan en la variable dnsRecords.

Comments are closed.