melodic-carpet-45864
04/26/2025, 11:50 PMmany-telephone-49025
04/27/2025, 9:26 AMmelodic-carpet-45864
04/27/2025, 3:44 PMconfiguration = talos.machine.get_configuration_output(
cluster_name="Cluster",
machine_type="controlplane",
cluster_endpoint=ip_address.apply(lambda ip: f"https://{ip}:6443"),
machine_secrets=talos.machine.MachineSecretsArgs(
certs=secrets.machine_secrets.certs,
cluster=secrets.machine_secrets.cluster,
secrets=secrets.machine_secrets.secrets,
trustdinfo=secrets.machine_secrets.trustdinfo,
),
)
melodic-carpet-45864
04/27/2025, 3:45 PMconfig = talos.cluster.get_kubeconfig_output(
node=ip_address,
client_configuration=talos.cluster.GetKubeconfigClientConfigurationArgs(
ca_certificate=secrets.machine_secrets.certs.ca_certificate,
client_certificate=secrets.machine_secrets.certs.client_certificate,
client_key=secrets.machine_secrets.certs.client_key,
),
)
many-telephone-49025
04/27/2025, 3:50 PMget_kubeconfig_output
call? Do you have error logs to share?melodic-carpet-45864
04/27/2025, 3:51 PMmany-telephone-49025
04/27/2025, 3:52 PMmelodic-carpet-45864
04/27/2025, 3:54 PMbootstrap = talos.machine.Bootstrap(
f"bootstrap ({name})",
node=ip_address,
client_configuration=cast(
"Input[talos.machine.ClientConfigurationArgs]", secrets.client_configuration
),
opts=pulumi.ResourceOptions(depends_on=[configuration_apply]),
)
config = talos.cluster.get_kubeconfig_output(
node=ip_address,
client_configuration=cast(
"Input[talos.cluster.GetKubeconfigClientConfigurationArgs]",
secrets.client_configuration,
),
)
Errors:
Exception: invoke of talos:cluster/getKubeconfig:getKubeconfig failed: invocation of talos:cluster/getKubeconfig:getKubeconfig returned an error: [AttributeName("client_configuration").AttributeName("ca_certificate")] Missing Configuration for Required Attribute: Must set a configuration value for the client_configuration.ca_certificate attribute as the provider has marked it as required.
melodic-carpet-45864
04/27/2025, 3:58 PMfrom typing import cast
import pulumi
import pulumi_proxmoxve as proxmox
import pulumiverse_talos as talos
from pulumi import Input
architecture = "amd64"
platform = "nocloud"
talos_version = "v1.9.5"
schematic_id = "ce4c980550dd2ab1b17bbf2b08801c7eb59418eafe8f279833297925d67c7515"
talos_image_factory = talos.imagefactory.get_urls(
architecture=architecture,
platform=platform,
schematic_id=schematic_id,
talos_version=talos_version,
)
talos_iso = proxmox.download.File(
"Talos Install ISO",
file_name=f"talos-{talos_version}-{platform}-{architecture}.iso",
content_type="iso",
url=talos_image_factory.urls.iso,
datastore_id="Synology-NFS",
node_name="pve2",
)
secrets = talos.machine.Secrets("secrets")
for i in range(1): # Number of nodes to provision
name = f"talos-test-{i:0>2}"
vm = proxmox.vm.VirtualMachine(
name,
name=name,
node_name="pve2",
agent=proxmox.vm.VirtualMachineAgentArgs(
enabled=True,
trim=True,
),
cdrom=proxmox.vm.VirtualMachineCdromArgs(
file_id=talos_iso.id,
),
cpu=proxmox.vm.VirtualMachineCpuArgs(
cores=4,
type="host",
),
disks=[
proxmox.vm.VirtualMachineDiskArgs(
interface="scsi0",
datastore_id="Synology-NFS",
size=100,
file_format="qcow2",
)
],
memory=proxmox.vm.VirtualMachineMemoryArgs(dedicated=4 * 1024),
network_devices=[proxmox.vm.VirtualMachineNetworkDeviceArgs()],
stop_on_destroy=True,
)
ip_address = vm.ipv4_addresses.apply(lambda x: x[-1][0])
configuration = talos.machine.get_configuration_output(
cluster_name="K8s Cluster",
machine_type="controlplane",
cluster_endpoint=ip_address.apply(lambda ip: f"https://{ip}:6443"),
machine_secrets=talos.machine.MachineSecretsArgs(
certs=secrets.machine_secrets.certs,
cluster=secrets.machine_secrets.cluster,
secrets=secrets.machine_secrets.secrets,
trustdinfo=secrets.machine_secrets.trustdinfo,
),
)
configuration_apply = talos.machine.ConfigurationApply(
f"configurationApply ({name})",
client_configuration=cast(
"Input[talos.machine.ClientConfigurationArgs]", secrets.client_configuration
),
machine_configuration_input=configuration.machine_configuration,
node=ip_address,
)
bootstrap = talos.machine.Bootstrap(
f"bootstrap ({name})",
node=ip_address,
client_configuration=cast(
"Input[talos.machine.ClientConfigurationArgs]", secrets.client_configuration
),
opts=pulumi.ResourceOptions(depends_on=[configuration_apply]),
)
config = talos.cluster.get_kubeconfig_output(
node=ip_address,
client_configuration=cast(
"Input[talos.cluster.GetKubeconfigClientConfigurationArgs]",
secrets.client_configuration,
),
)
many-telephone-49025
04/27/2025, 6:24 PMKubeConfig
const clusterKubeconfig = new talos.cluster.Kubeconfig("talosKubeconfig", {
clientConfiguration: machineSecrets.clientConfiguration,
node: controlPlaneDropletsIP4s[0],
})
export const kubeconfig = clusterKubeconfig.kubeconfigRaw
I used Typescript but it should work with Python too. Can you change to KubeConfigmany-telephone-49025
04/27/2025, 7:05 PMconst machineSecrets = new talos.machine.Secrets("machineSecrets", {});
const machineConfigCP = talos.machine.getConfigurationOutput({
clusterName: config.require("clusterName"),
clusterEndpoint: pulumi.interpolate`https://${lb.ip}:6443`,
machineType: "controlplane",
machineSecrets: machineSecrets.machineSecrets,
})
Setting the machineSecrets.machineSecrets
to the property machineSecrets
from getConfigurationOutput
- Again I used Typescript.salmon-account-74572
04/28/2025, 2:41 PM