terraform-provider-kubernetes icon indicating copy to clipboard operation
terraform-provider-kubernetes copied to clipboard

Include conditions in nodes data source

Open simonostendorf opened this issue 1 year ago • 12 comments

Description

I would like to get the node conditions inside the kubernetes_nodes data source. Currently only addresses, allocatable, capacity and node_info are exported.

Potential Terraform Configuration

data "kubernetes_nodes" "example" {}

output "node_conditions" {
  value = [for node in data.kubernetes_nodes.example.nodes : node.status.conditions]
}

References

none

Community Note

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
  • If you are interested in working on this issue or have submitted a pull request, please leave a comment

simonostendorf avatar Feb 21 '24 12:02 simonostendorf

Thanks for bringing this up. We think it would make for a useful improvement to the nodes datasource and will add it to our backlog for triage.

In the mean time, you can achieve similar results by using the generic kubernetes_resources data source we already have in the provider.

Here's an example of how that would work:

data "kubernetes_resources" "nodes" {
  api_version = "v1"
  kind        = "Node"
}

output "nodes_conditions" {
  value = data.kubernetes_resources.nodes.objects.*.status.conditions
}

alexsomesan avatar Feb 27 '24 16:02 alexsomesan

In the mean time, you can achieve similar results by using the generic kubernetes_resources data source we already have in the provider.

Thank you for your reply and adding it to your backlog.

The kubernetes_resources data source results in a crash of the provider when i use it like your example.

simonostendorf avatar Feb 27 '24 16:02 simonostendorf

Can you share the crash log?

alexsomesan avatar Feb 27 '24 16:02 alexsomesan

Can you share the crash log?

Sure, here is the crash log.

