CNCF 호환 연결 클러스터에 대한 프록시 지원

조직에서 인터넷 트래픽에 HTTP 프록시를 사용하는 경우 그에 따라 GKE 연결 클러스터를 구성해야 합니다. 이 문서에서는 이 구성을 수행하는 방법을 설명합니다.

시작하기 전에

GKE 연결 클러스터는 다양한 Google Cloud 서비스에 연결되어야 합니다. 프록시 서버에서 다음 도메인에 대한 트래픽을 허용하는지 확인합니다.

  • .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을 클러스터가 있는 Google Cloud 리전으로 바꿉니다. us-west1 또는 다른 지원되는 리전을 지정합니다.

GKE 연결 클러스터에 대한 프록시 지원 구성

GKE 연결 클러스터에 대한 프록시 지원을 구성하려면 다음 단계를 수행합니다.

  1. httpProxy, noProxy, httpsProxy 키 값이 포함된 프록시 구성 파일을 만듭니다.

    {
    "httpProxy": HTTP_PROXY_AUTHENTICATION_URL,
    "httpsProxy": HTTPS_PROXY_AUTH_URL,
    "noProxy": NO_PROXY_ADDRESSES
    }
    

    다음을 바꿉니다.

    • HTTP_PROXY_AUTHENTICATION_URL: 호스트 이름/IP 주소, 선택적으로 포트, 사용자 이름, 비밀번호로 구성된 프록시 서버 URL. 예를 들면 http://user:password@192.0.2.0:80 또는 198.51.100.255입니다.
    • HTTPS_PROXY_AUTH_URL: 호스트 이름/IP 주소, 선택적으로 포트, 사용자 이름, 비밀번호로 구성된 암호화된 HTTPS 트래픽의 프록시 URL
    • NO_PROXY_ADDRESSES: 프록시를 우회할 수 있는 리소스의 쉼표로 구분한 URL, CIDR 블록, DNS 이름 목록. 이렇게 하면 지정된 리소스에 프록시를 사용하지 않도록 GKE 연결 클러스터에 지시합니다. 다음 사항에 유의하세요.
      • 값은 개별 IP 주소, CIDR 범위, 도메인 이름 또는 별표 문자(*)일 수도 있습니다. noProxy 필드에 단일 별표(*)를 사용하면 GKE 연결 클러스터가 모든 트래픽의 프록시를 건너뜁니다.
      • .google.com과 같이 점으로 시작하는 도메인은 모든 하위 도메인을 타겟팅합니다. 예를 들어 .google.com에는 mail.google.comdrive.google.com과 같은 주소가 포함되지만 google.com은 제외합니다.
      • 올바르게 로깅할 수 있도록 kubernetes.default.svc.cluster.localkubernetes.default.svc 도메인이 포함되었는지 확인합니다. 예를 들면 다음과 같습니다. 198.51.100.0,192.0.2.0/16,examplepetstore.com,.altostrat.com,kubernetes.default.svc.cluster.local, kubernetes.default.svc.

    프록시 구성 파일을 만들 때 다음 가이드라인을 준수하세요.

    • httpProxyhttpsProxy 필드는 https:// 프리픽스를 허용하지 않습니다. 실제 프록시 서버 주소가 https://로 시작하는 경우에도 http://를 사용합니다. 예를 들어 https://proxy.example.com:3128http://proxy.example.com:3128로 표시합니다.
    • 3가지 필드(httpProxy, httpsProxy, noProxy) 모두에 값을 제공해야 합니다.
    • noProxy 목록에 추가 도메인, IP 주소 또는 CIDR을 추가하는 것이 좋습니다. VPC IP 범위를 포함하는 것이 좋습니다.
  2. 다음 명령어를 실행하여 프록시 구성이 포함된 Kubernetes 보안 비밀을 만듭니다.

    kubectl create secret generic SECRET_NAME \
    --from-file=PROXY_CONFIGURATION_FILE
    

    다음을 바꿉니다.

    • SECRET_NAME: Kubernetes 보안 비밀 이름
    • PROXY_CONFIGURATION_FILE: 1단계에서 만든 프록시 구성의 경로
  3. immutable 필드를 true로 설정하여 Kubernetes 보안 비밀을 변경 불가로 표시합니다.

    kubectl edit secret SECRET_NAME
    

    SECRET_NAME을 Kubernetes 보안 비밀 이름으로 바꿉니다.

  4. 프록시를 사용하도록 새 클러스터나 기존 클러스터를 구성합니다.

    새 클러스터

    새 클러스터를 등록하고 프록시 구성을 적용하려면 gcloud container attached clusters register 명령어를 사용합니다. 선택적 인수 --proxy-secret-name--proxy-secret-namespace를 제공해야 합니다.

    gcloud container attached clusters register CLUSTER_NAME \
      --proxy-secret-name=SECRET_NAME \
      --proxy-secret-namespace=SECRET_NAMESPACE
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • SECRET_NAME: 프록시 구성이 포함된 Kubernetes 보안 비밀의 이름입니다.
    • SECRET_NAMESPACE: 보안 비밀이 저장된 Kubernetes 네임스페이스입니다.

    클러스터를 등록할 때 사용할 수 있는 모든 인수에 대한 자세한 내용은 gcloud container attached clusters register 명령어를 참조하세요.

    기존 클러스터

    이전에 등록된 클러스터를 새 프록시 구성으로 업데이트하려면 gcloud container attached clusters update 명령어를 사용합니다. 선택적 인수 --proxy-secret-name--proxy-secret-namespace를 제공해야 합니다.

    gcloud container attached clusters update CLUSTER_NAME \
      --proxy-secret-name=SECRET_NAME \
      --proxy-secret-namespace=SECRET_NAMESPACE
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • SECRET_NAME: 프록시 구성이 포함된 Kubernetes 보안 비밀의 이름입니다.
    • SECRET_NAMESPACE: 보안 비밀이 저장된 Kubernetes 네임스페이스입니다.

    이 단계는 프록시 서버 세부정보가 변경되었거나 초기 클러스터 등록에서 프록시 요구사항이 간과된 경우에 필요합니다.

    클러스터를 업데이트할 때 사용할 수 있는 모든 인수에 대한 자세한 내용은 gcloud container attached clusters update 명령어를 참조하세요.

이 단계를 수행하면 GKE 연결 클러스터는 구성 파일에 지정된 프록시 서버를 사용하여 아웃바운드 인터넷 트래픽을 처리합니다.