AWS 네트워킹 준비

GKE on AWS를 사용하여 외부에 노출된 부하 분산기를 설정하려면 VPC 및 공개 서브넷에 클러스터 ID로 태그를 지정해야 합니다. VPC 및 서브넷에 이미 태그를 지정한 경우 인그레스 사용 설정으로 건너뛰세요.

시작하기 전에

GKE on AWS를 사용하기 전에 다음 작업을 수행했는지 확인합니다.

GKE on AWS는 부하 분산기 엔드포인트를 포함하는 서브넷에 태그를 필요로 합니다. GKE on AWS는 AWSCluster 리소스의 spec.Networking.ServiceLoadBalancerSubnetIDs 필드에 지정된 모든 서브넷에 자동으로 태그를 지정합니다.

사용자 클러스터에 서브넷을 추가하려고 하거나 기존 서브넷에 태그를 다시 적용해야 하는 경우 다음 단계를 수행하세요.

  1. anthos-aws 디렉터리에서 anthos-gke를 사용하여 컨텍스트를 관리 서비스로 전환합니다.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. kubectl을 사용하여 클러스터의 AWS VPC ID를 가져오고 이를 변수로 저장합니다.

     export VPC_ID=$(\
     env HTTPS_PROXY=http://localhost:8118 \
     kubectl get awscluster cluster-0 -o jsonpath='{.spec.networking.vpcID}')
    
  3. echo를 사용하여 변수 콘텐츠를 확인합니다. vpc-12345678abcdef0과 유사한 결과가 출력됩니다.

    echo $VPC_ID
    
  4. 클러스터 ID를 환경 변수에 저장합니다.

    export CLUSTER_ID=$(\
    env HTTPS_PROXY=http://localhost:8118 \
    kubectl get awscluster cluster-0 -o jsonpath='{.status.clusterID}')
    

    echo로 변수를 확인할 수 있습니다.

    echo $CLUSTER_ID
    

    응답에 클러스터 ID가 포함됩니다.

    gke-12345678
    
  5. GKE on AWS를 전용 VPC에 설치한 경우 aws 명령줄 도구를 사용하여 서브넷 ID를 가져올 수 있습니다.

    다음 옵션 중 하나를 선택합니다.

    • 공개: 공개 서브넷에 서비스를 노출하려는 경우
    • 비공개: 비공개 서브넷에 서비스를 노출하려는 경우
    • 여러 서브넷: 여러 서브넷에 서비스를 노출하려는 경우

    공개

     export SUBNET_ID=$(aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \
     --query "Subnets[*].SubnetId" \
     --output text)
    

    서브넷 ID가 포함된 객체가 출력되며 subnet-1234abcdefg와 유사합니다. echo로 변수를 확인할 수 있습니다.

    echo $SUBNET_ID
    

    응답에 서브넷 ID가 포함됩니다.

    subnet-012345678abcdef
    

    비공개

     export SUBNET_ID=$(aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
     --query "Subnets[*].SubnetId" \
     --output text)
    

    서브넷 ID가 포함된 객체가 출력되며 subnet-1234abcdefg와 유사합니다. echo로 변수를 확인할 수 있습니다.

    echo $SUBNET_ID
    

    응답에 서브넷 ID가 포함됩니다.

    subnet-012345678abcdef
    

    여러 서브넷

    AWSNodePools에 여러 서브넷을 사용하는 경우(예를 들어 여러 가용성 영역을 사용하는 경우) 서브넷 ID에 개별적으로 태그를 지정해야 합니다.

    aws ec2 describe-subnets로 서브넷 ID 목록을 검색합니다.

    모든 공개 서브넷 목록을 가져오려면 다음 명령어를 실행합니다.

    aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \
     --query "Subnets[*].SubnetId" \
     --output text
    

    모든 비공개 서브넷 목록을 가져오려면 다음 명령어를 실행합니다.

    aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
     --query "Subnets[*].SubnetId" \
     --output text
    

    응답에 서브넷 ID가 포함됩니다.

    subnet-012345678abcdef
    subnet-abcdef123456789
    subnet-123456789abcdef
    
  6. 클러스터 ID로 서브넷에 태그를 지정합니다. 여러 서브넷이 있는 경우 여러 서브넷을 선택합니다.

    단일 서브넷

    aws ec2 create-tags \
    --resources $SUBNET_ID \
    --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared
    

    여러 서브넷

    각 서브넷에 대해 다음 명령어를 실행합니다.

    aws ec2 create-tags \
    --resources subnet-ids \
    --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared
    

    subnet-ids를 공백으로 구분된 서브넷 ID 목록으로 바꿉니다. 예를 들면 subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef입니다.