EKS群集-api端点访问-公共/私有

时间:2019-03-21 14:44:52

标签: amazon-web-services terraform terraform-provider-aws amazon-eks

我已经在AWS上配置了EKS集群,并且可以对api端点进行公共访问。这样做时,我仅使用来自特定IP的入口配置了SG。但是当从另一个IP访问群集时,我仍然可以对群集运行kubectl get svc

我想对EKS群集进行IP限制访问。 ref-Terraform - Master cluster SG

enter image description here

如果启用了公共访问权限,是否意味着拥有群集名称的任何人都可以部署任何东西?

2 个答案:

答案 0 :(得分:3)

创建新集群时,Amazon EKS会为您用来与集群通信的托管Kubernetes API服务器创建一个终端节点(已使用kubectl之类的Kubernetes管理工具)。 默认情况下,此API服务器终端节点对互联网公开,并且结合使用AWS Identity and Access Management(IAM)和本机Kubernetes保护对API服务器的访问基于角色的访问控制(RBAC)。

因此,公共访问权限并不意味着拥有群集名称的任何人都可以部署任何东西。您可以在Amazon EKS Cluster Endpoint Access Control AWS文档中了解有关此内容的更多信息。

如果要使用Terraform来配置EKS并管理网络拓扑,请通过VPC(虚拟专用网络)进行。您可以选中此VPC Terraform Module以获取所有正确的设置。 希望会有所帮助。

答案 1 :(得分:1)

除了Claire Bellivier'answer关于如何使用IAM和RBAC通过身份验证保护EKS群集外,您还可以now将EKS群集配置为仅可从私有网络访问,例如群集所在的VPC或任何对等VPC。

此版本已经added在AWS提供程序的2.3.0版本中(尚未发布),可以被配置为aws_eks_cluster resourcevpc_options配置的一部分:

resource "aws_eks_cluster" "example" {
  name     = %[2]q
  role_arn = "${aws_iam_role.example.arn}"

  vpc_config {
    endpoint_private_access = true
    endpoint_public_access  = false

    subnet_ids = [
      "${aws_subnet.example.*.id[0]}",
      "${aws_subnet.example.*.id[1]}",
    ]
  }
}