如何使用terraform helm provider更新statfulset规范



我有一个使用地形头盔提供程序创建的状态集。我需要更新属性(serviceName)的值在状态集,但我一直得到以下错误

Error: failed to replace object: StatefulSet.apps "value" is invalid: spec: Forbidden:
updates to statefulset spec for fields other than 'replicas', 'template', and 
'updateStrategy' are forbidden

错误是非常描述性的,我知道serviceName属性不能改变,但我如何更新这个属性?我完全可以有一个停机时间,也可以让helm删除所有旧的豆荚并创建新的豆荚。

我试过在我的舵图中将force_updaterecreate_pods属性设置为true,没有运气。手动删除旧的舵图对我来说不是一个选择。

我维护定制提供程序,与Terraform的helm集成不同,它跟踪Terraform状态下的每个Kubernetes资源。因此,它将显示计划中实际Kubernetes资源的更改。而且,这里最重要的是,当您必须更改不可变字段时,它还将生成销毁并重新创建计划。

这是一项迁移工作,但是您可以通过使用helm template命令将YAML写入磁盘,然后将Kustomize提供程序指向YAML,从而使其更容易。

作为Kubestack(我维护的用于AKS、EKS和GKE的Terraform框架)的一部分,我还提供了一个便利模块。

你可以这样使用它,让它应用helm template的输出:

module "example_stateful_set" {
source  = "kbst.xyz/catalog/custom-manifests/kustomization"
version = "0.1.0"
configuration_base_key = "default"
configuration = {
default = {
resources = [
"${path.root}/path/to/helm/template/output.yaml"
]
}
}
}

最后,你必须将现有的Kubernetes资源导入到Terraform状态,这样提供商才能开始管理现有的资源。

相关内容

  • 没有找到相关文章

最新更新