如何将“–kubelet-extra-args”传递给 Terraform aws_eks_node_group 创建的 AWS EKS 节点组?

per*_*ian 1 amazon-web-services kubernetes terraform terraform-provider-aws amazon-eks

我正在按照https://docs.aws.amazon.com/eks/latest/userguide/cni-increase-ip-addresses.html创建 EKS 托管节点组的示例进行操作

配置要求我/etc/eks/bootstrap.sh通过--kubelet-extra-args参数将附加参数传递给脚本。

我的 EKS 工作节点是通过 Terraform 资源配置的aws_eks_node_group

我找不到任何配置资源的选项来允许我传递参数--kubelet-extra-args

我是看错地方还是没有办法实现这一点?

Hug*_*sta 5

如果您需要传递,--kubelet-extra-args您可以选择将用户数据传递到实例,这些数据可用于执行常见的自动配置任务,甚至在实例启动后运行脚本。

在我看来,您应该有一个 tpl(模板)文件,其中包含创建节点时需要运行的脚本。

像这样的userdata.tpl 文件

#!/bin/bash
%{ if length(kubelet_extra_args) > 0 }
export KUBELET_EXTRA_ARGS="${kubelet_extra_args}"
%{ endif }
%{ if length(kubelet_extra_args) > 0 || length (bootstrap_extra_args) > 0 || length (after_cluster_joining_userdata) > 0 }

/etc/eks/bootstrap.sh --apiserver-endpoint '${cluster_endpoint}' --b64-cluster-ca '${certificate_authority_data}' ${bootstrap_extra_args} '${cluster_name}'
Run Code Online (Sandbox Code Playgroud)

先前的 userdata.tpl 文件是使用templatefile函数调用的,该函数呈现脚本上的所有值。

例如,在另一个文件中,您将拥有一个名为aws_launch_template或 的资源,其中包含像这样的aws_launch_configurationuser_data输入。base64encode

最后,应用所有更改,然后创建新节点,它们将使用新配置创建。

此处完成 EKS 节点组实施,以及此处如何部署它的示例

我希望它对你有用。