AWS용 Anthos 클러스터에서 프록시 사용

이 주제에서는 HTTP/HTTPS 프록시를 통해 AWS용 Anthos 클러스터(GKE on AWS) 관리 서비스와 Connect의 트래핑을 라우팅하는 방법을 보여줍니다.

다음과 같은 이유로 AWS용 Anthos 클러스터는 인터넷 액세스가 필요합니다.

  • 관리 서비스는 Connect에 사용자 클러스터를 등록합니다.
  • 사용자 클러스터는 Connect Agent를 실행합니다.
  • 모든 관리 서비스와 사용자 클러스터 노드는 Container Registry에서 이미지를 다운로드합니다.

이 트래픽은 HTTP 또는 HTTPS 프록시를 통해 라우팅할 수 있습니다. AWS용 Anthos 클러스터 1.8부터는 관리형 서비스 및 각 클러스터에 대해 개별 프록시 설정을 구성할 수 있습니다. 프록시 설정을 변경하는 방법에 대한 자세한 내용은 클러스터 프록시 설정 변경을 참조하세요.

anthos-gke.yaml에서 참조되는 JSON 파일에서 프록시 설정을 선언합니다.

기본 요건

프록시를 사용하도록 AWS용 Anthos 클러스터를 구성하려면 먼저 VPC 엔드포인트를 사용 설정하고 프록시의 보안 그룹을 정의하고 특정 Google Cloud 서비스에 아웃바운드 연결을 허용해야 합니다.

HTTP 프록시를 사용하려면 사용자 클러스터가 Kubernetes 1.17 이상을 실행해야 합니다.

VPC 엔드포인트 사용 설정

프록시를 구성하기 전에 AWS용 Anthos 클러스터 설치를 위해 VPC 엔드포인트를 만들어야 합니다. VPC 엔드포인트를 사용하면 비공개 서브넷의 리소스가 공개 인터넷 액세스 없이 AWS 서비스에 액세스할 수 있습니다.

다음 표에는 엔드포인트 유형 및 엔드포인트에 대한 액세스 권한이 필요한 각 AWS용 Anthos 클러스터 구성요소의 보안 그룹과 함께 AWS용 Anthos 클러스터에서 VPC 엔드포인트가 필요한 AWS 서비스가 나열되어 있습니다.

서비스 엔드포인트 유형 보안 그룹
자동 확장 인터페이스 관리, 제어 영역, 노드 풀
EC2 인터페이스 관리, 제어 영역, 노드 풀
부하 분산 인터페이스 관리, 제어 영역, 노드 풀
키 관리 서비스 인터페이스 관리, 제어 영역, 노드 풀
S3 게이트웨이 관리, 제어 영역, 노드 풀
보안 토큰 서비스(STS) 인터페이스 관리, 제어 영역, 노드 풀

AWS VPC 콘솔에서 엔드포인트를 만들 수 있습니다. VPC 엔드포인트를 만들 때 설정한 옵션은 VPC 구성에 따라 다릅니다.

보안 그룹 정의

AWS용 Anthos 클러스터 구성요소는 프록시 서버에 연결할 수 있어야 합니다. 프록시 서버에 대한 아웃바운드 연결을 허용하는 AWS 보안 그룹을 만들거나 찾습니다. 보안 그룹은 관리, 제어 영역, 노드 풀 보안 그룹에서 프록시 주소 및 포트로의 아웃바운드 액세스를 허용해야 합니다. 이 보안 그룹(예: sg-12345678)의 ID를 저장합니다.

유형 프로토콜 발신 포트 수신 포트 주소
이그레스 TCP 프록시 포트: 프록시 포트: 프록시 보안 그룹

Google Cloud 서비스에 대한 아웃바운드 연결 허용

AWS용 Anthos 클러스터에서 Google Cloud 서비스에 연결하려면 프록시 서버에서 다음 도메인에 대한 트래픽을 허용해야 합니다.

  • gkeconnect.googleapis.com
  • gkehub.googleapis.com
  • oauth2.googleapis.com
  • storage.googleapis.com
  • www.googleapis.com
  • gcr.io
  • k8s.gcr.io
  • EC2-REGION.ec2.archive.ubuntu.com

EC2-REGION을 AWS용 Anthos 클러스터 설치가 실행되는 AWS EC2 리전으로 바꿉니다. 예: us-west-1.ec2.archive.ubuntu.com/

