禁用EKS集群公网端点后,如何通过kubeconfig访问集群?
用VPC内堡垒机做中转
部署一台在EKS所在VPC里的EC2实例当堡垒机,团队成员通过AWS SSM Session Manager或者VPN接入VPC后连接堡垒机,Gitlab CI也走这个通道。堡垒机上配好kubectl和指向EKS私有端点的kubeconfig,所有人通过堡垒机操作集群。Terraform变更时,给EKS provider加proxy_url参数,或者设置HTTPS_PROXY环境变量指向堡垒机的代理地址(比如socks5://<堡垒机IP>:1080),让Terraform通过堡垒机访问集群API。用VPC端点+私有网络接入
关闭公网端点后EKS私有端点默认是开启状态,在VPC里创建EKS的VPC端点(类型为com.amazonaws.<区域>.eks),让VPC内资源能直接访问EKS API。外部的团队成员和Gitlab CI通过AWS VPN或者Direct Connect接入到VPC,流量走私有网络到达EKS私有端点。把Terraform runner部署在VPC内的EC2实例或者EKS Pod中,Gitlab CI使用这个自托管runner执行变更操作。临时开公网端点+IAM权限控制(应急方案)
如果只是临时需要操作集群,可以短暂打开cluster_endpoint_public_access,同时把cluster_endpoint_public_access_cidrs设为0.0.0.0/0,但必须严格配置EKS的IAM身份验证,只给授权的IAM用户/角色开放集群访问权限,操作完成后立刻关闭公网端点,这个方法不建议长期使用。
内容的提问来源于stack exchange,提问作者Sunshine

