내 경우, 위 문서의 예제 명령에서 "yourdomain.com" 부분만 실제 나의 internet domain name으로 변경하고 인증서를 만들었다.
4) 설정 파일 harbor.yaml 작성하기
위에서 다운로드한 'harbor-offline-installer-v2.7.0.tgz' 파일에 harbor.yml.tmpl 파일이 있다.
이 설정 파일을 내 상황에 맞게 편집하면 되는데, 솔직히 항목이 많고 설명을 읽어도 아리송한 부분이 있다.
내 경우는 전체 설정 항목 중에서 아래 예시와 같이 몇 개만 수정했다.
##
## 설정 Template 파일을 복사
##
$ cp harbor.yml.tmpl harbor.yml
##
## 설정 파일을 편집하기
##
$ vi harbor.yml
... 중간 생략 ...
hostname: registry.sejong-world.kr
... 중간 생략 ...
https:
port: 443
certificate: /data/cert/sejong-world.kr.crt
private_key: /data/cert/sejong-world.kr.key
harbor_admin_password: MyNewPass56789
$
Kubernetes 또는 Docker, CRI-O 등 Container runtime 환경에서 container를 사용하다보면,
UTC + 0로 timezone이 설정되어 있는 경우를 자주 본다.
Container 내부의 timezone을 Seoul(서울)로 변경하려면 아래와 같이 따라하면 된다.
FROM ubuntu:22.04
... 중간 생략 ...
##
## Timezone 변경: Asia/Seoul 로 설정
##
RUN apt install -y tzdata
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
... 중간 생략 ...
KVM을 사용하다보면, Virt-Manager라는 GUI 툴이 조작하기 편해서 계속 Virt-Manager만 사용하게 된다.
그런데 가끔 SSH 터미널만 사용할 수 있는 환경이거나 CLI Command만 이용해서 Script를 작성할 때는 virsh를 꼭 사용해야 한다.
Virtual Machine 생성하기 (그리고 VM에 OS 설치하기)
##
## 2023년 1월에 실제 Ubuntu 설치할 때 사용했던 명령.
## 참고: --disk 옵션에 기존에 사용했던 qcow image file을 사용하면 kernel을 못 찾는다는 에러 발생.
## 원인은 아직 모르겠음.
## 참고: 아래 명령을 수행하고 대략 55초 정도 지나야 Console에 text message가 출력된다.
## (내가 사용한 HW Spec: i7-11700, 64GB)
## 따라서 느긋하게 기다려야 제대로 설치가 가능하다.
##
## 참고: size 단위는 GB.
## Case: OS 설치하면서 VM instance 시작하기
## (주의: OS 설치하면서 VM start 할 때는 --osinfo 옵션을 빼야 한다.)
$ virt-install \
--name my-vm \
--ram 4096 \
--vcpus 2 \
--disk /mnt/sda1/virtual_storage/waas.qcow2,size=100 \
--disk /mnt/hdd0/virtual_machine/harbor-2nd-storage.qcow2,size=500 \
--graphics none \
--network network=br-ex \
--console pty,target.type=virtio \
--autoconsole text \
--location /home/iso/ubuntu-22.04.1-live-server-amd64.iso
## Case: 기존 사용했던 VM 이미지를 이용하여 VM instance 기동하기.
$ virt-install \
--import \ ## 기존 VM image 파일을 이용하겠다는 옵션
--osinfo ubuntu22.04 \ ## 이 osinfo 옵션을 꼭 추가해야 한다.
--name my-vm \
--ram 4096 \
--vcpus 2 \
--disk /mnt/sda1/virtual_storage/waas.qcow2,size=100 \
--graphics none \
--network network=br-ex \
--console pty,target.type=virtio \
--autoconsole text
##
## CPU Pinning, Hugepages 설정이 필요해서 사용했던 명령.
##
$ virt-install --import \
--name my-machine \
--vcpus 4 \
## CPU Pinning
--cpuset=2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32 \
--memory=4096 \
## Hugepages
--memorybacking hugepages=on \
--numatune 0 \
--disk /mydir/my-machine.qcow2 \
--network bridge=my-br \
--network bridge=ems-br \
--os-variant rhel7.9 \
--noautoconsole
##
## 주의:
## 아래 --osinfo, --os-variant 옵션을 사용하면 VM instance 생성할 때 오류가 발생한다.
## 꼭 필요한 옵션이 아니니까, 아래 2가지 옵션을 사용하지 않는 것이 좋다. (2023년 1월 현재)
## --osinfo ubuntu22.04
## --os-variant ubuntu22.04
##
##
## 주의:
## VM instance 내부에서 OS 설치가 끝나고, 자동 reboot되어야 하는게 정상이지만
## 가끔 OS termination 단계에서 실패하고 멈춘 경우가 있다.
## reboot 시도 후 30초 후에도 console 화면의 변화가 없다면
## 과감하게 VM instance destroy를 시도한다. (아래 명령을 사용)
##
$
##
위 `virt-install` 명령을 실행하면, 바로 아래 화면이 출력되고
이 화면에서 대략 55~60초 정도 기다려야 다음 설치 화면으로 넘어간다.
위 화면에서 대략 55~60초 정도 기다리면, 드디어 아래와 같이 OS 설치 시작 화면이 나온다.
비록 Text Terminal 이지만, 조금이라도 예쁜 설치 화면을 원하면 "rich mode"를 선택한다.
이후부터는 일반적인 Ubuntu OS 설치 절차와 같다.
Virtual Machine 목록 보기
$ virsh list --all
Id Name State
-------------------------
1 x-node running
- am0 shut off
- aw0 shut off
- aw1 shut off
$
Virtual Machine 기동하기
##
## am0 가상 머신을 기동하기
##
$ virsh start am0
Domain am0 started
##
## am0 가상 머신이 기동되었는지 확인하기
##
$ virsh list --all
Id Name State
-------------------------
1 x-node running
2 am0 running
- aw0 shut off
- aw1 shut off
$
Virtual Machine 종료하기
##
## Graceful Termination of VM instance
## (참고로, 아래 숫자 2는 VM의 ID이다)
##
$ virsh shutdown 2
Domain 2 is being shutdown
$
##
## VM instance 강제 종료
## (참고로, 아래 숫자 2는 VM의 ID이다)
##
$ virsh destroy 2
##
## VM instance 삭제하기
##
$ virsh undefine vm-name
Virtual Machine의 Console에 접속하기
$ virsh console x-node
Connected to domain x-node
Escape character is ^]
CentOS Linux 8
x-node login: root
Password: ......
[root@x-node ~]# _
qcow2 image file size 조정 (resize)
##
## 원하는 size로 vm image를 재조정할 수 있다.
## 최초에 작게 만들어진 volume image 용량을 더 크게 늘리기 위해서 사용한다.
##
$ qemu-img resize myvm.qcow2 100G
##
## 아래 명령과 같이 수행하여 기존 VM image에서 빈 공간을 제거하고 size를 줄일 수 있다.
## 보통 qcow2 파일을 다른 장비로 옮길 때, vm image size를 줄이기 위한 용도로 사용된다.
## 참고: 원본 qcow2 이미지 파일은 유지되므로 별도로 백업하지 않아도 된다.
$ qemu-img convert -O qcow2 source_image.qcow2 shrunk_image.qcow2
##
## volume image 정보를 열람한다.
##
$ qemu-img info myvm.qcow2
qcow2 image 파일 생성하기
##
## 만약 qcow2 type의 virtual volume을 만들고 싶다면 아래와 같이 명령을 수행.
## Volume size는 250GB로 지정했지만, 실제로는 qcow2 파일에 meta data만 생성하기 때문에
## 실제 사이느는 1MB 밖에 안 되고, 시간도 3초 정도 밖에 안 걸린다.
##
$ qemu-img create -f qcow2 my-virtual-volume.qcow2 250G