如何在Terraform AWS EKS托管节点组中添加自定义user_data?
问题:如何为EKS托管节点组的启动模板添加自定义user_data?
我希望通过user_data功能在EKS节点启动时添加自定义配置,当前使用Terraform的terraform-aws-modules/eks/aws模块创建集群和托管节点组,配置如下:
module "eks" { source = "terraform-aws-modules/eks/aws" cluster_name = local.cluster_name cluster_version = "1.31" enable_cluster_creator_admin_permissions = true cluster_endpoint_public_access = true cluster_endpoint_public_access_cidrs = var.cluster_public_access_cidrs cluster_addons = { aws-ebs-csi-driver = { most_recent = true service_account_role_arn = module.ebs_csi_irsa_role.iam_role_arn } } vpc_id = module.vpc.vpc_id subnet_ids = module.vpc.private_subnets eks_managed_node_group_defaults = { ami_type = "AL2_x86_64" iam_role_additional_policies = { AmazonEBSCSIDriverPolicy = "arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy" } } eks_managed_node_groups = { one = { name = "node-group-1" instance_types = ["t3.small"] min_size = 1 max_size = 3 desired_size = 1 } } }
请问有没有简便方法为该节点组的启动模板添加自定义user_data?
解决方案:使用
pre_bootstrap_user_data注入自定义配置 可以通过在eks_managed_node_group_defaults块中添加pre_bootstrap_user_data字段实现需求,该字段的内容会在EKS节点的bootstrap.sh脚本执行前注入,适合执行节点初始化阶段的自定义操作。
修改后的配置示例:
... eks_managed_node_group_defaults = { ami_type = "AL2_ARM_64" iam_role_additional_policies = { AmazonEBSCSIDriverPolicy = "arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy" } pre_bootstrap_user_data = <<-EOF yum install -y jq echo XYZ > /tmp/xyz.txt EOF } ...
上述配置会在节点启动时自动安装jq工具,并创建/tmp/xyz.txt文件,已验证自定义配置可正常生效。
内容的提问来源于stack exchange,提问作者Eldad Assis
相关产品推荐
相关产品推荐

