쿠버네티스

[쿠버네티스] 02. 쿠버네티스 테스트 환경 구성하기 (Linux)

민선민선 2022. 2. 15. 00:02

## '컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커' 책을 공부하며 정리한 글입니다.

 

 

베어그런트 설치하기

베어그런트는 사용자의 요구에 맞게 시스템 자원을 할당, 배치. 배포해 두었다가 필요할 때 시스템을 사용할 수 있는 상태로 만들어 줍니다. 이를 프로비저닝(provisioning)이라고하는데, 프로비저닝을 하면 필요할 때 환경을 매우 쉽고 간단하게 구현할 수 있습니다. 실습을 위해 베이그런트를 2.0.3 버전을 설치해 보겠습니다.

 

wget -c https://releases.hashicorp.com/vagrant/2.0.3/vagrant_2.0.3_x86_64.deb
sudo dpkg -i vagrant_2.0.3_x86_64.deb

이때 guest machine과 VirtualBox host의 Guest Additions 버전이 다를 경우 mounting failed with the error 오류가 날 수 있는데, 이는 vagrant-vbguest 플러그인을 수동으로 설치함으로써 해결할 수 있습니다.

vagrant plugin install vagrant-vbguest

 

베어그런트로 랩 환경 구축하기

테스트 환경을 구성하기 전에 설치된 도구가 정상적으로 작동하는지 확인하기 위해, 프로비저닝을 위한 코드를 작성하고, 이를 베이그런트에서 불러온 후 버추얼박스에 운영 체제를 설치하겠습니다. 먼저, 베이그런트 초기화 명령을 실행해 비로비저닝에 필요한 기본 코드를 생성합니다.

vagrant init

 

생성된 Vagrantfile 스크립트 파일을 에디터 프로그램으로 열고 다음과 같이 수정합니다. 설정 목록은 크게 3가지로 나누어 집니다. 해당 네트워크 구성은 CentOS 기반 가상머신 3대에 기반하고 있습니다.

  1. 설치할 운영 체제의 이미지를 base에서 목적에 맞는 이미지로 변환하기 (sysnet4admin/CentOS-k8s)
  2. 호스트 전용 네트워크 설정 (192.168.1.10)
  3. 셸 프로비전을 통해 CentOS에 필요한 패키지 설치 (install_pkg.sh)
Vagrant.configure("2") do |config|
        config.vm.define "m-k8s" do |cfg|
                cfg.vm.box = "sysnet4admin/CentOS-k8s"
                cfg.vm.provider "virtualbox" do |vb|
                        vb.name = "m-k8s(github_SysNet4Admin)"
                        vb.cpus = 2
                        vb.memory = 2048
                        vb.customize ["modifyvm", :id, "--groups", "/k8s-SM(github_SysNet4Admin)"]
                end
                cfg.vm.host_name = "m-k8s"
                cfg.vm.network "private_network", ip: "192.168.1.10"
                cfg.vm.network "forwarded_port", guest: 22, host: 60010, auto_correct: true, id: "ssh"
                cfg.vm.synced_folder "../data", "/vagrant", disabled: true
                cfg.vm.provision "shell", path: "install_pkg.sh"
                cfg.vm.provision "file", source: "ping_2_nds.sh", destination: "ping_2_nds.sh"
                cfg.vm.provision "shell", path: "config.sh"
        end
        (1..3).each do |i|
                config.vm.define "w#{i}-k8s" do |cfg|
                        cfg.vm.box = "sysnet4admin/CentOS-k8s"
                        cfg.vm.provider "virtualbox" do |vb|
                                vb.name = "w#{i}-k8s(github_SysNet4Admin)"
                                vb.cpus = 1
                                vb.memory = 1024
                                vb.customize ["modifyvm", :id, "--groups", "/k8s-SM(github_SysNet4Admin)"]
                        end
                        cfg.vm.host_name = "w#{i}-k8s"
                        cfg.vm.network "private_network", ip: "192.168.1.10#{i}"
                        cfg.vm.network "forwarded_port", guest: 22, host: "6010#{i}", auto_correct:true, id: "ssh"
                        cfg.vm.synced_folder "../data", "/vagrant", disabled: true
                        cfg.vm.provision "shell", path: "install_pkg.sh"
                end
        end
  end

 

스크립트 파일 수정 이후, Vagrantfile에서 호출한 install_pkg.sh로 입력해 둔 배시 셸 파일을 실행해 EPEL 저장소와 코드 하이라이트를 위한 Vim의 추가 기능을 설치합니다.

#!/usr/bin/env bash
# install packages
yum install epel-release -y
yum install vim-enhanced -y

 

또한 ping 테스트 파일을 작성합니다.

# ping 3 times per nodes
ping 192.168.1.101 -c 3
ping 192.168.1.102 -c 3
ping 192.168.1.103 -c 3

 

마지막으로 권한 설정을 변경하는 스크립트를 작성합니다.

#!/usr/bin/env bash
# modify permission
chmod 744 ./ping_2_nds.sh

 

이제 4대의 가상 머신을 구성해 보겠습니다. 전체적인 테스트 환경의 구성은 밑의 그림과 같습니다. 추가한 프로비전 구문을 vagrant provision을 통해 실행하고, 앞서 작성한 파일들을 Vagrantfile과 같은 위치에 저장합니다. Vagrantfile을 읽어 들여 브로비저닝을 진행하면 가상 머신 이미지를 내려받습니다. 이때 주의해야할 점은, apt install virtualbox-qt를 통해서 선행적으로 virtualbox를 설치한 이후에 프로비저닝을 진행하여야 합니다. ssh를 통해 가상 머신에 접속한후 업로드된 ping_2_nds.sh파일을 실행해 3대의 CentOS(192.168.101~3)와 통신하는 데 문제가 없는지 확인합니다.

vagrant provision
vagrant up
vagrant ssh m-k8s
./ping_2_nds.sh

 

CentOS 3대를 추가로 구성한 테스트 환경

 

앞서 수정한 Vagrantfile로 설치된 추가 패키지를 yum repolist 명령으로 EPEL 저장소가 구성되었는지 그림과 같이 확인합니다. 또한, 문법 하이라이트가 적용되었는지 bashrc파일을 통해 확인한후 가상 머신에서 빠져나옵니다.

yum repolist
vi .bashrc
exit

yum repolist의 실행 결과