nabancard / terraform-provider-kubernetes-yaml

A basic terraform provider which allows generic YAML config for Kubernetes
Mozilla Public License 2.0
50 stars 9 forks source link

Terraform k8sraw provider error: produced an unexpected new value for was present, but now absent while template is created #10

Open xiangliang1 opened 3 years ago

xiangliang1 commented 3 years ago

Hi, there,

Our terraform deployment failed recently, with error:

Error: Provider produced inconsistent result after apply
When applying changes to k8sraw_yaml.test-template, provider
"registry.terraform.io/-/k8sraw" produced an unexpected new value for was
present, but now absent.
This is a bug in the provider, which should be reported in the provider's own
issue tracker.

The k8sraw had been working fine for a long time until a week ago, we find it failed with above error from Oct 15, 2021.

The terraform version we used are 0.12.24

$ ../ht-traffic-signal/terraform -v
Terraform v0.12.24

Your version of Terraform is out of date! The latest version
is 1.0.9. You can update by downloading from https://www.terraform.io/downloads.html

Advanced thanks to any help.

I have example code that uses k8sraw:

  1. main.tf
    
    terraform {
    required_version = ">= 0.12.0"
    backend "s3" {}
    }

provider "local" { version = "~> 1.4" }

provider "template" { version = "~> 2.1" }

provider "kubernetes" { version = ">=1.6.2" config_path = "~/.kube/kube.conf" }

provider "k8sraw" {} data "template_file" "test-template" { template = "${file("${path.module}/templates/test-template.yml.tpl")}"

vars = { workflow_template_name = var.template_ref_name, k8s_namespace = var.k8s_namespace, } }

resource "k8sraw_yaml" "test-template" { yaml_body = data.template_file.test-template.rendered }

data "template_file" "workflow" { template = "${file("${path.module}/templates/test-workflow.yml.tpl")}" vars = { test_template_ref = var.template_ref_name service_account = "${var.service_account}", } }

resource "local_file" "test-template-file" { filename = "${path.module}/workflow/${var.test_template_file_name}.yaml" content = "${data.template_file.test-template.rendered}" } resource "local_file" "workflow" { filename = "${path.module}/workflow/${var.test_workflow_file_name}.yaml" content = data.template_file.workflow.rendered }

2. variables.tf

variable "template_ref_name" { description = "workflow template name for detector pipeline" type = string default = "test-test-deploy-try-template" }

variable "k8s_namespace" { description = "kubernetes namespace name" type = string default = "default" }

variable "test_template_name" { description = "test workflow template name" type = string default = "test-template" } variable "test_workflow_file_name" { description = "filename for populated test workflow" default = "test-workflow" type = string }

variable "test_template_file_name" { description = "filename for populated test template" default = "test-template" type = string }

variable "service_account" { description = "workflow service account" type = string default = "default" }

variable "env" { description = "deployment environment: test, dev, sit. and cit" type = string }

3. templates/test-workflow.yml.tpl

apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: test- spec: entrypoint: hellomessage serviceAccountName: "${service_account}" arguments: parameters:

xiangliang1 commented 3 years ago

Had anyone seen this post?

TheDoubleJo commented 2 years ago

I had the same issue and proceed to use this instead: https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/manifest