1. 소개
이 Codelab에서는 서비스 소비자로서 Looker PSC에서 호출된 FQDN notifications-pa.googleapis.com이 포함된 내부 TCP 프록시 부하 분산기 및 인터넷 네트워크 엔드포인트 그룹 (NEG)을 사용하여 Looker PSC 서비스에 대한 남쪽 경계를 만듭니다.
Private Service Connect는 Google Cloud 네트워킹 기능으로, 소비자가 자신의 VPC 네트워크 내에서 관리형 서비스에 비공개로 액세스할 수 있게 해줍니다. 마찬가지로 이를 이용해 관리형 서비스 프로듀서는 이러한 서비스를 별도의 개별 VPC 네트워크에서 호스팅하고 소비자에게 비공개 연결을 제공할 수 있습니다. 예를 들어 Private Service Connect를 사용하여 Looker에 액세스할 때는 사용자가 서비스 소비자이고 Google이 서비스 프로듀서입니다(그림 1 참고).
그림 1.
역방향 PSC라고도 하는 남쪽 경계 액세스를 사용하면 소비자는 게시된 서비스를 생산자로 만들어 Looker가 VPC의 온프레미스 엔드포인트, 관리형 서비스 및 인터넷에 액세스할 수 있습니다. 그림 2에서 볼 수 있듯이 남쪽 바인딩은 Looker PSC가 배포된 위치와 관계없이 모든 리전에 배포할 수 있습니다.
그림 2.
학습할 내용
- 네트워크 요구사항
- Private Service Connect 프로듀서 서비스 만들기
- Looker에서 Private Service Connect 엔드포인트 만들기
- Looker SMTP 서비스에 대한 연결 설정
필요한 항목
- 소유자 권한이 있는 Google Cloud 프로젝트
- 기존 Looker PSC 인스턴스
2. 빌드할 항목
PSC (Private Service Connect)를 통해 서비스로 게시된 내부 TCP 프록시 부하 분산기 및 인터넷 NEG를 배포하기 위해 생산자 네트워크인 Looker-psc-demo를 설정합니다. 게시되면 다음 작업을 수행하여 생산자 서비스에 대한 액세스를 검증합니다.
- Looker에서 프로듀서 서비스 연결과 연결된 PSC 엔드포인트 만들기
- Looker Console을 사용하여 SMTP 메일 설정 만들기
3. 네트워크 요구사항
다음은 공급자 네트워크의 네트워크 요구사항을 분류한 내용입니다. 이 Codelab의 소비자는 Looker PSC 인스턴스입니다.
구성요소 | 설명 |
VPC (looker-psc-demo) | 커스텀 모드 VPC |
PSC NAT 서브넷 | 소비자 VPC 네트워크의 패킷은 소스 NAT (SNAT)를 사용하여 변환되므로 원래 소스 IP 주소가 공급자의 VPC 네트워크에 있는 NAT 서브넷의 소스 IP 주소로 변환됩니다. |
PSC 전달 규칙 서브넷 | 리전 내부 TCP 프록시 부하 분산기의 IP 주소를 할당하는 데 사용됩니다. |
PSC NEG 서브넷 | 네트워크 엔드포인트 그룹의 IP 주소를 할당하는 데 사용됩니다. |
프록시 전용 서브넷 | 각 부하 분산기의 프록시 에는 내부 IP 주소가 할당됩니다. 프록시에서 백엔드 VM 또는 엔드포인트로 전송되는 패킷에는 프록시 전용 서브넷의 소스 IP 주소가 있습니다. |
인터넷 NEG | 부하 분산기의 외부 백엔드를 정의하는 데 사용되는 리소스입니다. 엔드포인트는 Cloud VPN 또는 Cloud Interconnect를 통해서만 연결할 수 없습니다. |
백엔드 서비스 | 백엔드 서비스는 부하 분산기와 백엔드 리소스 사이의 브리지 역할을 합니다. 이 튜토리얼에서는 백엔드 서비스가 인터넷 NEG와 연결됩니다. |
Cloud Router | Cloud NAT는 컨트롤 플레인 기능에는 Cloud Router를 사용하지만 BGP 세션 관리에는 사용하지 않습니다. |
Cloud NAT | 지역 인터넷 NEG는 인터넷 이그레스에 Cloud NAT를 활용합니다. |
4. Codelab 토폴로지
5. 설정 및 요구사항
자습형 환경 설정
- Google Cloud Console에 로그인하여 새 프로젝트를 만들거나 기존 프로젝트를 재사용합니다. 아직 Gmail이나 Google Workspace 계정이 없는 경우 계정을 만들어야 합니다.
- 프로젝트 이름은 이 프로젝트 참가자의 표시 이름입니다. 이는 Google API에서 사용하지 않는 문자열이며 언제든지 업데이트할 수 있습니다.
- 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유하며, 변경할 수 없습니다(설정된 후에는 변경할 수 없음). Cloud 콘솔은 고유한 문자열을 자동으로 생성합니다. 일반적으로는 신경 쓰지 않아도 됩니다. 대부분의 Codelab에서는 프로젝트 ID (일반적으로
PROJECT_ID
로 식별됨)를 참조해야 합니다. 생성된 ID가 마음에 들지 않으면 다른 임의 ID를 생성할 수 있습니다. 또는 직접 시도해 보고 사용 가능한지 확인할 수도 있습니다. 이 단계 이후에는 변경할 수 없으며 프로젝트 기간 동안 유지됩니다. - 참고로 세 번째 값은 일부 API에서 사용하는 프로젝트 번호입니다. 이 세 가지 값에 대한 자세한 내용은 문서를 참고하세요.
- 다음으로 Cloud 리소스/API를 사용하려면 Cloud 콘솔에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼이 끝난 후에 요금이 청구되지 않도록 리소스를 종료하려면 만든 리소스 또는 프로젝트를 삭제하면 됩니다. Google Cloud 신규 사용자는 300달러(USD) 상당의 무료 체험판 프로그램에 참여할 수 있습니다.
Cloud Shell 시작
Google Cloud를 노트북에서 원격으로 실행할 수 있지만, 이 Codelab에서는 Cloud에서 실행되는 명령줄 환경인 Google Cloud Shell을 사용합니다.
Google Cloud Console의 오른쪽 상단 툴바에 있는 Cloud Shell 아이콘을 클릭합니다.
환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 완료되면 다음과 같이 표시됩니다.
가상 머신에는 필요한 개발 도구가 모두 들어있습니다. 영구적인 5GB 홈 디렉터리를 제공하고 Google Cloud에서 실행되므로 네트워크 성능과 인증이 크게 개선됩니다. 이 Codelab의 모든 작업은 브라우저 내에서 수행할 수 있습니다. 아무것도 설치할 필요가 없습니다.
6. 시작하기 전에
API 사용 설정
Cloud Shell 내에서 프로젝트 ID가 설정되어 있는지 확인합니다.
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
echo $project
echo $region
필요한 모든 서비스를 사용 설정합니다.
gcloud services enable compute.googleapis.com
7. 프로듀서 VPC 네트워크 만들기
VPC 네트워크
Cloud Shell에서 다음을 실행합니다.
gcloud compute networks create looker-psc-demo --subnet-mode custom
서브넷 만들기
PSC 서브넷은 네트워크 주소 변환을 위해 PSC 서비스 연결과 연결됩니다.
Cloud Shell 내에서 PSC NAT 서브넷을 만듭니다.
gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT
Cloud Shell 내에서 제작자 전달 규칙 서브넷을 만듭니다.
gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
Cloud Shell 내에서 생산자 리전별 프록시 전용 서브넷을 만듭니다.
gcloud compute networks subnets create $region-proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=looker-psc-demo \
--range=10.10.10.0/24
Public NAT 게이트웨이 만들기
NAT 게이트웨이는 구성 옵션 –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB를 사용하여 인터넷 이그레스에 리전 내부 TCP 프록시 부하 분산기에서 사용되므로 동일한 NATGW는 GCE/GKE 인터넷 이그레스를 지원하지 않습니다. GCE/GKE 인터넷 이그레스에 –endpoint-types=ENDPOINT_TYPE_VM을 사용하여 NAT GW를 추가로 배포합니다.
Cloud Shell 내에서 Cloud Router를 만듭니다.
gcloud compute routers create looker-psc-demo-cloud-router --network looker-psc-demo --region $region
Cloud Shell 내에서 TCP 프록시 부하 분산기에 인터넷 이그레스를 사용 설정하는 Cloud NAT 게이트웨이를 만듭니다.
gcloud compute routers nats create looker-psc-demo-natgw \
--router=looker-psc-demo-cloud-router \
--endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
--nat-custom-subnet-ip-ranges=$region-proxy-only-subnet \
--auto-allocate-nat-external-ips \
--region=$region
부하 분산기의 IP 주소 예약
Cloud Shell에서 부하 분산기의 내부 IP 주소를 예약합니다.
gcloud compute addresses create internet-neg-lb-ip \
--region=$region \
--subnet=producer-psc-fr-subnet
Cloud Shell 내에서 예약된 IP 주소를 확인합니다.
gcloud compute addresses describe internet-neg-lb-ip \
--region=$region | grep -i address:
출력 예시:
user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
인터넷 NEG 설정
인터넷 NEG를 만들고 –network-endpoint-type을 internet-fqdn-port(외부 백엔드에 연결할 수 있는 호스트 이름 및 포트)로 설정합니다.
Cloud Shell 내에서 github.com에 사용되는 인터넷 NEG를 만듭니다.
gcloud compute network-endpoint-groups create smtp-internet-neg \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=looker-psc-demo \
--region=$region
Cloud Shell 내에서 인터넷 NEG smtp-internet-neg를 FQDN notifications-pa.googleapis.com 및 포트 443으로 업데이트합니다.
gcloud compute network-endpoint-groups update smtp-internet-neg \
--add-endpoint="fqdn=notifications-pa.googleapis.com,port=443" \
--region=$region
네트워크 방화벽 정책 및 방화벽 규칙 만들기
Cloud Shell에서 다음을 실행합니다.
gcloud compute network-firewall-policies create looker-psc-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy
다음 방화벽 규칙은 PSC NAT 서브넷 범위의 트래픽이 네트워크의 모든 인스턴스로 전송되도록 허용합니다.
Cloud Shell 내에서 다음을 수행합니다.
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp
8. 프로듀서 서비스 만들기
부하 분산기 구성요소 만들기
Cloud Shell 내에서 다음을 수행합니다.
gcloud compute backend-services create producer-backend-svc --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED
gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=smtp-internet-neg --network-endpoint-group-region=$region --region=$region
Cloud Shell에서 요청을 백엔드 서비스로 라우팅할 대상 TCP 프록시를 만듭니다.
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=producer-backend-svc \
--region=$region
다음 구문에서 전달 규칙 (내부 TCP 프록시 부하 분산기)을 만듭니다.
Cloud Shell에서 다음을 수행합니다.
gcloud compute forwarding-rules create producer-smtp-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=looker-psc-demo \
--subnet=producer-psc-fr-subnet \
--address=internet-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=443
서비스 연결 만들기
Cloud Shell에서 서비스 연결 smtp-svc-attachment를 만듭니다.
gcloud compute service-attachments create smtp-svc-attachment --region=$region --producer-forwarding-rule=producer-smtp-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
다음으로, 자체 링크 URI에 나열된 서비스 연결을 가져와 기록해 두고 Looker에서 PSC 엔드포인트를 구성합니다.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/github-svc-attachment-https
Cloud Shell에서 다음을 실행합니다.
gcloud compute service-attachments describe smtp-svc-attachment --region=$region
예:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-10-04T14:56:50.409-07:00'
description: ''
enableProxyProtocol: false
fingerprint: KUPXTZjrGkw=
id: '8947818105173563981'
kind: compute#serviceAttachment
name: smtp-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '23100082169578472'
low: '8947818105173563981'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-smtp-fr
Cloud 콘솔에서 다음으로 이동합니다.
네트워크 서비스 → Private Service Connect → 게시된 서비스
9. Looker에서 PSC 엔드포인트 연결 설정
다음 섹션에서는 단일 도메인에 대해 Cloud Shell에서 –psc-service-attachment 플래그를 사용하여 Producers Service 연결을 Looker Core PSC와 연결합니다.
Cloud Shell 내에서 환경에 맞게 다음 매개변수를 업데이트하여 psc 연결을 만듭니다.
- INSTANCE_NAME: Looker (Google Cloud 핵심 서비스) 인스턴스의 이름입니다.
- 도메인_1: notifications-pa.googleapis.com
- SERVICE_ATTACHMENT_1: 서비스 첨부파일을 설명할 때 캡처된 URI, smtp-svc-attachment
- 지역: Looker (Google Cloud 핵심 서비스) 인스턴스가 호스팅되는 리전입니다.
Cloud Shell 내에서 다음을 수행합니다.
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
예:
gcloud looker instances update looker-psc-instance \
--psc-service-attachment domain=notifications-pa.googleapis.com,attachment=projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment \
--region=$region
Cloud Shell 내에서 serviceAttachments connectionStatus가 '수락됨'인지 확인하고 Looker PSC INSTANCE_NAME으로 업데이트하세요.
gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json
예:
gcloud looker instances describe looker-psc-instance --region=$region --format=json
예:
{
...........................
"serviceAttachments": [
{
"connectionStatus": "ACCEPTED",
"localFqdn": "notifications-pa.googleapis.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-10-04T22:02:31.445761128Z"
}
Cloud Console에서 PSC 엔드포인트 유효성 검사
Cloud 콘솔에서 PSC 연결 검증 가능
Cloud 콘솔에서 다음으로 이동합니다.
Looker → Looker 인스턴스 → 세부정보
10. SMTP 연결 테스트
다음 단계에서는 Looker Console을 사용하여 SMTP 테스트 및 보고서를 생성하여 SMTP 연결을 확인합니다.
테스트 이메일
Looker는 기본 SMTP 서버인 notifications-pa.googleapis.com을 사용하여 이메일을 전송합니다. 이 경우 추가 단계가 필요하지 않습니다. 알림에 다른 SMTP 서버를 사용하려면 커스텀 SMTP 구성 섹션을 참고하세요.
Looker 콘솔을 열고 다음으로 이동합니다.
관리자 → 플랫폼 → SMTP → '테스트 이메일 보내기'를 선택합니다.
다음은 Looker에서 가져온 테스트 이메일입니다.
생성된 보고서 이메일
다음으로 이동합니다.
탐색 → 시스템 활동 → API 사용 → API 쿼리 유형 → 실행
출력 예시:
결과를 이메일로 보내려면 톱니바퀴 아이콘
'보내기'를 선택하면 새 창이 열립니다.
이메일 주소를 입력하고 보내기를 선택하세요.
다음은 Looker에서 가져온 테스트 이메일입니다.
11. 맞춤 SMTP 구성
이 튜토리얼에서는 Looker SMTP 서버를 사용하여 인터넷 이그레스를 수행하는 FQDN notifications-pa.googleapis.com 및 Cloud NAT를 통해 이메일 알림을 전송합니다. 자체 SMTP 서버를 사용하려면 다음과 같이 수정된 새 서비스 첨부파일을 만드시기 바랍니다.
SMTP 서버 FQDN으로 인터넷 NEG를 업데이트합니다.
gcloud compute network-endpoint-groups update smtp-internet-neg \
--add-endpoint="fqdn=<your SMTP FQDN>,port=443" \
--region=$region
Looker PSC 인스턴스를 업데이트할 때 SMTP 도메인을 지정합니다.
- INSTANCE_NAME: Looker(Google Cloud 핵심 서비스) 인스턴스의 이름입니다.
- DOMAIN_1: <SMTP 서버 FQDN>
- SERVICE_ATTACHMENT_1: 서비스 연결(smtp-svc-attachment)을 설명할 때 캡처된 URI입니다.
- 지역: Looker (Google Cloud 핵심 서비스) 인스턴스가 호스팅되는 리전입니다.
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
다른 이메일 서비스를 사용하려면 맞춤 메일 설정 사용을 선택합니다.
12. 삭제
단일 Cloud Shell 터미널에서 실험실 구성요소 삭제
gcloud compute service-attachments delete smtp-svc-attachment --region=$region -q
gcloud compute forwarding-rules delete producer-smtp-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete producer-backend-svc --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy --name=looker-psc-demo --global-firewall-policy -q
gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q
gcloud compute routers nats delete looker-psc-demo-natgw --router=looker-psc-demo-cloud-router --router-region=$region -q
gcloud compute routers delete looker-psc-demo-cloud-router --region=$region -q
gcloud compute network-endpoint-groups delete smtp-internet-neg --region=$region -q
gcloud compute addresses delete internet-neg-lb-ip --region=$region -q
gcloud compute networks subnets delete producer-psc-fr-subnet producer-psc-nat-subnet $region-proxy-only-subnet --region=$region -q
gcloud compute networks delete looker-psc-demo -q
13. 축하합니다
축하합니다. Private Service Connect에서 제공하는 Looker Console을 사용하여 Looker SMTP 서비스에 대한 연결을 구성하고 확인했습니다.
프로듀서 인프라를 만들고 프로듀서 서비스에 연결할 수 있는 인터넷 NEG, 프로듀서 서비스, Looker PSC 엔드포인트를 만드는 방법을 알아봤습니다.
Cosmopup은 Codelab이 멋지다고 생각합니다.
다음 단계
다음 Codelab을 확인하세요.
- Private Service Connect를 소비한 서비스 게시 및 사용
- Private Service Connect 및 내부 TCP 프록시 부하 분산기를 사용하여 하이브리드 네트워킹을 통해 온프레미스 서비스에 연결
- 게시된 모든 Private Service Connect Codelab에 액세스