HTTP 프록시 사용

이 문서에서는 HTTP/HTTPS 프록시를 통해 GKE on Azure에서 트래픽을 라우팅하는 방법을 보여줍니다. 클러스터를 만들 때 프록시 구성을 지정합니다.

개요

다음과 같은 이유로 GKE on Azure는 프록시를 통해 아웃바운드 인터넷 트래픽을 라우팅할 수 있습니다.

  • Connect를 통해 Google Cloud에 클러스터 등록
  • Connect Agent 실행
  • Container Registry에서 이미지 다운로드

제한사항

  • httpProxyhttpsProxy 필드는 https://로 시작하는 URL을 지원하지 않습니다. http://를 사용해야 합니다. 포트 443 요청에는 HTTPS가 사용됩니다.
  • httpProxy, httpsProxy, noProxy의 값을 설정해야 합니다.
  • 클러스터의 프록시 구성(리소스 그룹 ID 및 보안 비밀 ID)은 변경할 수 없습니다. 이러한 값을 업데이트하려면 클러스터 및 노드 풀을 새로 만들어야 합니다.
  • 추가 도메인, IP, CIDR을 noProxy 필드에 추가해야 할 수 있습니다. 클러스터의 제어 영역 서브넷 CIDR을 추가하는 것이 좋습니다(포드 주소 CIDR 및 서비스 주소 CIDR이 기본적으로 추가됨).

기본 요건

이 섹션에서는 프록시를 사용하기 전에 적용해야 할 기본 요건을 설명합니다.

Azure Key Vault 구성

GKE on Azure는 Azure Key Vault에 프록시 구성 정보를 저장합니다. GKE on Azure에 프록시를 구성하려면 Key Vault에 보안 비밀을 만들기 위한 권한이 있어야 합니다. Key Vault는 클러스터의 VNet에서 액세스할 수 있어야 합니다.

프록시 허용 목록

GKE on Azure에서 Google Cloud 서비스에 연결하려면 프록시 서버에서 특정 Google 및 Microsoft 도메인에 대한 트래픽을 허용해야 합니다.

.azure.com
.gcr.io
cloudresourcemanager.googleapis.com
container.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
oauth2.googleapis.com
securetoken.googleapis.com
storage.googleapis.com
sts.googleapis.com
www.googleapis.com
servicecontrol.googleapis.com
logging.googleapis.com
monitoring.googleapis.com
opsconfigmonitoring.googleapis.com
GCP_LOCATION-gkemulticloud.googleapis.com

GCP_LOCATION을 GKE Enterprise 클러스터가 있는 Google Cloud 리전으로 바꿉니다. us-west1 또는 다른 지원되는 리전을 지정합니다.

서브넷 네트워크 보안 그룹 요구사항

네트워크 보안 그룹(NSG)을 사용하여 서브넷의 트래픽을 관리하는 경우 NSG 규칙은 다음 대상으로 나가는 TCP 트래픽을 허용해야 합니다.

  • AzureCloud: TCP, 포트 80 및 443

NSG로 서비스 태그를 사용하는 방법에 대한 상세 설명은 Azure 서비스 태그를 참조하세요.

프록시 구성 파일 만들기

프록시 구성은 Azure Key Vault 보안 비밀에 JSON 문자열로 저장됩니다. 이 구성을 az 명령줄 도구에 파일로 전달할 수 있습니다. 이 섹션에서는 해당 파일을 만드는 방법을 설명합니다.

다음 표에서는 이 파일의 콘텐츠를 설명합니다.

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

    {
      "httpProxy": "AUTHENTICATION_URL",
      "httpsProxy": "AUTHENTICATION_URL",
      "noProxy": "NO_PROXY_ADDRESSES"
    }
    

    다음을 바꿉니다.

    • AUTHENTICATION_URL: 프록시 사용자 이름과 비밀번호가 포함된 인코딩 URL
    • NO_PROXY_ADDRESSES: CIDR 블록 및 URL에 대한 쉼표로 구분된 목록(예: 10.0.0.0/16,http://example.com)

    다음 섹션에서 사용할 파일을 저장합니다.

  2. az 명령줄 도구를 사용하여 이 JSON 데이터가 포함된 보안 비밀을 Azure Key Vault의 보안 비밀로 만듭니다.

    az keyvault secret set --name SECRET_NAME \
    --vault-name KEY_VAULT_NAME \
    --file PROXY_CONFIGURATION_FILE
    

    다음을 바꿉니다.

    • SECRET_NAME: 새 보안 비밀
    • KEY_VAULT_NAME: Key Vault의 이름
    • PROXY_CONFIGURATION_FILE: 프록시 구성 파일의 경로

      출력에는 보안 비밀의 이름과 콘텐츠가 포함됩니다. 이제 클러스터를 만들 때 이 보안 비밀을 참조할 수 있습니다.

프록시를 사용하는 클러스터 만들기

아웃바운드 연결에 HTTP 프록시를 사용하도록 GKE on Azure를 구성하려면 다음 단계를 수행하세요.

클러스터 및 노드 풀 만들기의 단계를 따르고 --proxy-resource-group-id--proxy-secret-id 플래그를 전달합니다.

gcloud container azure clusters create CLUSTER_NAME \
  --proxy-resource-group-id=PROXY_RESOURCE_GROUP_ID \
  --proxy-secret-id=PROXY_SECRET_ID
    ...

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터 이름
  • PROXY_RESOURCE_GROUP_ID: 클러스터를 호스팅하는 리소스 그룹
  • PROXY_SECRET_ID: 프록시 구성이 포함된 보안 비밀의 ID(예: https://VAULT_NAME.vault.azure.net/secrets/SECRET_NAME/SECRET_VERSION)

다음 단계