【问题标题】:EKS cluster - api endpoint access - public/privateEKS 集群 - api 端点访问 - 公有/私有
【发布时间】:2019-08-12 11:08:31
【问题描述】:

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

我希望对 EKS 集群进行 IP 限制访问。 参考 - Terraform - Master cluster SG

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

【问题讨论】:

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


    【解决方案1】:

    当您创建新集群时,Amazon EKS 会为您用来与集群通信的托管 Kubernetes API 服务器创建一个终端节点(正如您所做的那样,使用 kubectl 等 Kubernetes 管理工具)。 默认情况下,此 API 服务器端点对 Internet 是公共,并且使用 AWS Identity and Access Management (IAM) 和本机 Kubernetes 的组合来保护对 API 服务器的访问基于角色的访问控制 (RBAC)。

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

    如果您想使用 Terraform 配置 EKS 并管理网络拓扑,则可以通过 VPC(虚拟专用网络)进行。您可以检查此VPC Terraform Module 以获得所有正确的设置。 希望对您有所帮助。

    【讨论】:

    • 谢谢。我可能需要进一步检查 kubeconfig 和 RBAC 以保护公共端点。
    【解决方案2】:

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

    这是 AWS 提供商(尚未发布)2.3.0 版本中的 added,可以配置为 aws_eks_cluster resource 的 vpc_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]}",
        ]
      }
    }
    

    【讨论】:

    • @ydaetsjcoR qq on `VPC 集群驻留` - EKS cluster(主节点)在我配置的同一个 VPC 上是吗?
    • 我想弄清楚我是否在东部有 vpc1,在西部有 vpc2。我是否能够使用来自具有相同集群的两个 vpc 的管理节点。如果是,我创建入口将托管在与集群相同的 vpc 中。或者为每个 vpc wrt 区域创建集群
    • 如果 VPC 之间存在 VPC 对等连接或其他形式的私有连接(例如经过 NAT 的 VPN,因此流量似乎来自 VPN 实例),它应该可以工作。也就是说,在这种情况下,我可能会有单独的 EKS 集群,除非您有充分的理由不这样做。
    猜你喜欢
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 2019-08-25
    • 2021-04-11
    • 2020-10-21
    • 2021-12-28
    • 2020-03-03
    • 2019-11-28
    相关资源
    最近更新 更多