Terraform k8sraw provider error: produced an unexpected new value for was present, but now absent while template is created
Terraform k8sraw provider error: produced an unexpected new value for was present, but now absent while template is created
我们的 Terraform 部署最近失败,错误:
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.
k8sraw 提供者不是 terraform 官方提供者,它是从 github 获得的,这个项目的 url 在:
https://github.com/nabancard/terraform-provider-kubernetes-yaml
提供程序在一周前之前一直运行良好,我们发现它从 2021 年 10 月 15 日起出现上述错误。
我们使用的terraform版本是0.12.24
高级感谢帮助。
我有使用 k8sraw 的示例代码:
- 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
}
- 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
}
- templates/test-workflow.yml.tpl
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: test-
spec:
entrypoint: hellomessage
serviceAccountName: "${service_account}"
arguments:
parameters:
- name: message
templates:
# pipeline steps
- name: hellomessage
steps:
- - name: test-pipeline
templateRef:
name: ${test_template_ref}
template: test-pipeline
arguments:
parameters:
- name: message
value: "{{workflow.parameters.message}}"
- templates/test-template.yml.tpl
---
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: ${workflow_template_name}
namespace: ${k8s_namespace}
spec:
templates:
- name: test-pipeline
inputs:
parameters:
- name: message
steps:
- - name: print-message
template: messageout
arguments:
parameters:
- name: message
value: "{{inputs.parameters.message}}"
# individual templates for each step
- name: messageout
retryStrategy:
limit: 3
backoff:
duration: "10" # Must be a string. Default unit is seconds. Could also be a Duration, e.g.: "2m", "6h", "1d"
factor: 2
maxDuration: "60m" # Must be a string. Default unit is seconds. Could also be a Duration, e.g.: "2m", "6h", "1d"
retryPolicy: "Always" # Retry on errors AND failures. Also available: "OnFailure" (default), "OnError"
resubmitPendingPods: true
inputs:
parameters:
- name: message
container:
image: 'docker/whalesay:latest'
command: [sh, -c]
args:
- >-
echo -n {{inputs.parameters.message}} > /tmp/hello_world.txt;
cat /tmp/hello_world.txt
- vars/test.tfvars
k8s_namespace ="test-account"
service_account = "argo"
- backend/backend.tfvars
region = "us-east-1"
bucket = "test"
key = "test/terraform.tfstate"
dynamodb_table = "test"
acl = "private"
- Terraform 命令:
$ terraform init -force-copy -upgrade -backend-config="backends/backend.tfvars"
$ terraform workspace select testdeployment || terraform workspace new testdeployment
$ terraform plan -var-file="vars/test.tfvars"
$ terraform apply -auto-approve -var-file="vars/test.tfvars"
我在其他网站找到了答案,所以答案是将terraform升级到0.14.9或更高版本,然后将k8sraw替换为kubernetes_manifest。
具体如何更改,请参考以下内容link:
https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/manifest
和
https://www.terraform.io/docs/language/functions/yamldecode.html
干杯!
我们的 Terraform 部署最近失败,错误:
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.
k8sraw 提供者不是 terraform 官方提供者,它是从 github 获得的,这个项目的 url 在: https://github.com/nabancard/terraform-provider-kubernetes-yaml
提供程序在一周前之前一直运行良好,我们发现它从 2021 年 10 月 15 日起出现上述错误。
我们使用的terraform版本是0.12.24
高级感谢帮助。
我有使用 k8sraw 的示例代码:
- 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
}
- 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
}
- templates/test-workflow.yml.tpl
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: test-
spec:
entrypoint: hellomessage
serviceAccountName: "${service_account}"
arguments:
parameters:
- name: message
templates:
# pipeline steps
- name: hellomessage
steps:
- - name: test-pipeline
templateRef:
name: ${test_template_ref}
template: test-pipeline
arguments:
parameters:
- name: message
value: "{{workflow.parameters.message}}"
- templates/test-template.yml.tpl
---
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
name: ${workflow_template_name}
namespace: ${k8s_namespace}
spec:
templates:
- name: test-pipeline
inputs:
parameters:
- name: message
steps:
- - name: print-message
template: messageout
arguments:
parameters:
- name: message
value: "{{inputs.parameters.message}}"
# individual templates for each step
- name: messageout
retryStrategy:
limit: 3
backoff:
duration: "10" # Must be a string. Default unit is seconds. Could also be a Duration, e.g.: "2m", "6h", "1d"
factor: 2
maxDuration: "60m" # Must be a string. Default unit is seconds. Could also be a Duration, e.g.: "2m", "6h", "1d"
retryPolicy: "Always" # Retry on errors AND failures. Also available: "OnFailure" (default), "OnError"
resubmitPendingPods: true
inputs:
parameters:
- name: message
container:
image: 'docker/whalesay:latest'
command: [sh, -c]
args:
- >-
echo -n {{inputs.parameters.message}} > /tmp/hello_world.txt;
cat /tmp/hello_world.txt
- vars/test.tfvars
k8s_namespace ="test-account"
service_account = "argo"
- backend/backend.tfvars
region = "us-east-1"
bucket = "test"
key = "test/terraform.tfstate"
dynamodb_table = "test"
acl = "private"
- Terraform 命令:
$ terraform init -force-copy -upgrade -backend-config="backends/backend.tfvars"
$ terraform workspace select testdeployment || terraform workspace new testdeployment
$ terraform plan -var-file="vars/test.tfvars"
$ terraform apply -auto-approve -var-file="vars/test.tfvars"
我在其他网站找到了答案,所以答案是将terraform升级到0.14.9或更高版本,然后将k8sraw替换为kubernetes_manifest。
具体如何更改,请参考以下内容link: https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/manifest 和 https://www.terraform.io/docs/language/functions/yamldecode.html
干杯!