이 페이지에서는 Google Distributed Cloud의 프록시 및 방화벽 규칙을 설정하는 방법을 설명합니다.
프록시 서버 구성
부트스트랩 및 클러스터 노드에 사용 중인 머신이 프록시 서버를 사용하여 인터넷에 액세스하는 경우 다음을 수행해야 합니다.
- 클러스터 노드에서 패키지 관리자에 대한 프록시 구성
- 클러스터 구성 파일에서 프록시 세부정보를 구성
기본 요건
프록시 서버에서 다음 주소에 대한 연결을 허용해야 합니다.
주소 | 목적 |
---|---|
*.gcr.io |
Container Registry에서 이미지를 가져옵니다. |
accounts.google.com |
OpenID의 승인 요청을 처리하고 토큰을 확인할 수 있도록 공개 키를 검색합니다. |
binaryauthorization.googleapis.com |
Binary Authorization을 사용하는 경우 필요합니다. 클러스터에서 컨테이너 이미지를 실행하도록 요청을 승인(또는 거부)합니다. |
cloudresourcemanager.googleapis.com |
클러스터가 연결되는 Google Cloud 프로젝트와 관련된 메타데이터를 확인합니다. |
compute.googleapis.com |
Cloud Logging 및 Cloud Monitoring 리소스 리전을 확인합니다. |
connectgateway.googleapis.com |
문제 진단을 위해 Cloud Customer Care에 클러스터 읽기 전용 액세스 권한을 부여하는 기능을 사용 설정합니다. |
dl.google.com |
Google Cloud SDK를 다운로드하고 설치합니다. |
gkeconnect.googleapis.com |
Google Cloud에서 요청을 수신하는 데 사용되는 채널을 설정하고 응답을 보냅니다. Google Cloud 리전을 사용하여 클러스터를 Fleet에 등록한 경우 REGION-gkeconnect.googleapis.com 를 허용 목록에 추가해야 합니다(예: us-central1-gkeconnect.googleapis.com ). 리전을 지정하지 않은 경우 클러스터는 전역 Connect 서비스 인스턴스를 사용하고 gkeconnect.googleapis.com 를 허용 목록에 추가합니다. 클러스터의 Fleet 멤버십 위치를 찾아야 하는 경우에는 gcloud container fleet memberships list 를 실행합니다.
자세한 내용은 gkeConnect.location 를 참조하세요.
|
gkehub.googleapis.com |
Google Cloud와 연결할 클러스터에 해당하는 Google Cloud 측 Fleet 멤버십 리소스를 만듭니다. |
gkeonprem.googleapis.com |
베어메탈 및 VMware 인프라에서 클러스터 수명 주기를 만들고 관리합니다. |
gkeonprem.mtls.googleapis.com |
베어메탈 및 VMware 인프라에서 클러스터 수명 주기를 만들고 관리합니다. 이 버전의 API는 자동으로 mTLS에 사용됩니다. |
iam.googleapis.com |
Google Cloud 인증 및 API 호출에 사용할 수 있는 서비스 계정을 생성합니다. |
iamcredentials.googleapis.com |
감사 로깅에 허용 제어 및 원격 분석 보고를 제공합니다. |
kubernetesmetadata.googleapis.com |
클러스터는 이 API를 엔드포인트로 사용하여 Kubernetes 메타데이터를 Google Cloud로 전송합니다. 메타데이터는 클러스터 모니터링, 디버깅, 복구에 매우 중요합니다. |
logging.googleapis.com |
로그 항목을 작성하고 Cloud Logging 구성을 관리합니다. |
monitoring.googleapis.com |
Cloud Monitoring 데이터와 구성을 관리합니다. |
oauth2.googleapis.com |
계정에 액세스할 수 있도록 OAuth 토큰 교환을 통해 인증합니다. |
opsconfigmonitoring.googleapis.com |
포드, 배포, 노드와 같은 Kubernetes 리소스의 메타데이터를 수집하여 측정항목 쿼리를 강화합니다. |
releases.hashicorp.com |
선택사항. 관리 워크스테이션에서 Terraform 클라이언트를 사용하여 terraform apply 와 같은 명령어를 실행합니다. |
securetoken.googleapis.com |
워크로드 아이덴티티를 승인할 수 있도록 갱신 토큰을 검색합니다. |
servicecontrol.googleapis.com |
Cloud 감사 로그에 감사 로그 항목을 씁니다. |
serviceusage.googleapis.com |
서비스 및 API를 사용 설정하고 검증합니다. |
stackdriver.googleapis.com |
Stackdriver 계정과 같은 Google Cloud Observability 메타데이터를 관리합니다. |
storage.googleapis.com |
객체 스토리지 및 버킷(예: Container Registry 객체)을 관리합니다. |
sts.googleapis.com |
단기 액세스 토큰의 Google 또는 타사 사용자 인증 정보를 Google Cloud 리소스로 교환합니다. |
www.googleapis.com |
수신되는 Google Cloud 서비스 요청에서 서비스 토큰을 인증합니다. |
이러한 URL 외에도 프록시 서버는 운영체제의 패키지 관리자에 필요한 모든 패키지 미러를 허용해야 합니다. 패키지 관리자 구성을 업데이트하여 보다 확정적인 목록을 사용할 수 있으므로 관리가 쉽습니다.
클러스터 노드에서 패키지 관리자에 대한 프록시 구성
Google Distributed Cloud는 Ubuntu의 APT 패키지 관리자 및 Red Hat Enterprise Linux의 DNF 패키지 관리자를 사용합니다. OS 패키지 관리자에 올바른 프록시 구성이 있는지 확인합니다.
프록시 구성에 대한 자세한 내용은 OS 배포 문서를 참조하세요. 다음 예시에서는 프록시 설정을 구성하는 한 가지 방법을 보여줍니다.
APT
다음 명령어는 APT용 프록시를 구성하는 방법을 보여줍니다.
sudo touch /etc/apt/apt.conf.d/proxy.conf
echo 'Acquire::http::Proxy "http://USERNAME:PASSWORD@DOMAIN";' \
>> /etc/apt/apt.conf.d/proxy.conf
echo 'Acquire::https::Proxy "http://USERNAME:PASSWORD@DOMAIN";' \
>> /etc/apt/apt.conf.d/proxy.conf
USERNAME:PASSWORD@DOMAIN
을 구성과 관련된 세부정보로 바꿉니다. 예를 들어 프록시에 로그인이 필요하지 않으면 DOMAIN
에 USERNAME:PASSWORD@
을 포함하지 마세요.
DNF
이 명령어는 DNF용 프록시를 구성하는 방법을 보여줍니다.
echo "proxy=http://USERNAME:PASSWORD@DOMAIN" >> /etc/dnf/dnf.conf
USERNAME:PASSWORD@DOMAIN
을 구성과 관련된 세부정보로 바꿉니다. 예를 들어 프록시에 로그인이 필요하지 않으면 DOMAIN
에 USERNAME:PASSWORD@
을 포함하지 마세요.
클러스터 구성 파일에서 프록시 세부정보 구성
클러스터 구성 파일에서 다음 값을 설정하여 클러스터가 프록시를 사용하도록 구성합니다.
proxy.url
프록시 URL을 지정하는 문자열입니다. 부트스트랩 및 노드 머신은 이 프록시를 사용하여 인터넷에 액세스합니다. 프록시 URL 문자열은 http://
또는 https://
와 같이 해당 스키마로 시작해야 합니다.
proxy.noProxy
프록시 서버를 거치지 않아야 하는 IP 주소, 호스트 이름, 도메인 이름의 목록입니다.
대부분의 경우 이 목록에 항목을 추가할 필요가 없습니다.
noProxy
사용 사례:
동일한 비공개 네트워크에 있는 비공개 패키지 미러 사용(액세스에 프록시 필요 없음)
동일한 비공개 네트워크에 있는 비공개 레지스트리 미러 사용(액세스에 프록시 필요 없음)
예
다음은 클러스터 구성 파일의 프록시 설정 예시입니다.
proxy:
url: http://USERNAME:PASSWORD@DOMAIN
noProxy:
- example1.com
- example2.com
GKE Identity Service의 프록시 구성
Google Distributed Cloud 클러스터에서 인증에 GKE Identity Service를 사용하는 경우 프록시 뒤에서 GKE Identity Service가 작동하도록 하려면 다음 추가 단계가 필요합니다.
클러스터 구성 파일의 OIDC
authentication
섹션에서 GKE Identity Service 설정에 프록시 세부정보를 설정합니다.authentication: oidc: proxy: http://USERNAME:PASSWORD@DOMAIN
OIDC 제공업체의 인증 URL에 대한 연결을 허용하도록 프록시 서버의 구성을 업데이트합니다.
클러스터 내에서 프록시가 사용되는 방법
일반적으로 bmctl
명령어 및 이 명령어가 생성하는 프로세스에는 HTTPS_PROXY
및 NO_PROXY
환경 변수에 의해 정의된 프록시 구성(정의된 경우)이 사용됩니다. 그렇지 않으면 bmctl
에서 클러스터 구성 파일의 프록시 구성이 사용됩니다. 관리자 워크스테이션, 클러스터 노드 머신, 부트스트랩 클러스터에서 실행되는 기타 명령어에는 클러스터 구성 파일의 프록시 구성이 사용됩니다.
각 노드의 OS 패키지 관리자는 프록시 설정을 위해 해당 자체 구성 파일을 사용합니다.
부트스트랩 머신에서 프록시 구성 재정의
클러스터 구성 파일에서 프록시 설정을 재정의하여 노드 머신에서 사용되는 것과 다른 프록시 뒤에서 관리자 워크스테이션을 실행할 수 있습니다. 프록시 설정을 재정의하려면 부트스트랩 머신에서 다음 환경 변수를 설정합니다.
export HTTPS_PROXY=http://USERNAME:PASSWORD@DOMAIN
USERNAME:PASSWORD@DOMAIN
을 구성과 관련된 세부정보로 바꿉니다.
export NO_PROXY=example1.com,example2.com
example1.com,example2.com을 프록시 서버를 거치지 않아야 하는 IP 주소, 호스트 이름, 도메인 이름으로 바꿉니다.
부작용
루트로 실행하면 bmctl
은 부트스트랩 머신에서 Docker 프록시 구성을 업데이트합니다. bmctl
을 루트로 실행하지 않는 경우 Docker 프록시를 수동으로 구성합니다.
방화벽 규칙
Google Distributed Cloud에 필요한 트래픽을 허용하려면 다음 섹션에 설명된 대로 방화벽 규칙을 설정합니다.
Google Distributed Cloud의 기본 포트 요건은 포트 사용량을 참조하세요.
클러스터 노드 IP 주소의 방화벽 규칙
다음 표에서는 클러스터에서 사용할 수 있는 IP 주소에 대한 방화벽 규칙을 설명합니다.
발신 |
소스 포트 |
수신 |
포트 |
프로토콜 |
설명 |
---|---|---|---|---|---|
클러스터 노드 | 1024 - 65535 | cloudresourcemanager.googleapis.com gkeconnect.googleapis.com gkehub.googleapis.com |
443 | TCP/HTTPS | Fleet 등록을 위한 액세스 권한이 필요합니다. |
클러스터 노드에서 실행되는 Cloud Logging 수집기 | 1024 - 65535 | oauth2.googleapis.com logging.googleapis.com stackdriver.googleapis.com servicecontrol.googleapis.com storage.googleapis.com www.googleapis.com |
443 | TCP/HTTPS | |
클러스터 노드에서 실행되는 Cloud Metadata 수집기 | 1024 - 65535 | opsconfigmonitoring.googleapis.com |
443 | TCP/HTTPS | |
클러스터 노드에서 실행되는 Cloud Monitoring 수집기 | 1024 - 65535 | oauth2.googleapis.com monitoring.googleapis.com stackdriver.googleapis.com servicecontrol.googleapis.com |
443 | TCP/HTTPS | |
클러스터 노드 | 1024 - 65535 | 온프레미스 로컬 Docker 레지스트리 | 레지스트리에 따라 달라집니다. | TCP/HTTPS | Google Distributed Cloud가 gcr.io 대신 로컬 비공개 Docker 레지스트리를 사용하도록 구성된 경우에 필요합니다. |
클러스터 노드 | 1024 - 65535 | gcr.io oauth2.googleapis.com storage.googleapis.com 관리자 클러스터에 대해 사용 설정된 서비스에 필요한 *.googleapis.com 형식의 모든 Google API URL |
443 | TCP/HTTPS | 공개 Docker 레지스트리에서 이미지 다운로드 비공개 Docker 레지스트리를 사용하는 경우에는 필요하지 않습니다. |
클러스터 노드에서 실행되는 Connect Agent | 1024 - 65535 | cloudresourcemanager.googleapis.com gkeconnect.googleapis.com gkehub.googleapis.com www.googleapis.com iam.googleapis.com iamcredentials.googleapis.com oauth2.googleapis.com securetoken.googleapis.com sts.googleapis.com accounts.google.com |
443 | TCP/HTTPS | Connect Agent에서 관리하는 트래픽에 대한 자세한 내용은 Connect Agent 개요를 참조하세요. |
클러스터 노드 | 1024 - 65535 |
gkeonprem.googleapis.com gkeonprem.mtls.googleapis.com |
443 | TCP/HTTPS | 베어메탈 및 VMware 인프라에서 클러스터 수명 주기를 만들고 관리합니다. |
나머지 구성요소의 방화벽 규칙
다음 표에 설명된 규칙은 이전 섹션에 나열되지 않은 다른 모든 구성요소에 적용됩니다.
발신 |
소스 포트 |
수신 |
포트 |
프로토콜 |
설명 |
---|---|---|---|---|---|
클라이언트 및 애플리케이션 최종 사용자 | 전체 | Istio 인그레스 VIP | 80, 443 | TCP | 사용자 클러스터의 인그레스 서비스에 대한 최종 사용자 트래픽 |
관리 워크스테이션 | 32768 - 60999 | gcr.io cloudresourcemanager.googleapis.com oauth2.googleapis.com storage.googleapis.com 이 클러스터에 대해 사용 설정된 서비스에 필요한 모든 *.googleapis.com URL |
443 | TCP/HTTPS | 공개 Docker 레지스트리에서 Docker 이미지 다운로드 |
관리 워크스테이션 | 32768 - 60999 | gcr.io cloudresourcemanager.googleapis.com iam.googleapis.com oauth2.googleapis.com serviceusage.googleapis.com storage.googleapis.com 관리자 또는 사용자 클러스터에 대해 사용 설정된 서비스에 필요한 모든 *.googleapis.com URL |
443 | TCP/HTTPS | 실행 전 검사(유효성 검사) |