Кластер EKS - доступ к конечной точке API - общедоступный / частный - PullRequest
2 голосов
/ 21 марта 2019

Я подготовил кластер EKS на AWS с открытым доступом к конечной точке API. При этом я настроил SG с входом только с определенного IP. Но я все еще мог запустить kubectl get svc против кластера при доступе к нему с другого IP.

Я хочу, чтобы IP-доступ к кластеру EKS был ограничен. ref - Terraform - Мастер кластер SG

enter image description here

Если публичный доступ включен, означает ли это, что любой, у кого есть имя кластера, может развернуть что-нибудь?

Ответы [ 2 ]

3 голосов
/ 21 марта 2019

Когда вы создаете новый кластер, Amazon EKS создает конечную точку для управляемого сервера API Kubernetes, который вы используете для связи с вашим кластером (используя инструменты управления Kubernetes, такие как kubectl, как вы это сделали). По умолчанию , эта конечная точка сервера API является общедоступной для Интернета, и доступ к серверу API защищен с использованием комбинации AWS Identity and Access Management (IAM) и нативного Kubernetes Role BasedКонтроль доступа (RBAC).

Таким образом, публичный доступ не означает, что любой, у кого есть имя кластера, может развернуть что угодно.Подробнее об этом можно прочитать в документации по управлению конечной точкой кластера Amazon EKS AWS.

Если вы хотите предоставить EKS Terraform и управлять топологией сети, это происходит через VPC (виртуальная частная сеть).Вы можете проверить этот VPC Terraform Module , чтобы получить все необходимые настройки.Надеюсь, это поможет.

1 голос
/ 21 марта 2019

Как и Клэр Белливье ' ответ о том, как кластеры EKS защищены с помощью аутентификации с использованием IAM и RBAC, вы можете сейчас также настроить свой кластер EKS на доступен только из частных сетей, таких как VPC, в котором находится кластер, или из любых одноранговых VPC.

Это было добавлено в (пока не выпущенной) версии 2.3.0 провайдера AWS и может быть настроено как часть конфигурации vpc_options ресурса aws_eks_cluster * * 1015

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]}",
    ]
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...