我们有一个需要更新守护程序集上的AWS EKS CNI配置的情况。但解决方案只能通过kubectl命令。我们如何通过terraform代码更新具有特定值的现有守护程序集?要求溶液必须在IAC中。给出的等效kubectl命令是
kubectl set env daemonset -n kube-system aws-node WARM_IP_TARGET=2,MINIMUM_IP_TARGET=12
以数字显示的值计划为地形中的变量。
您想要的并不存在。以下是您所要求的开放式Terraform Github问题:
https://github.com/hashicorp/terraform-provider-kubernetes/issues/723
即使它确实存在,我也不会考虑IaC,因为它不是声明性的(还不如运行bash脚本(。
在我看来,真正的解决方案是AWS允许提供裸集群;插件";可以完全通过IaC工具进行管理。但这也不存在:
https://github.com/aws/containers-roadmap/issues/923
最接近的方法是使用null_resource来执行补丁。下面是Github问题中的一个例子:
https://github.com/hashicorp/terraform-provider-kubernetes/issues/723#issuecomment-679423792
因此,您的最终结果将类似于此:
resource "null_resource" "patch_aws_cni" {
triggers = {
always_run = timestamp()
}
provisioner "local-exec" {
command = <<EOF
# do all those commands to get kubectl and auth info, then run:
kubectl set env daemonset -n kube-system aws-node WARM_IP_TARGET=2,MINIMUM_IP_TARGET=12
EOF
}
}