Prometheus 및 Kiali와 함께 Anthos Service Mesh를 사용하는 경우 다음 도메인에서 아웃바운드 액세스를 허용합니다.

  • docker.io
  • quay.io

프록시 구성 JSON 파일 만들기

프록시 구성 JSON 파일에는 키 이름이 httpProxy, httpsProxy, noProxy인 키-값 쌍 3개가 포함된 객체가 1개 포함되어 있습니다. 사용자 이름과 비밀번호는 서버에 적용하기 전에 AWS KMS 키로 봉투 암호화를 사용합니다.

{
  "httpProxy": "HTTP_PROXY",
  "httpsProxy": "HTTPS_PROXY",
  "noProxy": "NO_PROXY"
}

다음을 바꿉니다.

  • 프록시 서버 주소가 있는 HTTP_PROXY를 사용하여 HTTP 요청을 라우팅합니다.
  • 프록시 서버가 있는 HTTPS_PROXY를 사용하여 HTTPS 요청을 라우팅합니다.
  • NO_PROXY는 프록시가 사용되지 않는 IP, CIDR 범위 및 도메인의 선택적 목록입니다.

자세한 내용은 구성 참조를 확인하세요. 예를 들어 다음 구성은 10.0.0.254에서 프록시를 사용하고 여러 사이트를 제외합니다.

{
  "httpProxy": "http://user:password@10.0.0.254:80",
  "httpsProxy": "http://user:password@10.0.0.254:443",
  "noProxy": "localhost,127.0.0.1,169.254.169.254,10.0.0.0/16,example.com"
}

anthos-gke.yaml에 프록시 추가

다음 단계에 따라 AWSManagementService를 구성합니다.

  1. AWS용 Anthos 클러스터 구성이 있는 디렉터리로 변경합니다. 이 디렉터리는 관리 서비스를 설치할 때 생성됩니다.

    cd anthos-aws

  2. 텍스트 편집기에서 anthos-gke.yaml을 엽니다. 다음 예시와 같이 spec.proxy 값을 추가합니다.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSManagementService
    metadata:
      name: management
    spec:
      version: aws-1.14.1-gke.0
      proxy: PROXY_JSON_FILE
      securityGroupIDs:
      - SECURITY_GROUP_ID
      ...
    

    다음을 바꿉니다.

    파일을 저장합니다.

  3. anthos-gke aws management init를 실행하여 추가 구성으로 anthos-gke.status.yaml 파일을 생성합니다. init 명령어는 anthos-gke.yaml 파일에 있는 AWSManagementService 객체의 유효성을 검사합니다.

    anthos-gke aws management init
    
  4. anthos-gke aws management apply를 실행하여 AWS의 관리 서비스를 업데이트합니다.

    anthos-gke aws management apply
    
  5. 다음으로 사용자 클러스터를 만듭니다. 프록시의 보안 그룹을 AWSClusterAWSNodePoolspec.controlPlane.securityGroupIDsspec.securityGroupIDs에 각각 포함합니다. 그러면 클러스터에서 프록시에 액세스할 수 있습니다.

구성 참조

필드 설명 필수
httpProxy 프록시 서버 URL입니다. 값에 호스트 이름/IP 주소가 포함되어야 하며 선택적으로 포트, 사용자 이름, 비밀번호를 포함할 수 있습니다. "http://user:password@10.184.37.42:80"
httpsProxy 암호화된 HTTPS 트래픽의 프록시 URL. httpsProxy가 제공되지 않으면 httpProxy URL이 사용됩니다. "http://user:password@10.101.16.31:80" 없음
noProxy 프록시에서 제외할 쉼표로 구분된 URL 목록입니다. 각 값은 IP 주소, CIDR 범위, 도메인 이름 또는 asterix 문자(*)일 수 있습니다. 선행 점이 지정된 도메인(예: '.google.com')은 하위 도메인이 필요함을 나타냅니다. 단일 asterix *는 프록시가 수행되어서는 안 됨을 나타냅니다. "1.2.3.4,10.0.0.0/16,example.com,.site.com" 없음

다음 단계

AWS용 Anthos 클러스터 설치 완료에 대한 자세한 내용은 다음을 참조하세요.

클러스터의 프록시 설정 변경에 대한 자세한 내용은 다음을 참조하세요.