hashicorp / terraform-provider-kubernetes

Terraform Kubernetes provider
https://www.terraform.io/docs/providers/kubernetes/
Mozilla Public License 2.0
1.59k stars 971 forks source link

Panic planning kubernetes_manifest #1475

Closed nyurik closed 3 years ago

nyurik commented 3 years ago

Planning multiple kubernetes_manifest resources panicked :boom:. 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)

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

:boom:

References

Community Note

GenPage commented 3 years ago

@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 commented 3 years ago

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?

github-actions[bot] commented 2 years ago

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.