Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Panic planning kubernetes_manifest #1475

Closed
nyurik opened this issue Oct 28, 2021 · 3 comments
Closed

Panic planning kubernetes_manifest #1475

nyurik opened this issue Oct 28, 2021 · 3 comments
Labels

Comments

@nyurik
Copy link

nyurik commented Oct 28, 2021

Planning multiple kubernetes_manifest resources panicked 💥. Applying Kubegres operator - from a locally-stored kubegres.yaml. I use regex to break the file into separate documents and apply them with for_each.

Stack trace from the terraform-provider-kubernetes_v2.6.1_x5 plugin:
panic: lists must only contain one type of element, saw tftypes.Object["args":tftypes.List[tftypes.String],...........

Terraform Version, Provider Version and Kubernetes Version

Terraform v1.0.9 on linux_amd64
+ provider registry.terraform.io/hashicorp/google v3.89.0
+ provider registry.terraform.io/hashicorp/kubernetes v2.6.1

Affected Resource(s)

  • kubernetes_manifest

Terraform Configuration Files

data "google_client_config" "current" {}

data "google_container_cluster" "cluster" {
  name     = var.cluster_name
  location = local.cluster_location
}

provider "kubernetes" {
  host  = "https://${data.google_container_cluster.cluster.endpoint}"
  token = data.google_client_config.current.access_token

  cluster_ca_certificate = base64decode(data.google_container_cluster.cluster.master_auth.0.cluster_ca_certificate)
}

locals {
  # yamldecode() does not support multi-document YAML, so work around that
  # See https://github.com/hashicorp/terraform/issues/29729
  # Use regex tricks to split multi-document yaml file into single yaml document blobs
  # Must use \n---\n to avoid splitting on strings and comments containing "---".
  # YAML allows "---" to be the first and last line of a file, so make sure
  # raw yaml begins and ends with a newline.
  # The "---" can be followed by spaces and comments, so need to remove those too.
  # Skip blocks that are empty or comments-only in case yaml began with a comment before "---".
  kubegres_yaml_blobs = [
    for yaml_blob in split(
      "\n---\n",
      "\n${replace(file("kubegres.yaml"), "/(?m)^---[[:blank:]]*(#.*)?$/", "---")}\n"
    ) : yaml_blob
    if trimspace(replace(yaml_blob, "/(?m)(^[[:blank:]]*(#.*)?$)+/", "")) != ""
  ]
}

resource "kubernetes_manifest" "kubegres" {
  # Create a map { "kind--name" => yaml_doc } from the multi-document yaml text.
  for_each = {
    for value in [
      for yaml in local.kubegres_yaml_blobs : yamldecode(yaml)
    ] : "${value["kind"]}--${value["metadata"]["name"]}" => value
  }
  manifest = each.value
}

Debug Output

Panic Output

Click to expand: Unfortunately we run all Terraforms inside docker containers that loose crash logs, so just the screen output
╷
│ Error: Plugin did not respond
│
│   with kubernetes_manifest.kubegres["ServiceAccount--kubegres-controller-manager"],
│   on kubegres.tf line 29, in resource "kubernetes_manifest" "kubegres":
│   29: resource "kubernetes_manifest" "kubegres" {
│
│ The plugin encountered an error, and failed to respond to the plugin.(*GRPCProvider).PlanResourceChange call. The plugin logs may contain more details.
╵
╷
│ Error: Plugin did not respond
│
│   with kubernetes_manifest.kubegres["ClusterRole--kubegres-manager-role"],
│   on kubegres.tf line 29, in resource "kubernetes_manifest" "kubegres":
│   29: resource "kubernetes_manifest" "kubegres" {
│
│ The plugin encountered an error, and failed to respond to the plugin.(*GRPCProvider).PlanResourceChange call. The plugin logs may contain more details.
╵
╷
│ Error: Plugin did not respond
│
│   with kubernetes_manifest.kubegres["Deployment--kubegres-controller-manager"],
│   on kubegres.tf line 29, in resource "kubernetes_manifest" "kubegres":
│   29: resource "kubernetes_manifest" "kubegres" {
│
│ The plugin encountered an error, and failed to respond to the plugin.(*GRPCProvider).PlanResourceChange call. The plugin logs may contain more details.
╵
╷
│ Error: Plugin did not respond
│
│   with kubernetes_manifest.kubegres["Service--kubegres-controller-manager-metrics-service"],
│   on kubegres.tf line 29, in resource "kubernetes_manifest" "kubegres":
│   29: resource "kubernetes_manifest" "kubegres" {
│
│ The plugin encountered an error, and failed to respond to the plugin.(*GRPCProvider).PlanResourceChange call. The plugin logs may contain more details.
╵
╷
│ Error: Plugin did not respond
│
│   with kubernetes_manifest.kubegres["ClusterRoleBinding--kubegres-proxy-rolebinding"],
│   on kubegres.tf line 29, in resource "kubernetes_manifest" "kubegres":
│   29: resource "kubernetes_manifest" "kubegres" {
│
│ The plugin encountered an error, and failed to respond to the plugin.(*GRPCProvider).PlanResourceChange call. The plugin logs may contain more details.
╵
╷
│ Error: Plugin did not respond
│
│   with kubernetes_manifest.kubegres["ClusterRoleBinding--kubegres-manager-rolebinding"],
│   on kubegres.tf line 29, in resource "kubernetes_manifest" "kubegres":
│   29: resource "kubernetes_manifest" "kubegres" {
│
│ The plugin encountered an error, and failed to respond to the plugin.(*GRPCProvider).PlanResourceChange call. The plugin logs may contain more details.
╵
╷
│ Error: Forbidden attribute key in "manifest" value
│
│   with kubernetes_manifest.kubegres["CustomResourceDefinition--kubegres.kubegres.reactive-tech.io"],
│   on kubegres.tf line 29, in resource "kubernetes_manifest" "kubegres":
│   29: resource "kubernetes_manifest" "kubegres" {
│
│ 'status' attribute key is not allowed in manifest configuration
╵
╷
│ Error: Plugin did not respond
│
│   with kubernetes_manifest.kubegres["RoleBinding--kubegres-leader-election-rolebinding"],
│   on kubegres.tf line 29, in resource "kubernetes_manifest" "kubegres":
│   29: resource "kubernetes_manifest" "kubegres" {
│
│ The plugin encountered an error, and failed to respond to the plugin.(*GRPCProvider).PlanResourceChange call. The plugin logs may contain more details.
╵

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

panic: lists must only contain one type of element, saw tftypes.Object["args":tftypes.List[tftypes.String], "command":tftypes.List[tftypes.String], "env":tftypes.List[tftypes.Object["name":tftypes.String, "value":tftypes.String, "valueFrom":tftypes.Object["configMapKeyRef":tftypes.Object["key":tftypes.String, "name":tftypes.String, "optional":tftypes.Bool], "fieldRef":tftypes.Object["apiVersion":tftypes.String, "fieldPath":tftypes.String], "resourceFieldRef":tftypes.Object["containerName":tftypes.String, "divisor":tftypes.String, "resource":tftypes.String], "secretKeyRef":tftypes.Object["key":tftypes.String, "name":tftypes.String, "optional":tftypes.Bool]]]], "envFrom":tftypes.List[tftypes.Object["configMapRef":tftypes.Object["name":tftypes.String, "optional":tftypes.Bool], "prefix":tftypes.String, "secretRef":tftypes.Object["name":tftypes.String, "optional":tftypes.Bool]]], "image":tftypes.String, "imagePullPolicy":tftypes.String, "lifecycle":tftypes.Object["postStart":tftypes.Object["exec":tftypes.Object["command":tftypes.List[tftypes.String]], "httpGet":tftypes.Object["host":tftypes.String, "httpHeaders":tftypes.List[tftypes.Object["name":tftypes.String, "value":tftypes.String]], "path":tftypes.String, "port":tftypes.DynamicPseudoType, "scheme":tftypes.String], "tcpSocket":tftypes.Object["host":tftypes.String, "port":tftypes.DynamicPseudoType]], "preStop":tftypes.Object["exec":tftypes.Object["command":tftypes.List[tftypes.String]], "httpGet":tftypes.Object["host":tftypes.String, "httpHeaders":tftypes.List[tftypes.Object["name":tftypes.String, "value":tftypes.String]], "path":tftypes.String, "port":tftypes.DynamicPseudoType, "scheme":tftypes.String], "tcpSocket":tftypes.Object["host":tftypes.String, "port":tftypes.DynamicPseudoType]]], "livenessProbe":tftypes.Object["exec":tftypes.Object["command":tftypes.List[tftypes.String]], "failureThreshold":tftypes.Number, "httpGet":tftypes.Object["host":tftypes.String, "httpHeaders":tftypes.List[tftypes.Object["name":tftypes.String, "value":tftypes.String]], "path":tftypes.String, "port":tftypes.DynamicPseudoType, "scheme":tftypes.String], "initialDelaySeconds":tftypes.Number, "periodSeconds":tftypes.Number, "successThreshold":tftypes.Number, "tcpSocket":tftypes.Object["host":tftypes.String, "port":tftypes.DynamicPseudoType], "timeoutSeconds":tftypes.Number], "name":tftypes.String, "ports":tftypes.List[tftypes.Object["containerPort":tftypes.Number, "hostIP":tftypes.String, "hostPort":tftypes.Number, "name":tftypes.String, "protocol":tftypes.String]], "readinessProbe":tftypes.Object["exec":tftypes.Object["command":tftypes.List[tftypes.String]], "failureThreshold":tftypes.Number, "httpGet":tftypes.Object["host":tftypes.String, "httpHeaders":tftypes.List[tftypes.Object["name":tftypes.String, "value":tftypes.String]], "path":tftypes.String, "port":tftypes.DynamicPseudoType, "scheme":tftypes.String], "initialDelaySeconds":tftypes.Number, "periodSeconds":tftypes.Number, "successThreshold":tftypes.Number, "tcpSocket":tftypes.Object["host":tftypes.String, "port":tftypes.DynamicPseudoType], "timeoutSeconds":tftypes.Number], "resources":tftypes.Object["limits":tftypes.Map[tftypes.String], "requests":tftypes.Map[tftypes.String]], "securityContext":tftypes.Object["allowPrivilegeEscalation":tftypes.Bool, "capabilities":tftypes.Object["add":tftypes.List[tftypes.String], "drop":tftypes.List[tftypes.String]], "privileged":tftypes.Bool, "procMount":tftypes.String, "readOnlyRootFilesystem":tftypes.Bool, "runAsGroup":tftypes.Number, "runAsNonRoot":tftypes.Bool, "runAsUser":tftypes.Number, "seLinuxOptions":tftypes.Object["level":tftypes.String, "role":tftypes.String, "type":tftypes.String, "user":tftypes.String], "seccompProfile":tftypes.Object["localhostProfile":tftypes.String, "type":tftypes.String], "windowsOptions":tftypes.Object["gmsaCredentialSpec":tftypes.String, "gmsaCredentialSpecName":tftypes.String, "runAsUserName":tftypes.String]], "startupProbe":tftypes.Object["exec":tftypes.Object["command":tftypes.List[tftypes.String]], "failureThreshold":tftypes.Number, "httpGet":tftypes.Object["host":tftypes.String, "httpHeaders":tftypes.List[tftypes.Object["name":tftypes.String, "value":tftypes.String]], "path":tftypes.String, "port":tftypes.DynamicPseudoType, "scheme":tftypes.String], "initialDelaySeconds":tftypes.Number, "periodSeconds":tftypes.Number, "successThreshold":tftypes.Number, "tcpSocket":tftypes.Object["host":tftypes.String, "port":tftypes.DynamicPseudoType], "timeoutSeconds":tftypes.Number], "stdin":tftypes.Bool, "stdinOnce":tftypes.Bool, "terminationMessagePath":tftypes.String, "terminationMessagePolicy":tftypes.String, "tty":tftypes.Bool, "volumeDevices":tftypes.List[tftypes.Object["devicePath":tftypes.String, "name":tftypes.String]], "volumeMounts":tftypes.List[tftypes.Object["mountPath":tftypes.String, "mountPropagation":tftypes.String, "name":tftypes.String, "readOnly":tftypes.Bool, "subPath":tftypes.String, "subPathExpr":tftypes.String]], "workingDir":tftypes.String] and tftypes.Object["args":tftypes.List[tftypes.String], "command":tftypes.List[tftypes.String], "env":tftypes.List[tftypes.Object["name":tftypes.String, "value":tftypes.String, "valueFrom":tftypes.Object["configMapKeyRef":tftypes.Object["key":tftypes.String, "name":tftypes.String, "optional":tftypes.Bool], "fieldRef":tftypes.Object["apiVersion":tftypes.String, "fieldPath":tftypes.String], "resourceFieldRef":tftypes.Object["containerName":tftypes.String, "divisor":tftypes.String, "resource":tftypes.String], "secretKeyRef":tftypes.Object["key":tftypes.String, "name":tftypes.String, "optional":tftypes.Bool]]]], "envFrom":tftypes.List[tftypes.Object["configMapRef":tftypes.Object["name":tftypes.String, "optional":tftypes.Bool], "prefix":tftypes.String, "secretRef":tftypes.Object["name":tftypes.String, "optional":tftypes.Bool]]], "image":tftypes.String, "imagePullPolicy":tftypes.String, "lifecycle":tftypes.Object["postStart":tftypes.Object["exec":tftypes.Object["command":tftypes.List[tftypes.String]], "httpGet":tftypes.Object["host":tftypes.String, "httpHeaders":tftypes.List[tftypes.Object["name":tftypes.String, "value":tftypes.String]], "path":tftypes.String, "port":tftypes.DynamicPseudoType, "scheme":tftypes.String], "tcpSocket":tftypes.Object["host":tftypes.String, "port":tftypes.DynamicPseudoType]], "preStop":tftypes.Object["exec":tftypes.Object["command":tftypes.List[tftypes.String]], "httpGet":tftypes.Object["host":tftypes.String, "httpHeaders":tftypes.List[tftypes.Object["name":tftypes.String, "value":tftypes.String]], "path":tftypes.String, "port":tftypes.DynamicPseudoType, "scheme":tftypes.String], "tcpSocket":tftypes.Object["host":tftypes.String, "port":tftypes.DynamicPseudoType]]], "livenessProbe":tftypes.Object["exec":tftypes.Object["command":tftypes.List[tftypes.String]], "failureThreshold":tftypes.Number, "httpGet":tftypes.Object["host":tftypes.String, "httpHeaders":tftypes.List[tftypes.Object["name":tftypes.String, "value":tftypes.String]], "path":tftypes.String, "port":tftypes.Number, "scheme":tftypes.String], "initialDelaySeconds":tftypes.Number, "periodSeconds":tftypes.Number, "successThreshold":tftypes.Number, "tcpSocket":tftypes.Object["host":tftypes.String, "port":tftypes.DynamicPseudoType], "timeoutSeconds":tftypes.Number], "name":tftypes.String, "ports":tftypes.List[tftypes.Object["containerPort":tftypes.Number, "hostIP":tftypes.String, "hostPort":tftypes.Number, "name":tftypes.String, "protocol":tftypes.String]], "readinessProbe":tftypes.Object["exec":tftypes.Object["command":tftypes.List[tftypes.String]], "failureThreshold":tftypes.Number, "httpGet":tftypes.Object["host":tftypes.String, "httpHeaders":tftypes.List[tftypes.Object["name":tftypes.String, "value":tftypes.String]], "path":tftypes.String, "port":tftypes.Number, "scheme":tftypes.String], "initialDelaySeconds":tftypes.Number, "periodSeconds":tftypes.Number, "successThreshold":tftypes.Number, "tcpSocket":tftypes.Object["host":tftypes.String, "port":tftypes.DynamicPseudoType], "timeoutSeconds":tftypes.Number], "resources":tftypes.Object["limits":tftypes.Map[tftypes.String], "requests":tftypes.Map[tftypes.String]], "securityContext":tftypes.Object["allowPrivilegeEscalation":tftypes.Bool, "capabilities":tftypes.Object["add":tftypes.List[tftypes.String], "drop":tftypes.List[tftypes.String]], "privileged":tftypes.Bool, "procMount":tftypes.String, "readOnlyRootFilesystem":tftypes.Bool, "runAsGroup":tftypes.Number, "runAsNonRoot":tftypes.Bool, "runAsUser":tftypes.Number, "seLinuxOptions":tftypes.Object["level":tftypes.String, "role":tftypes.String, "type":tftypes.String, "user":tftypes.String], "seccompProfile":tftypes.Object["localhostProfile":tftypes.String, "type":tftypes.String], "windowsOptions":tftypes.Object["gmsaCredentialSpec":tftypes.String, "gmsaCredentialSpecName":tftypes.String, "runAsUserName":tftypes.String]], "startupProbe":tftypes.Object["exec":tftypes.Object["command":tftypes.List[tftypes.String]], "failureThreshold":tftypes.Number, "httpGet":tftypes.Object["host":tftypes.String, "httpHeaders":tftypes.List[tftypes.Object["name":tftypes.String, "value":tftypes.String]], "path":tftypes.String, "port":tftypes.DynamicPseudoType, "scheme":tftypes.String], "initialDelaySeconds":tftypes.Number, "periodSeconds":tftypes.Number, "successThreshold":tftypes.Number, "tcpSocket":tftypes.Object["host":tftypes.String, "port":tftypes.DynamicPseudoType], "timeoutSeconds":tftypes.Number], "stdin":tftypes.Bool, "stdinOnce":tftypes.Bool, "terminationMessagePath":tftypes.String, "terminationMessagePolicy":tftypes.String, "tty":tftypes.Bool, "volumeDevices":tftypes.List[tftypes.Object["devicePath":tftypes.String, "name":tftypes.String]], "volumeMounts":tftypes.List[tftypes.Object["mountPath":tftypes.String, "mountPropagation":tftypes.String, "name":tftypes.String, "readOnly":tftypes.Bool, "subPath":tftypes.String, "subPathExpr":tftypes.String]], "workingDir":tftypes.String]

goroutine 130 [running]:
github.com/hashicorp/terraform-plugin-go/tftypes.NewValue(...)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/vendor/github.com/hashicorp/terraform-plugin-go/tftypes/value.go:277
github.com/hashicorp/terraform-provider-kubernetes/manifest/morph.morphTupleIntoType(0x26a7860, 0xc0012b97a0, 0x1f1e2a0, 0xc0001235d8, 0x26a7740, 0xc00217ae70, 0xc00133e4c8, 0x0, 0x203000, 0x203000, ...)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/manifest/morph/morph.go:193 +0x1b85
github.com/hashicorp/terraform-provider-kubernetes/manifest/morph.ValueToType(0x26a7860, 0xc0012b97a0, 0x1f1e2a0, 0xc0001235d8, 0x26a7740, 0xc00217ae70, 0xc00133e4c8, 0x6, 0x0, 0x0, ...)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/manifest/morph/morph.go:30 +0xa09
github.com/hashicorp/terraform-provider-kubernetes/manifest/morph.morphObjectToType(0x26a77d0, 0xc0012e7620, 0x202db80, 0xc001284870, 0x26a77d0, 0xc003a588d0, 0xc00133e4b0, 0x1100000000203000, 0xc003c52870, 0x202db80, ...)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/manifest/morph/morph.go:301 +0x425
github.com/hashicorp/terraform-provider-kubernetes/manifest/morph.ValueToType(0x26a77d0, 0xc0012e7620, 0x202db80, 0xc001284870, 0x26a77d0, 0xc003a588d0, 0xc00133e4b0, 0x4, 0xc003c52870, 0x202db80, ...)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/manifest/morph/morph.go:36 +0x709
github.com/hashicorp/terraform-provider-kubernetes/manifest/morph.morphObjectToType(0x26a77d0, 0xc0012ef3b0, 0x202db80, 0xc00127ba10, 0x26a77d0, 0xc003a58900, 0xc003647f50, 0x11000000026a77d0, 0xc003c50960, 0x202db80, ...)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/manifest/morph/morph.go:301 +0x425
github.com/hashicorp/terraform-provider-kubernetes/manifest/morph.ValueToType(0x26a77d0, 0xc0012ef3b0, 0x202db80, 0xc00127ba10, 0x26a77d0, 0xc003a58900, 0xc003647f50, 0x2, 0xc003c50960, 0x202db80, ...)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/manifest/morph/morph.go:36 +0x709
github.com/hashicorp/terraform-provider-kubernetes/manifest/morph.morphObjectToType(0x26a77d0, 0xc0012fb1d0, 0x202db80, 0xc00127a9f0, 0x26a77d0, 0xc003ad0a20, 0xc003647d70, 0x1100000000203000, 0xc003c4d740, 0x202db80, ...)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/manifest/morph/morph.go:301 +0x425
github.com/hashicorp/terraform-provider-kubernetes/manifest/morph.ValueToType(0x26a77d0, 0xc0012fb1d0, 0x202db80, 0xc00127a9f0, 0x26a77d0, 0xc003ad0a20, 0xc003647d70, 0x1, 0xc003c4d740, 0x202db80, ...)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/manifest/morph/morph.go:36 +0x709
github.com/hashicorp/terraform-provider-kubernetes/manifest/morph.morphObjectToType(0x26a77d0, 0xc001301b90, 0x202db80, 0xc001245680, 0x26a77d0, 0xc003c33740, 0xc003647920, 0x0, 0xc002709a10, 0x8, ...)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/manifest/morph/morph.go:301 +0x425
github.com/hashicorp/terraform-provider-kubernetes/manifest/morph.ValueToType(0x26a77d0, 0xc001301b90, 0x202db80, 0xc001245680, 0x26a77d0, 0xc003c33740, 0xc003647920, 0x2, 0xa, 0x0, ...)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/manifest/morph/morph.go:36 +0x709
github.com/hashicorp/terraform-provider-kubernetes/manifest/provider.(*RawProviderServer).PlanResourceChange(0xc000c1e400, 0x2699848, 0xc0005f6100, 0xc0002961e0, 0xc0012c0818, 0x1, 0x30)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/manifest/provider/plan.go:315 +0x1cbb
github.com/hashicorp/terraform-plugin-mux.SchemaServer.PlanResourceChange(0xc000c1c990, 0xc000c1c9c0, 0xc001615fa0, 0x2, 0x2, 0xc000c1e300, 0x1, 0x2699848, 0xc0005f6100, 0xc0002961e0, ...)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/vendor/github.com/hashicorp/terraform-plugin-mux/schema_server.go:276 +0x98
github.com/hashicorp/terraform-plugin-go/tfprotov5/server.(*server).PlanResourceChange(0xc001615fc0, 0x26998f0, 0xc0005f6100, 0xc0002a6070, 0xc001615fc0, 0xc0005f8180, 0xc001776ba0)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/vendor/github.com/hashicorp/terraform-plugin-go/tfprotov5/server/server.go:315 +0xb5
github.com/hashicorp/terraform-plugin-go/tfprotov5/internal/tfplugin5._Provider_PlanResourceChange_Handler(0x220b4e0, 0xc001615fc0, 0x26998f0, 0xc0005f8180, 0xc0004d6120, 0x0, 0x26998f0, 0xc0005f8180, 0xc000361500, 0x1351)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/vendor/github.com/hashicorp/terraform-plugin-go/tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go:362 +0x214
google.golang.org/grpc.(*Server).processUnaryRPC(0xc0003108c0, 0x26b14b8, 0xc000502c00, 0xc0005fe000, 0xc000c1ca50, 0x351bae8, 0x0, 0x0, 0x0)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/vendor/google.golang.org/grpc/server.go:1217 +0x52b
google.golang.org/grpc.(*Server).handleStream(0xc0003108c0, 0x26b14b8, 0xc000502c00, 0xc0005fe000, 0x0)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/vendor/google.golang.org/grpc/server.go:1540 +0xd0c
google.golang.org/grpc.(*Server).serveStreams.func1.2(0xc000b14bf0, 0xc0003108c0, 0x26b14b8, 0xc000502c00, 0xc0005fe000)
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/vendor/google.golang.org/grpc/server.go:878 +0xab
created by google.golang.org/grpc.(*Server).serveStreams.func1
	/opt/teamcity-agent/work/5d79fe75d4460a2f/src/github.com/hashicorp/terraform-provider-kubernetes/vendor/google.golang.org/grpc/server.go:876 +0x1fd

Error: The terraform-provider-kubernetes_v2.6.1_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.

Steps to Reproduce

  1. Download kubegres.yaml
  2. terraform plan

Expected Behavior

Not crash. Not show Error: Plugin did not respond errors.

Actual Behavior

💥

References

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
@nyurik nyurik added the bug label Oct 28, 2021
@nyurik nyurik changed the title Panic when planning new manifest resources Panic planning kubernetes_manifest Oct 28, 2021
@GenPage
Copy link

GenPage commented Oct 28, 2021

@nyurik This seem like it would be a duplicate of #1359 as your original error message is similar and the spec has anyOf defined for some of the schema properties. We're running into this issue too with our IstioOperator and EnvoyFilters.

@nyurik
Copy link
Author

nyurik commented Oct 28, 2021

Thanks @GenPage , it does look like a dup, so will close. I wonder if the regex-way of splitting multi-document yaml would be helpful to anyone else, and should go into docs somewhere?

@nyurik nyurik closed this as completed Oct 28, 2021
@github-actions
Copy link

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues.
If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 28, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants