클러스터 액세스 - Eksctl 사용 설명서

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

클러스터 액세스

Kubernetes API 서버 엔드포인트에 대한 액세스 관리

기본적으로 EKS 클러스터는 Kubernetes API 서버를 공개적으로 노출하지만 VPC 서브넷 내에서 직접 노출하지는 않습니다(public=true, private=false). VPC 내에서 API 서버로 향하는 트래픽은 먼저 VPC 네트워크(Amazon의 네트워크 아님)를 종료한 다음 다시 입력하여 API 서버에 도달해야 합니다.

클러스터에 대한 Kubernetes API 서버 엔드포인트 액세스는 클러스터 구성 파일을 사용하여 클러스터를 생성할 때 퍼블릭 및 프라이빗 액세스를 위해 구성할 수 있습니다. 아래 예제:

vpc: clusterEndpoints: publicAccess: <true|false> privateAccess: <true|false>

Kubernetes API 엔드포인트 액세스를 구성할 때 몇 가지 추가 주의 사항이 있습니다.

  1. EKS는 프라이빗 또는 퍼블릭 액세스가 활성화되지 않은 클러스터를 허용하지 않습니다.

  2. EKS는 프라이빗 액세스만 활성화할 수 있는 구성을 생성할 수 있지만 eksctl은 클러스터 생성 중에 이를 지원하지 않습니다. eksctl이 작업자 노드를 클러스터에 조인할 수 없기 때문입니다.

  3. 프라이빗 전용 Kubernetes API 엔드포인트 액세스 권한이 있도록 클러스터를 업데이트하면 기본적으로 Kubernetes 명령(예: kubectl)과 , eksctl delete cluster eksctl utils write-kubeconfig및 가능한 경우 명령을 클러스터 VPC 내에서 실행해야 eksctl utils update-kube-proxy 합니다.

    • 이를 위해서는 다양한 AWS 리소스를 일부 변경해야 합니다. 자세한 내용은 클러스터 API 서버 엔드포인트를 참조하세요.

    • vpc.extraCIDRs이 ControlPlaneSecurityGroup에 추가 CIDR 범위를 추가할를 제공하여 VPC 외부의 서브넷이 kubernetes API 엔드포인트에 도달할 수 있도록 할 수 있습니다. 마찬가지로 IPv6 CIDR 범위를 추가vpc.extraIPv6CIDRs하기 위해를 제공할 수도 있습니다.

다음은 utils 하위 명령을 사용하여 Kubernetes API 엔드포인트 액세스를 구성하는 방법의 예입니다.

eksctl utils update-cluster-vpc-config --cluster=<clustername> --private-access=true --public-access=false

ClusterConfig 파일을 사용하여 설정을 업데이트하려면 다음을 사용합니다.

eksctl utils update-cluster-vpc-config -f config.yaml --approve

플래그를 전달하지 않으면 현재 값이 유지됩니다. 제안된 변경 사항에 만족하면 approve 플래그를 추가하여 실행 중인 클러스터를 변경합니다.

EKS Kubernetes 퍼블릭 API 엔드포인트에 대한 액세스 제한

EKS 클러스터의 기본 생성은 Kubernetes API 서버를 공개적으로 노출합니다.

이 기능은 퍼블릭 엔드포인트에만 적용됩니다. API 서버 엔드포인트 액세스 구성 옵션은 변경되지 않으며, 클러스터가 인터넷에서 액세스할 수 없도록 퍼블릭 엔드포인트를 비활성화할 수 있습니다. (소스: https://github.com/aws/containers-roadmap/issues/108#issuecomment-552766489)

클러스터를 생성할 때 퍼블릭 API 엔드포인트에 대한 액세스를 CIDRs 세트로 제한하려면 publicAccessCIDRs 필드를 설정합니다.

vpc: publicAccessCIDRs: ["1.1.1.1/32", "2.2.2.0/24"]

기존 클러스터에 대한 제한을 업데이트하려면 다음을 사용합니다.

eksctl utils update-cluster-vpc-config --cluster=<cluster> 1.1.1.1/32,2.2.2.0/24

ClusterConfig 파일을 사용하여 제한을 업데이트하려면에서 새 CIDRs 설정하고 다음을 vpc.publicAccessCIDRs 실행합니다.

eksctl utils update-cluster-vpc-config -f config.yaml
중요

노드 그룹을 설정하고 publicAccessCIDRs 생성하는 경우를 로 privateAccess 설정true하거나 노드의 IPs publicAccessCIDRs 목록에 추가해야 합니다.

제한된 액세스로 인해 노드가 클러스터 API 엔드포인트에 액세스할 수 없는 경우 노드가 퍼블릭 엔드포인트에 액세스할 수 없고 클러스터에 조인하지 context deadline exceeded 못하여 클러스터 생성에 실패합니다.

단일 명령으로 클러스터에 대한 API 서버 엔드포인트 액세스 및 퍼블릭 액세스 CIDRs을 모두 업데이트하려면 다음을 실행합니다.

eksctl utils update-cluster-vpc-config --cluster=<cluster> --public-access=true --private-access=true --public-access-cidrs=1.1.1.1/32,2.2.2.0/24

구성 파일을 사용하여 설정을 업데이트하려면:

vpc: clusterEndpoints: publicAccess: <true|false> privateAccess: <true|false> publicAccessCIDRs: ["1.1.1.1/32"]
eksctl utils update-cluster-vpc-config --cluster=<cluster> -f config.yaml