개발 머신 준비하기
개발 머신 준비하기 (Set up a development machine)
Calico Open Source 기반 OpenStack 클라우드에서 개발자용 VM을 프로비저닝하는 예제를 안내해요. 보안 그룹을 구성하고, VM을 external 네트워크에 붙인 뒤, SSH로 접속할 수 있는지 확인하는 흐름이에요. 관리자가 만들어 준 네트워크를 그대로 쓰는 일반 사용자 시나리오를 다뤄요.
출처: 문서
본문
이 예제에서 사용자는 Linux 개발 환경으로 쓸 머신을 한 대 띄우려고 해요. 이 사용자의 요구 사항은 단순해요. GUI와 SSH 접근만 되면 되고, 다른 건 별로 필요하지 않아요.
이 사용자는 OpenStack 사용자 하나, OpenStack 테넌트 하나로 프로비저닝돼요. Neutron은 자동으로 보안 그룹 하나(default)를 만들어 주고, 이 보안 그룹에는 다음 규칙이 들어 있어요:
default보안 그룹에 속한 머신에서 오는 모든 인바운드 트래픽 허용- 어디로든 나가는 모든 아웃바운드 트래픽 허용
IP 주소 지정과 연결성의 안내에 따르면, 이 사용자는 Neutron 네트워크나 서브넷을 만들 수 없지만 관리자가 만든 네트워크인 external과 internal에는 접근할 수 있어요.
사용자는 자기 노트북에서 이 머신에 접근하고 싶기 때문에, 데이터 센터 밖에서도 머신에 도달할 수 있어야 해요. 순수 Neutron이라면 플로팅 IP를 할당하는 방식이겠지만, Calico에서는 대신 VM을 external 네트워크에 붙이는 걸 원해요. 이 네트워크에 자신을 추가하려면 사용자는 먼저 네트워크의 UUID를 알아내야 해요.
neutron net-list
다음과 비슷한 결과가 나와야 해요.
+--------------------------------------+----------+----------------------------------------------------------+
| id | name | subnets |
+--------------------------------------+----------+----------------------------------------------------------+
| 8d5dec25-a6aa-4e18-8706-a51637a428c2 | external | 54db559c-5e1d-4bdc-83b0-c479ef2a0ead 172.18.208.0/24 |
| | | cf6ceea0-dde0-4018-ab9a-f8f68935622b 2001:db8:a41:2::/64 |
| fa52b704-7b3c-4c83-8698-244807352711 | internal | 301b3e63-5324-4d62-8e22-ed8dddd50689 10.65.0.0/16 |
| | | bf94ccb1-c57c-4c9a-a873-c20cbfa4ecaf 2001:db8:a41:3::/64 |
+--------------------------------------+----------+----------------------------------------------------------+
위 예제에서 external 네트워크의 UUID는 8d5dec25-a6aa-4e18-8706-a51637a428c2예요. 따라서 다음 nova boot 명령으로 머신을 만들 수 있어요.
nova boot --flavor m1.medium \
--image debian-wheezy-amd64 \
--security-groups default \
--nic "netid=8d5dec25-a6aa-4e18-8706-a51637a428c2" \
development-server
이렇게 하면 NIC 하나를 가진 VM이 external 네트워크에 놓여요. VM이 부팅되기 시작하고, Neutron은 external 네트워크에서 VM에 IP 주소를 할당해요. 이 경우 아래에서 볼 수 있듯 IPv4와 IPv6 주소 둘 다 받아요:
+--------------------------------------+-----------------------------------------------------------+
| Property | Value |
+--------------------------------------+-----------------------------------------------------------+
| external network | 2001:db8:a41:2::1c, 172.18.208.85 |
| flavor | m1.medium (3) |
| hostId | b80247c27400fc9048ca569c8635f00801654bf676a00d8f08887215 |
| id | e36f4e62-0efa-4188-87b8-8c96dc6e6028 |
| name | development-server |
| security_groups | default |
+--------------------------------------+-----------------------------------------------------------+
머신이 부팅되는 동안 보안 그룹을 설정할 수 있어요. 규칙 네 개가 더 필요해요. SSH용 하나와 VNC용 세 개예요. 이 예제에서 개발자의 개인 머신 IPv4 주소는 191.64.52.12이고, 이 머신에 접근할 수 있는 건 이 머신뿐이기를 원해요. 그래서 다음과 같이 보안 그룹 규칙 네 개를 추가해요.
SSH 인그레스 규칙을 추가하려면:
neutron security-group-rule-create --protocol tcp \
--port-range-min 22 \
--port-range-max 22 \
--direction ingress \
--remote-ip-prefix 191.64.52.12/32 \
--ethertype IPv4 \
default
첫 번째 VNC 규칙을 추가하려면:
neutron security-group-rule-create --protocol tcp \
--port-range-min 5800 \
--port-range-max 5801 \
--direction ingress \
--remote-ip-prefix 191.64.52.12/32 \
--ethertype IPv4 \
default
두 번째 VNC 규칙을 추가하려면:
neutron security-group-rule-create --protocol tcp \
--port-range-min 5900 \
--port-range-max 5901 \
--direction ingress \
--remote-ip-prefix 191.64.52.12/32 \
--ethertype IPv4 \
default
세 번째 VNC 규칙을 추가하려면:
neutron security-group-rule-create --protocol tcp \
--port-range-min 6000 \
--port-range-max 6001 \
--direction ingress \
--remote-ip-prefix 191.64.52.12/32 \
--ethertype IPv4 \
default
이 시점에서 개발자의 머신은 돌아가는 상태예요. 공개 IP(172.18.208.85)로 도달할 수 있고, 개발자는 실제로 SSH로 접속해서 이를 확인해요. 이제 준비가 끝났어요.
더 알아보기 (Learn more)
핵심은 VM을 external 네트워크에 붙여 데이터 센터 밖에서 도달하게 만드는 거예요. 네트워크 UUID는 neutron net-list로 확인하고, 보안 그룹 규칙은 자신의 IP에만 열어 두면 안전해요. OpenStack 네트워크 구성의 배경 이야기가 필요하면 IP 주소 지정과 연결성 문서를 함께 보세요.