IT관련 종사자들은 하나의 OS, 하나의 시스템에서만 작업하는 것이 아니다. 다양한 플랫폼과 운영 체제, 개발, 운영 환경을 사용하고 있다. 이런 멀티 플랫폼이나 개발 및 운영 환경을 구축하기 위해 물리적인 시스템을 도입하는 것은 돈이 많이 든다! 그래서 하나의 시스템이 가지고 있는 환경이나 리소스를 분할해서 사용하는 것이 필요한데, 이 개념이 바로 Virtualization(가상화 환경)이다.
가상화 환경 구축을 위해 필요한 기본적인 개념 및 소프트웨어에 설치하고 사용 방법에 대해서 알아보자.
1. Virtualization이란?
2. Vargrant를 이용한 가상화 구성 (+Virtual Box)
3. VM 환경에 Docker Engine 설치
4. Kubernetes Cluster 구축
Vagrant
Vagrant가 없어도 VM을 설치하고 사용할 수 있지만, 관리를 수월하게 하기 위해서 Vagrant를 Host PC에 설치하여 베이그란트를 통해 virtualBox를 관리한다.
Vargrant 란?
- 설정 스크립트를 기반으로 특정 환경의 가상머신을 생성 (코드로 인스턴스 이름, 네트워크 환경, 메모리의 크기등을 지정할 수 있다)
→ 개발 환경 공유
- 가상화 인스턴스 관리 SW(Provisioning 역할)
→ VirtualBox(기본 프로바이더), VMware, Hyper-V
Provisioning
- IT 인프라를 생성, 설정하는 프로세스
- 다양한 리소스에 대한 사용자 및 시스템 액세스를 관리하는 데 필요한 단계 포함
- 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포 → 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비
필수 SW 설치
- Vagrant (사용자 환경에 맞게! 나는 MAC)
- VirtualBox 6.1 ( Mac)
Vagrant 사용
Vargrant 동작
- Box 이미지 다운로드 → Box 이미지를 이용하여 프로젝트 생성(가상머신 구축)
* Box 이미지 = OS 이미지
- 프로젝트 최상위 디렉토리에 Vagrantfile 파일 생성/수정
- 프로젝트를 위한 Vagrant 가상 인스턴스(VM) 시작
- 가상 인스턴스 접속 및 작업
- 가상 인스턴스 종료
Box 이미지
아래의 주소에서 사용할 이미지 검색
https://app.vagrantup.com/boxes/search
Vagrant Cloud by HashiCorp
Vagrant Cloud by HashiCorp
app.vagrantup.com
이 방법은 docker에서도 똑같이 사용된다. docker 서버에서 필요로 하는 컨테이너를 생성하려고 할 때 docker에서 사용하려고 하는 이미지가 local repository에 존재하면 바로 컨테이너를 생성할 수 있지만, 없으면 공유되어 있는 docker hub사이트에서 필요한 이미지를 다운로드 받거나 private repository를 구성하여 사용한다.
- 작업 디렉토리 ) vagrant init
Vagrant 명령어
vagrant v #버전
vagrant status #상태
vagrant global-status
vagrant init #Provisioning 하는 스크립트 생성
vagrant up #Vagrantfile을 읽어 Provisioning 진행
vagrant halt #Host 종료
vagrant destroy #Host 삭제
vagrant suspend
vagrant resume
vagrant reload
vagrant ssh #Host 접속
vagrant provision #Host 설정 변경 적용
Vagrantfile
- Ruby 언어로 작성 된 Vagrant 설정 스크립트
- Vagrant 인스턴스로 생성 될 내용(설정) 을 작성
- vagrant init 명령어 실행 시 기본 Vagrantfile 생성
Vagrantfile 수정
15line 쯤에 있는 요 부분을 원하는 이미지로 바꾸면 된다!
1. Vagrant 인스턴스 시작
vagrant up
2. Vagrant 인스턴스 연결
vagrant ssh [vagrant_instance_name]
'Tech > DevOps' 카테고리의 다른 글
[IntelliJ] 테스트 커버리지(Test coverage), 테스트 코드 측정하기 (0) | 2024.03.26 |
---|---|
[Docker] 도커로 Mysql 컨테이너 접속하기 (0) | 2024.02.13 |
[CI/CD] Kubernetes Cluster 환경 구축 (0) | 2023.12.13 |
[CI/CD][Docker] VM 환경에 Docker Engin 설치 (1) | 2023.12.08 |
[CI/CD][Cloud] 1. Virtualization이란? (1) | 2023.12.07 |
댓글