가상 머신(VM) 인스턴스가 외부 네트워크 또는 다른 조직에서 연결될 수 있도록 사용 설정할 수 있습니다(VM 수신). 조직 프로젝트의 VM 워크로드는 외부 네트워크 또는 다른 조직의 서비스에 노출된 현재 VM(VM 이그레스라고 함)에 도달할 수 있습니다.
VirtualMachineExternalAccess
(VMEA)를 사용하여 VM 인그레스와 VM 이그레스를 함께 제어할 수 있습니다. Google Distributed Cloud (GDC) 오프라인 VMM API 또는 GDC 콘솔에서 VM 인스턴스에 사용 설정한 수신 및 송신 IP 주소를 모두 확인할 수 있습니다.
시작하기 전에
gdcloud
명령줄 인터페이스 (CLI) 명령어를 사용하려면 gdcloud
CLI를 다운로드, 설치, 구성해야 합니다.
Distributed Cloud의 모든 명령어는 gdcloud
또는 kubectl
CLI를 사용하며 운영체제 (OS) 환경이 필요합니다.
kubeconfig 파일 경로 가져오기
관리 API 서버에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.
관리 API 서버의 kubeconfig 파일이 없는 경우 로그인 및 생성합니다.
관리 API 서버의 kubeconfig 파일 경로를 사용하여 이 안내의
MANAGEMENT_API_SERVER
를 바꿉니다.
권한 및 액세스 요청
이 페이지에 나열된 작업을 수행하려면 프로젝트 VirtualMachine 관리자 역할이 있어야 합니다. 단계를 따라 VM이 있는 프로젝트의 네임스페이스에 프로젝트 VirtualMachine 관리자 (project-vm-admin
) 역할이 있는지 확인합니다.
GDC 콘솔 또는 gdcloud CLI를 사용하는 VM 작업의 경우 프로젝트 IAM 관리자에게 프로젝트 VirtualMachine 관리자 역할과 프로젝트 뷰어 (project-viewer
) 역할을 모두 할당해 달라고 요청하세요.
VM 외부 액세스 구성
VirtualMachineExternalAccess
(VMEA)는 VM 인그레스 및 VM 이그레스를 제어합니다.
VMEA는 VM 인그레스와 VM 이그레스를 별도로 제어할 수 없습니다. VM의 인그레스와 이그레스는 동시에 사용 설정하거나 사용 중지해야 합니다.
UI 또는 Distributed Cloud VMM API에서 VMEA를 구성하고 제어할 수 있습니다. VM에는 하나의 VMEA만 있을 수 있습니다. VM에 VMEA가 없으면 기본적으로 인그레스와 이그레스가 모두 사용 중지됩니다.
외부 액세스 사용 설정
데이터 전송 및 데이터 전송을 위해 외부 액세스가 있는 VM을 사용 설정하려면 GDC 콘솔 또는 Distributed Cloud Virtual Machine Manager API에서 VMEA를 구성하면 됩니다.
기본적으로 프로젝트 내 네트워크 트래픽은 허용되며 프로젝트 내에서 VM에 직접 액세스할 수 있습니다. 네트워크 정책은 프로젝트 외부에서 VM으로의 모든 인그레스 트래픽을 차단합니다. 소스 IP 주소가 데이터 전송을 통해 VM에 액세스할 수 있도록 새 네트워크 정책을 수동으로 만들어야 합니다. 이 네트워크 정책은 교차 프로젝트 트래픽 네트워크 정책 또는 교차 조직 트래픽 네트워크 정책일 수 있습니다. 위치는 VM에 액세스하려는 위치에 따라 다릅니다.
VMEA 사양의 enabled
필드에 true
또는 false
를 지정하여 VM의 외부 액세스를 사용 설정하거나 사용 중지할 수 있습니다. VM 인그레스의 경우 VMEA 사양의 ports
필드에 추가할 각 포트의 이름, 프로토콜, 포트 번호를 지정하여 포트의 데이터 전송을 구성할 수 있습니다.
새 VMEA를 만들어 VM의 외부 액세스를 사용 설정하려면 다음 단계를 완료하세요.
콘솔
- 콘솔을 사용하여 VM을 만드는 과정에서 VM 인스턴스 만들기 페이지에서 네트워크 세부정보 페이지로 이동합니다.
- 페이지의 세로 탐색 메뉴에서 네트워크를 찾습니다.
- 외부 액세스 허용을 선택하여 VM에서 외부 액세스를 사용 설정합니다.
API
다음 명령어를 실행합니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -n PROJECT -f - <<EOF
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineExternalAccess
metadata:
name: VM_NAME
spec:
enabled: true
ports:
- name: PORT_NAME
protocol: PROTOCOL
port: PORT_NUMBER
EOF
다음 변수를 바꿉니다.
- MANAGEMENT_API_SERVER: 관리 API 서버의 kubeconfig 파일입니다.
- VM_NAME: VM의 이름입니다.
- PORT_NAME: 포트 이름입니다.
- PROTOCOL: 인그레스 서비스에서 사용할 프로토콜입니다. 프로토콜 이름은 대문자여야 하며 Kubernetes 지원 프로토콜(예:
TCP
,UDP
,SCTP
)이어야 합니다. - PORT_NUMBER: 포트 번호입니다.
VMM API를 통해 기존 VMEA를 수정하여 VM의 외부 액세스를 사용 설정하려면 다음을 실행합니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT
외부 액세스 사용 중지
VM에 해당하는 VMEA가 없으면 인그레스와 이그레스가 모두 사용 중지됩니다. VM에 해당하는 VMEA가 있는 경우 enabled
필드를 false
로 설정하거나 VMEA를 직접 삭제하여 VMEA를 사용 중지할 수 있습니다. 이러한 작업은 Distributed Cloud VMM API를 통해 실행할 수 있습니다.
외부 액세스를 사용 중지하려면 다음 단계를 완료하세요.
API
VMEA를 삭제하여 외부 액세스를 사용 중지합니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER delete virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT
다음을 바꿉니다.
- MANAGEMENT_API_SERVER: 관리 API 서버의 kubeconfig 파일입니다.
- VM_NAME: VM의 이름입니다.
- PROJECT: VM이 있는 Distributed Cloud 프로젝트입니다.
VMEA를 수정하여 외부 액세스를 사용 중지합니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT
enabled
필드를 false
로 업데이트합니다.
인그레스
인그레스 IP 주소 보기
VM에 인그레스가 사용 설정된 경우 생성 후 GDC 콘솔에 인그레스 IP 주소가 표시됩니다. GDC 콘솔의 VM 세부정보 페이지에서도 이 인그레스 IP 주소를 확인할 수 있습니다.
IP 주소를 가져오려면 Distributed Cloud VMM API를 사용하세요. 다음을 완료합니다.
API
IP 주소를 가져옵니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT -ojsonpath='{.status.ingressIP}'
다른 운영체제 (OS)가 있는 VM의 경우 ssh
명령어를 사용하여 TCP로 사용 설정한 포트가 있는 수신 IP 주소로 VM에 액세스합니다.
인그레스 수정
VM에 VMEA를 사용 설정한 후 VMEA를 수정하여 인그레스를 맞춤설정할 수 있습니다. GDC 콘솔에서 VM 인그레스의 사양을 직접 수정할 수 있습니다. kubectl
CLI를 사용하여 VMEA 사양에서 VM 인그레스를 수정할 수도 있습니다.
인그레스를 맞춤설정하도록 VMEA를 수정하려면 다음 단계를 완료하세요.
예를 들어 TCP 프로토콜을 사용하여 기존 VM 수신에 포트 PORT_NUMBER를 추가하려면 다음 명령어를 사용합니다.
콘솔
GDC 콘솔에서 VM 인그레스 서비스의 포트를 직접 수정합니다.
- 세로 탐색 메뉴에서 인스턴스를 클릭합니다.
- 페이지에서 네트워크 세부정보로 스크롤합니다.
인그레스 포트에서 수정 아이콘을 클릭하여 인그레스 포트를 수정합니다.
API
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT --type "json" -p '[{"op":"add","path":"/spec/ports/-","value": {"name":"PORT_NAME","port":PORT_NUMBER, "Protocol":"TCP"}}]'
다음을 바꿉니다.
- MANAGEMENT_API_SERVER: 관리 API 서버의 kubeconfig 파일입니다.
- VM_NAME: VM의 이름입니다.
- PROJECT: VM이 있는 Distributed Cloud 프로젝트입니다.
- PORT_NAME: 추가할 포트의 이름입니다.
- PORT_NUMBER: 포트 번호입니다.
TCP 외 프로토콜로 인그레스 사용 설정
Distributed Cloud를 사용하면 다양한 프로토콜로 VM 인그레스를 사용 설정할 수 있습니다. 기본적으로 VM 인그레스 서비스는 TCP 프로토콜을 사용합니다. VM에 자체 비 TCP 프로토콜 인그레스를 추가할 수 있습니다. Distributed Cloud는 다음 프로토콜을 지원합니다.
- 전송 제어 프로토콜 (TCP)
- 사용자 데이터그램 프로토콜 (UDP)
- 스트림 제어 전송 프로토콜 (SCTP)
VMEA를 만들 때 다른 프로토콜 이름을 지정하여 TCP가 아닌 프로토콜로 데이터 전송을 사용 설정할 수 있습니다.
이그레스
조직 프로젝트의 VM 워크로드는 외부 네트워크에 도달하거나 다른 조직의 서비스에 노출될 수 있습니다. VM의 데이터 전송을 사용 설정하면 이그레스 IP 주소가 생성됩니다. VM은 이 IP 주소로 외부 서비스에 연결됩니다.
이 IP 주소 데이터를 외부 네트워크로 전송하려면 프로젝트 네트워크 정책을 적용해야 할 수 있습니다. 자세한 내용은 조직 간 트래픽 네트워크 정책 이그레스를 참고하세요.
이그레스 IP 주소 보기
이그레스가 사용 설정된 VM의 경우 생성 후 GDC 콘솔에 이그레스 IP 주소가 표시됩니다. VM 세부정보 페이지에서도 이 이그레스 IP 주소를 확인할 수 있습니다.
이그레스 IP 주소를 보려면 다음 단계를 완료하세요.
API
IP 주소를 가져옵니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT -ojsonpath='{.status.egressIP}'
다음을 바꿉니다.
- MANAGEMENT_API_SERVER: 관리 API 서버의 kubeconfig 파일입니다.
- VM_NAME: VM의 이름입니다.
- PROJECT: VM이 있는 Distributed Cloud 프로젝트입니다.
VM 이그레스는 프로젝트를 기반으로 합니다. 동일한 프로젝트 내의 VM에는 동일한 이그레스 IP 주소가 포함됩니다.
이그레스 제어
이전 Distributed Cloud 버전에서는 실행 중인 VM에 대한 이그레스 변경사항을 반영하려면 VM을 재부팅해야 했습니다. 버전 1.11에서는 VM을 재부팅하지 않고 VM 이그레스를 사용 설정 및 중지할 수 있습니다. 이 변경사항은 VMEA를 업데이트한 직후에 적용됩니다.