│ Error: Plugin did not respond
│
│   with data.kubernetes_resources.nodes,
│   on main.tf line 48, in data "kubernetes_resources" "nodes":
│   48: data "kubernetes_resources" "nodes" {
│
│ The plugin encountered an error, and failed to respond to the plugin.(*GRPCProvider).ReadDataSource call. The
│ plugin logs may contain more details.
╵

Stack trace from the terraform-provider-kubernetes_v2.26.0_x5 plugin:

panic: runtime error: index out of range [7] with length 7

goroutine 14 [running]:
github.com/hashicorp/terraform-provider-kubernetes/manifest/payload.sliceToTFTupleValue({0xc0044df100, 0x8, 0xc004f4f620?}, {0x24c6f28?, 0xc004f0ad80}, 0x8010103?, 0xc00294fe18)
        github.com/hashicorp/terraform-provider-kubernetes/manifest/payload/to_value.go:192 +0x785
github.com/hashicorp/terraform-provider-kubernetes/manifest/payload.ToTFValue({0x1d38720?, 0xc001310300?}, {0x24c6f28, 0xc004f0ad80}, 0xc004f42730?, 0x4184e8?)
        github.com/hashicorp/terraform-provider-kubernetes/manifest/payload/to_value.go:117 +0x6c6
github.com/hashicorp/terraform-provider-kubernetes/manifest/payload.mapToTFObjectValue(0x2060520?, {0x24c6cc0?, 0xc0048f68d0}, 0xc004f42730?, 0xc00294f878)
        github.com/hashicorp/terraform-provider-kubernetes/manifest/payload/to_value.go:259 +0x308
github.com/hashicorp/terraform-provider-kubernetes/manifest/payload.ToTFValue({0x1e5e440?, 0xc004c2a840?}, {0x24c6cc0, 0xc0048f68d0}, 0x1e60300?, 0xc94b98?)
        github.com/hashicorp/terraform-provider-kubernetes/manifest/payload/to_value.go:128 +0x9aa
github.com/hashicorp/terraform-provider-kubernetes/manifest/payload.mapToTFObjectValue(0x2060520?, {0x24c6cc0?, 0xc00497a540}, 0xc0044860c8?, 0xc00289f410)
        github.com/hashicorp/terraform-provider-kubernetes/manifest/payload/to_value.go:259 +0x308
github.com/hashicorp/terraform-provider-kubernetes/manifest/payload.ToTFValue({0x1e5e440?, 0xc004c2a810?}, {0x24c6cc0, 0xc00497a540}, 0x20b2cc0?, 0xc004e54480?)
        github.com/hashicorp/terraform-provider-kubernetes/manifest/payload/to_value.go:128 +0x9aa
github.com/hashicorp/terraform-provider-kubernetes/manifest/provider.(*RawProviderServer).ReadPluralDataSource(0xc000510400, {0x24bfd48, 0xc000bf1c50}, 0xc00068e9a0)
        github.com/hashicorp/terraform-provider-kubernetes/manifest/provider/datasource.go:178 +0x15d1
github.com/hashicorp/terraform-provider-kubernetes/manifest/provider.(*RawProviderServer).ReadDataSource(0x24bfd48?, {0x24bfd48, 0xc000bf1c50}, 0xc00068e9a0)
        github.com/hashicorp/terraform-provider-kubernetes/manifest/provider/datasource.go:28 +0x85
github.com/hashicorp/terraform-plugin-mux/tf5muxserver.(*muxServer).ReadDataSource(0x24bfd80?, {0x24bfd48?, 0xc000bf1950?}, 0xc00068e9a0)
        github.com/hashicorp/[email protected]/tf5muxserver/mux_server_ReadDataSource.go:36 +0x19f
github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server.(*server).ReadDataSource(0xc0000ce460, {0x24bfd48?, 0xc000bf0fc0?}, 0xc000b88ff0)
        github.com/hashicorp/[email protected]/tfprotov5/tf5server/server.go:699 +0x3df
github.com/hashicorp/terraform-plugin-go/tfprotov5/internal/tfplugin5._Provider_ReadDataSource_Handler({0x20c12c0?, 0xc0000ce460}, {0x24bfd48, 0xc000bf0fc0}, 0xc0002acd80, 0x0)
        github.com/hashicorp/[email protected]/tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go:539 +0x169
google.golang.org/grpc.(*Server).processUnaryRPC(0xc000a78000, {0x24bfd48, 0xc000bf0f30}, {0x24c80a0, 0xc000b341a0}, 0xc000bed200, 0xc000767710, 0x3543dc8, 0x0)
        google.golang.org/[email protected]/server.go:1372 +0xe03
google.golang.org/grpc.(*Server).handleStream(0xc000a78000, {0x24c80a0, 0xc000b341a0}, 0xc000bed200)
        google.golang.org/[email protected]/server.go:1783 +0xfec
google.golang.org/grpc.(*Server).serveStreams.func2.1()
        google.golang.org/[email protected]/server.go:1016 +0x59
created by google.golang.org/grpc.(*Server).serveStreams.func2 in goroutine 54
        google.golang.org/[email protected]/server.go:1027 +0x115

Error: The terraform-provider-kubernetes_v2.26.0_x5 plugin crashed!

This is always indicative of a bug within the plugin. It would be immensely
helpful if you could report the crash with the plugin's maintainers so that it
can be fixed. The output above should help diagnose the issue.

simonostendorf avatar Feb 27 '24 16:02 simonostendorf

Which cluster type and version did you use this on? Also, which Terraform version?

I will try to reproduce it. The example works fine for me on a kind cluster.

alexsomesan avatar Feb 27 '24 17:02 alexsomesan

Which cluster type and version did you use this on? Also, which Terraform version?

I will try to reproduce it. The example works fine for me on a kind cluster.

I am using a kubeadm cluster build with cluster-api on version 1.24.14 and Terraform 1.7.3 with kubernetes-provider version 2.26.0.

simonostendorf avatar Feb 27 '24 17:02 simonostendorf

Could you also provide us with a core dump of the crash, please?

Instructions for getting core dumps from Go processes are here: https://github.com/dailymotion/hands-on-diagnosing-golang-apps/blob/master/core-files/README.md

alexsomesan avatar Feb 27 '24 17:02 alexsomesan

Don't share the core file here directly as it might contain credentials to your cluster. You could share it with me directly in a google drive using my company email: [email protected]

alexsomesan avatar Feb 27 '24 17:02 alexsomesan

@simonostendorf Do you think you'd be able to share a core file from the crash? I haven't been able to reproduce the same crash so far.

alexsomesan avatar Mar 06 '24 09:03 alexsomesan

@simonostendorf Do you think you'd be able to share a core file from the crash? I haven't been able to reproduce the same crash so far.

Sorry for the late reply. I don't have much time this week. I will look at the crash next week.

simonostendorf avatar Mar 06 '24 09:03 simonostendorf

@alexsomesan

Sorry, I don't have enough time to look at the bug and reproduce it. So far I've been able to detect crashes with Kubernetes 1.24 and 1.25, but not with 1.26 and 1.27, but I can't always reproduce them. Due to the unclear reproduction situation, the issue can be closed for now, and I will get back to you when I can narrow down the bug further and provide a core file.

simonostendorf avatar Mar 13 '24 10:03 simonostendorf

No worries. I'm also on vacation this week and didn't advance my research very much. Thanks for the versions detail. I think that should help. Let's keep the issue open for now - there is another one with a similar crash so we need to get to the bottom of it.

alexsomesan avatar Mar 14 '24 08:03 alexsomesan