주:
- 이 자습서는 Oracle에서 제공하는 무료 실습 환경에서 사용할 수 있습니다.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
Oracle Cloud Native Environment와 Ock-forge 사용
소개
Oracle Container Host for Kubernetes Image Builder(OCK Image Builder) 툴은 Oracle Cloud Native Environment(Oracle CNE) 배포에 사용되는 Oracle Container Host for Kubernetes(OCK) 이미지를 빌드합니다. OCK Image Builder는 Oracle CNE에서 사용하는 기본 OCK 이미지가 다음과 같은 요구 사항을 충족하지 않는 경우에 유용합니다.
- 표준 OCK 이미지와 다른 분할 영역 레이아웃입니다.
- 추가 패키지 또는 장치 드라이버가 누락되었습니다.
OCK Image Builder는 셸 스크립트의 모음으로, Oracle CNE가 실행 중인 컨테이너의 노드를 업데이트하는 데 사용할 수 있는 클러스터 노드 또는 OSTree 컨테이너 이미지를 생성하기 위해 부트 가능한 qcow2 형식 이미지를 생성하는 기본 스크립트는 ock-forge
입니다.
목표
이 자습서에서는 다음 항목에 대해 설명합니다.
ock-forge
를 설치, 설정 및 사용하여 사용자정의 OCK 이미지 작성- 커스터마이즈된 OCK 이미지를 사용하여 Oracle CNE 클러스터 생성
- 생성된 모든 클러스터의 기본값으로 또는 개별 클러스터와 함께 사용할 때 OCK 이미지에 대한
extraIgnitionInline:
변경 사항을 포함합니다.
필요 조건
-
최소 하나의 Oracle Linux 9 인스턴스
-
각 시스템에는 Oracle Linux가 설치되고 다음으로 구성되어야 합니다.
- sudo 액세스 권한이 있는 Oracle 사용자 계정(설치 중 사용됨)
- 호스트 간 키 기반 SSH(암호 없는 SSH라고도 함)
- 작동 중인 KVM libvirt 환경입니다.
Oracle Cloud 전용 환경 배치
주: 고유 테넌시에서 실행 중인 경우 랩 환경을 배치하기 전에 linux-virt-labs
GitHub 프로젝트 README.md을 읽고 필요 조건을 완료하십시오.
-
Luna Desktop에서 터미널을 엽니다.
-
linux-virt-labs
GitHub 프로젝트를 복제합니다.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
작업 디렉토리로 변경합니다.
cd linux-virt-labs/ocne2
-
필요한 모음을 설치합니다.
ansible-galaxy collection install -r requirements.yml
-
부트 볼륨 크기를 늘리고 libvirt를 설치한 다음 Oracle Linux 9를 사용합니다.
cat << EOF | tee instances.yml > /dev/null compute_instances: 1: instance_name: "ocne" type: "server" instance_ocpus: 8 instance_memory: 128 boot_volume_size_in_gbs: 256 ocne_type: "libvirt" install_ocne_rpm: true update_all: true os_version: "9" EOF
주: OCK Image Builder는 Oracle Linux 9에서 가장 잘 작동합니다.
-
lab 환경을 배치합니다.
사용자 정의 구성을 사용하여 설치합니다.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
무료 실습 환경에는 추가 변수
local_python_interpreter
이 필요합니다. 이 변수는 localhost에서 실행되는 재생에 대해ansible_python_interpreter
를 설정합니다. 환경이 python3.6 모듈 아래에 있는 Oracle Cloud Infrastructure SDK for Python용 RPM 패키지를 설치하므로 이 변수가 필요합니다.기본 배치 구성은 AMD CPU 및 Oracle Linux 8을 사용합니다. Intel CPU 또는 Oracle Linux 9를 사용하려면 배치 명령에
-e instance_shape="VM.Standard3.Flex"
또는-e os_version="9"
를 추가합니다.중요: 플레이북이 성공적으로 실행될 때까지 기다렸다가 일시 중지 작업에 도달합니다. 이 플레이북 단계에서는 Oracle Cloud Native Environment 설치가 완료되고 인스턴스가 준비됩니다. 배치하는 노드의 공용(public) 및 전용(private) IP 주소와 실습을 실행하는 동안 필요한 기타 배치 정보를 출력하는 이전 플레이를 기록해 둡니다.
Kubernetes 빌더용 Oracle Container 호스트 설치
Oracle Container Host for Kubernetes Builder(ock-forge
)는 부팅 가능한 매체 Oracle Container Host for Kubernetes(OCK) OSTree 기반 이미지를 빌드하기 위한 명령행 도구입니다. ock-forge
는 qcow2 형식, 원시 디스크 이미지로 가상 머신 이미지를 생성하거나 기존 블록 장치에 직접 작성하여 생성할 수 있습니다. 이 자습서에서는 사용자 정의된 .qcow2 이미지를 빌드하고 사용하는 방법을 보여줍니다.
-
터미널을 열고 SSH를 통해 OCNE 인스턴스에 연결합니다.
ssh oracle@<ip_address_of_node>
-
Git 및 Podman을 설치합니다.
sudo dnf install -y git container-tools
ock-forge
프로그램은 Podman이 필요하며 Git을 사용하여 GitHub에서ock-forge
및 Oracle Container Host for Kubernetes Configuration(OCK Configuration) 저장소를 복제합니다. -
ock-forge
저장소를 복제합니다.git clone https://github.com/oracle-cne/ock-forge
-
OCK Configuration 저장소를 복제합니다.
ock-forge
는 OCK에 OCK 구성 트리 파일 사양을 사용하여 이미지를 작성합니다.cd ock-forge/ git clone https://github.com/oracle-cne/ock
OCK 이미지 작성
그런 다음 네트워크 블록 장치를 만들고 빌드할 OCK 이미지에 몇 가지 추가 Linux 패키지를 추가한 다음 ock-forge
를 사용하여 부트 가능한 OCK 이미지를 생성하는 데 필요한 모든 작업을 수행합니다.
네트워크 블록 장치 사용
NBD(네트워크 블록 장치)는 ock-forge
에서 생성된 .qcow2 이미지를 마운트하는 데 사용되므로 Oracle CNE에서 Kubernetes 클러스터를 구축할 수 있습니다.
-
NBD 커널 모듈을 로드하고 8개의 파티션을 할당합니다.
sudo modprobe nbd max_part=8
-
NBD 장치가 있는지 확인합니다.
ls -l /dev/nbd*
출력 예:
[oracle@ocne ~]$ ls -l /dev/nbd* brw-rw----. 1 root disk 43, 0 Jan 15 13:55 /dev/nbd0 brw-rw----. 1 root disk 43, 16 Jan 15 13:55 /dev/nbd1 brw-rw----. 1 root disk 43, 160 Jan 15 13:55 /dev/nbd10 brw-rw----. 1 root disk 43, 176 Jan 15 13:55 /dev/nbd11 brw-rw----. 1 root disk 43, 192 Jan 15 13:55 /dev/nbd12 brw-rw----. 1 root disk 43, 208 Jan 15 13:55 /dev/nbd13 brw-rw----. 1 root disk 43, 224 Jan 15 13:55 /dev/nbd14 brw-rw----. 1 root disk 43, 240 Jan 15 13:55 /dev/nbd15 brw-rw----. 1 root disk 43, 32 Jan 15 13:55 /dev/nbd2 brw-rw----. 1 root disk 43, 48 Jan 15 13:55 /dev/nbd3 brw-rw----. 1 root disk 43, 64 Jan 15 13:55 /dev/nbd4 brw-rw----. 1 root disk 43, 80 Jan 15 13:55 /dev/nbd5 brw-rw----. 1 root disk 43, 96 Jan 15 13:55 /dev/nbd6 brw-rw----. 1 root disk 43, 112 Jan 15 13:55 /dev/nbd7 brw-rw----. 1 root disk 43, 128 Jan 15 13:55 /dev/nbd8 brw-rw----. 1 root disk 43, 144 Jan 15 13:55 /dev/nbd9
OCK 이미지 빌드 사용자정의
ock-forge
에서 작성한 OCK 이미지에 추가할 추가 Linux 패키지를 정의할 수 있습니다. OCK-forge에서 사용하는 트리 파일 사양은 GitHub OCK Configuration 저장소에 있습니다.
-
사용자 정의 파일에 대한 디렉토리를 만듭니다.
mkdir /home/oracle/ock-forge/ock/configs/config-1.31/custom
-
사용자 정의 파일을 만들어 Vim 및 Emacs 패키지를 설치합니다.
cat << EOF | tee /home/oracle/ock-forge/ock/configs/config-1.31/custom/myconfig.yaml > /dev/null packages: - vim - emacs EOF
-
manifest.yaml
파일에 사용자 정의 파일을 포함합니다.참고: 대상 Kubernetes 빌드에 대한 Kubernetes 구성 파일에 사용자정의를 더 추가할 수 있습니다.
sed -i '23i - custom/myconfig.yaml' /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml
-
새 사용자 정의 파일이
manifest.yaml
파일에 정의된 OCK 이미지 빌드 시퀀스에 나타나는지 확인합니다.cat /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml
출력 예:
[oracle@ocne ock-forge]$ cat /home/oracle/ock-forge/ock/configs/config-1.31/manifest.yaml ref: ock automatic-version-prefix: "1.31" documentation: false boot-location: modules machineid-compat: false ... ... include: - base.yaml - ux.yaml - ocne.yaml - removals.yaml - config.yaml - custom/myconfig.yaml ... ... modules: enable: - container-tools:ol8 - virt:kvm_utils3
OCK 이미지 작성
-
ock-forge
를 사용하여 qcow2 이미지를 만듭니다.sudo ./ock-forge -d /dev/nbd0 -D out/1.31/boot.qcow2 -i container-registry.oracle.com/olcne/ock-ostree:1.31 -O ./out/1.31/archive.tar -C ./ock -c configs/config-1.31 -P
설명:
-d
: 기존 블록 장치의 경로입니다.-D
: 디스크 이미지 파일의 경로입니다.-i
: 태그를 포함하는 정규화된 컨테이너 이미지 이름입니다.-C
: rpm-ostree 구성 집합이 포함된 디렉토리입니다.-c
: 빌드할 rpm-ostree 구성을 포함하는 디렉토리입니다.-P
: 이 플래그를 사용할 경우 -d로 지정된 블록 장치가 분할 영역 테이블을 지우고 기본 형상으로 다시 채웁니다.
-
Enter 키를 눌러 기본 컨테이너 레지스트리(
container-registry.oracle.com/ock-builder:latest
)를 적용합니다.주: 빌드 프로세스를 완료하는 데 30분 정도 걸립니다.
출력 예:
[oracle@ocne ock-forge]$ sudo ./ock-forge -d /dev/nbd0 -D out/1.31/boot.qcow2 -i container-registry.oracle.com/olcne/ock-ostree:1.31 -O ./out/1.31/archive.tar -C ./ock -c configs/config-1.31 -P + [[ -z '' ]] + [[ -z '' ]] + IGNITION_PROVIDER=qemu + [[ -n out/1.31/boot.qcow2 ]] ++ realpath -m out/1.31/boot.qcow2 + DISK=/home/oracle/ock-forge/out/1.31/boot.qcow2 ... ... + podman image exists ock-builder:latest + podman pull ock-builder:latest ? Please select an image: ▸ container-registry.oracle.com/ock-builder:latest docker.io/library/ock-builder:latest
OCK 이미지 수정
OCK 이미지 빌드 프로세스가 종료된 후에는 Butane의 스키마를 준수하는 Butane config YAML 파일을 사용하여 사용자를 생성하고, 파일을 생성하고, 네트워크를 구성하고, systemd 단위를 정의하고, qcow2 파일에 대해 훨씬 더 많은 작업을 수행할 수 있습니다. 자세한 내용은 업스트림 Butane 설명서를 참조하십시오.
그런 다음 부탄 호환 YAML 파일을 만들어 텍스트 파일을 만들고 새 사용자를 설정합니다.
기본 구성 사용
다음 두 가지 방법 중 하나로 사용자정의를 적용할 수 있습니다.
- 생성하는 모든 Oracle CNE 클러스터에 대한 기본값으로 사용합니다.
- 단일 Oracle CNE 클러스터에 맞춤형 구성을 적용합니다.
다음 단계에서는 사용자가 생성한 모든 Oracle CNE 클러스터에 대해 사용자 정의를 기본값으로 설정하는 방법을 보여 줍니다.
-
.ocne
디렉토리를 만듭니다.mkdir /home/oracle/.ocne
-
defaults.yaml
파일을 추가합니다.cat << EOF | tee /home/oracle/.ocne/defaults.yaml > /dev/null extraIgnitionInline: | variant: fcos version: 1.5.0 storage: files: - path: /etc/myfile.txt contents: inline: Hello, world! mode: 0644 user: id: 1000 group: id: 1001 EOF
설명(자세한 내용은 upstream 설명서 참조):
variant:
- Oracle CNE와 함께 사용하려면fcos
로 설정해야 합니다.version:
- Oracle CNE와 함께 사용하려면1.5.0
로 설정해야 합니다.path:
-/etcmyfile.txt
(생성된 파일의 경로 및 파일 이름)mode:
-644
로 설정합니다(다른 모든 사람이 읽고 쓸 수만 있음).user:
&group:
- 지정된 UID 및 GID에 파일 소유권을 지정합니다. 이 예에서는ocne
UID 및 GID로 설정합니다.
-
생성된 파일을 확인합니다.
cat /home/oracle/.ocne/defaults.yaml
OCK-forge로 새 OCK 이미지를 테스트합니다.
-
.qcow2 이미지를 Oracle CNE 설치로 복사합니다.
sudo cp /home/oracle/ock-forge/out/1.31/boot.qcow2 /var/lib/libvirt/images/boot.qcow2-1.31
-
.qcow2 이미지가 복사되었는지 확인합니다.
sudo ls /var/lib/libvirt/images
-
.qcow2 이미지를 사용하여 Oracle CNE를 시작합니다.
ocne cluster start --version 1.31 -n 1 -w 1 -u false
출력 예:
[oracle@ocne ock-forge]$ ocne cluster start --version 1.31 -n 1 -w 1 -u false INFO[2025-04-14T13:47:36Z] Creating new Kubernetes cluster with version 1.31 named ocne INFO[2025-04-14T13:48:34Z] Waiting for the Kubernetes cluster to be ready: ok INFO[2025-04-14T13:48:35Z] Installing core-dns into kube-system: ok INFO[2025-04-14T13:48:36Z] Installing kube-proxy into kube-system: ok INFO[2025-04-14T13:48:39Z] Installing kubernetes-gateway-api-crds into kube-system: ok INFO[2025-04-14T13:48:39Z] Installing flannel into kube-flannel: ok INFO[2025-04-14T13:48:40Z] Installing ui into ocne-system: ok INFO[2025-04-14T13:48:41Z] Installing ocne-catalog into ocne-system: ok INFO[2025-04-14T13:48:41Z] Kubernetes cluster was created successfully INFO[2025-04-14T13:48:41Z] Post install information: To access the cluster from the VM host: copy /home/oracle/.kube/kubeconfig.ocne.vm to that host and run kubectl there To access the cluster from this system: use /home/oracle/.kube/kubeconfig.ocne.local To access the UI, first do kubectl port-forward to allow the browser to access the UI. Run the following command, then access the UI from the browser using via https://localhost:8443 kubectl port-forward -n ocne-system service/ui 8443:443 Run the following command to create an authentication token to access the UI: kubectl create token ui -n ocne-system
-
클러스터가 존재하는지 확인합니다.
ocne cluster list
-
새 클러스터에 대한
kubeconfig
환경 변수를 설정합니다.export KUBECONFIG=$(ocne cluster show -C ocne)
-
클러스터 노드 목록을 가져옵니다.
kubectl get nodes
-
Worker 노드에 연결합니다.
ocne cluster console --direct --node ocne-worker-1
-
myfile.txt
파일이 있는지 확인합니다.ls -lsa /etc/myfile.txt
출력 예:
sh-4.4# ls -lsa /etc/myfile.txt 4 -rw-r--r--. 1 ocne ocne 13 Apr 16 10:51 /etc/myfile.txt
-
설치된
emacs
패키지를 확인합니다.ls /bin/emacs
출력 예:
sh-4.4# ls /bin/emacs /bin/emacs
-
exit
를 입력하여ocne-worker-1
노드를 종료합니다. -
제어 평면 노드에 연결합니다.
ocne cluster console --direct --node ocne-control-plane-1
-
myfile.txt
파일이 있는지 확인합니다.ls /etc/myfile.txt
출력 예:
sh-4.4# ls -lsa /etc/myfile.txt 4 -rw-r--r--. 1 ocne ocne 13 Apr 16 10:50 /etc/myfile.txt
-
설치된
emacs
패키지를 확인합니다.ls /bin/emacs
출력 예:
sh-4.4# ls /bin/emacs /bin/emacs
기본적으로 존재하지 않는 텍스트 파일(
/etc/myfile.txt
) 및 패키지(emacs
)를 추가하여 기본 Oracle CNE 클러스터 노드를 사용자 정의했는지 확인합니다. -
exit
를 입력하여ocne-control-plane-1
노드를 종료합니다.
클러스터 제거
-
클러스터를 삭제합니다.
ocne cluster delete
-
defaults.yaml
파일을 삭제합니다.rm /home/oracle/.ocne/defaults.yaml
단일 클러스터의 구성 업데이트
그런 다음 사용자 정의 파일을 만들어 단일 Oracle CNE 클러스터에 적용합니다.
-
구성 파일을 만듭니다.
cat << EOF | tee /home/oracle/myconfig.yaml > /dev/null provider: libvirt headless: true name: ocne kubernetesVersion: 1.31 controlPlaneNodes: 1 workerNodes: 1 extraIgnitionInline: | variant: fcos version: 1.5.0 storage: files: - path: /etc/myfile.txt contents: inline: Hello, world! mode: 0644 user: id: 1000 group: id: 1001 EOF
-
생성된 파일을 확인합니다.
cat /home/oracle/myconfig.yaml
-
.qcow2 이미지를 사용하여 Oracle CNE를 시작합니다.
ocne cluster start -u false -c /home/oracle/myconfig.yaml
출력 예:
[oracle@ocne ~]$ ocne cluster start -u false -c /home/oracle/myconfig.yaml INFO[2025-04-15T18:07:00Z] Creating new Kubernetes cluster with version 1.31 named ocne INFO[2025-04-15T18:08:14Z] Waiting for the Kubernetes cluster to be ready: ok INFO[2025-04-15T18:08:16Z] Installing core-dns into kube-system: ok INFO[2025-04-15T18:08:16Z] Installing kube-proxy into kube-system: ok INFO[2025-04-15T18:08:19Z] Installing kubernetes-gateway-api-crds into kube-system: ok INFO[2025-04-15T18:08:20Z] Installing flannel into kube-flannel: ok INFO[2025-04-15T18:08:20Z] Installing ocne-catalog into ocne-system: ok INFO[2025-04-15T18:08:20Z] Kubernetes cluster was created successfully INFO[2025-04-15T18:08:20Z] Post install information: To access the cluster from the VM host: copy /home/oracle/.kube/kubeconfig.ocne.vm to that host and run kubectl there To access the cluster from this system: use /home/oracle/.kube/kubeconfig.ocne.local
-
새 클러스터에 대한
kubeconfig
환경 변수를 설정합니다.export KUBECONFIG=$(ocne cluster show -C ocne)
-
클러스터 노드 목록을 가져옵니다.
kubectl get nodes
-
Worker 노드에 연결합니다.
ocne cluster console --direct --node ocne-worker-1
-
myfile.txt
파일이 있는지 확인합니다.ls -lsa /etc/myfile.txt
-
설치된
emacs
패키지를 확인합니다.ls /bin/emacs
-
exit
를 입력하여ocne-worker-1
노드를 종료합니다. -
제어 평면 노드에 연결합니다.
ocne cluster console --direct --node ocne-control-plane-1
-
myfile.txt
파일이 있는지 확인합니다.ls -lsa /etc/myfile.txt
-
설치된
emacs
패키지를 확인합니다.ls /bin/emacs
기본적으로 존재하지 않는 텍스트 파일(
/etc/myfile.txt
) 및 패키지(emacs
)를 추가하여 기본 Oracle CNE 클러스터 노드를 사용자 정의했는지 확인합니다. -
exit
를 입력하여ocne-control-plane-1
노드를 종료합니다.
클러스터 제거
-
클러스터를 삭제합니다.
ocne cluster delete
다음 단계
Oracle CNE OCK 이미지 파일을 사용자 정의하면 Oracle CNE Kubernetes 클러스터 노드에서 사용되는 환경을 수정할 수 있습니다. Oracle Linux Training Station에 게시된 다른 튜토리얼을 통해 Kubernetes 및 Oracle Cloud Native Environment에 대한 지식을 지속적으로 확장할 수 있습니다.
관련 링크
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Use ock-forge with Oracle Cloud Native Environment
G33069-01
Copyright ©2025, Oracle and/or its affiliates.