ノート:
- このチュートリアルは、Oracle提供の無料ラボ環境で入手できます。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
ock-forgeをOracle Cloud Native Environmentで使用
イントロダクション
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はシェル・スクリプトのコレクションで、プライマリ・スクリプトはock-forge
で、起動可能なqcow2形式のイメージを生成してクラスタ・ノードを作成するか、Oracle CNEが実行中のコンテナのノードを更新するために使用できるOSTreeコンテナ・イメージです。
目的
このチュートリアルでは、次の操作を学習します。
ock-forge
をインストール、設定および使用して、カスタマイズされたOCKイメージを構築します- カスタマイズされたOCKイメージを使用したOracle CNEクラスタの作成
- OCKイメージに対する
extraIgnitionInline:
の変更を、作成されたすべてのクラスタのデフォルトとして、または個々のクラスタで使用する場合に含めます
前提条件
-
少なくとも1つのOracle Linux 9インスタンス
-
各システムには、次のものを使用してOracle Linuxがインストールおよび構成されている必要があります。
- sudoアクセスを使用するOracleユーザー・アカウント(インストール中に使用)
- ホスト間の鍵ベースのSSH (パスワードなしSSHとも呼ばれます)
- 動作中のKVM libvirt環境。
Oracle Cloud Native Environmentのデプロイ
ノート:独自のテナンシで実行している場合は、linux-virt-labs
GitHubプロジェクトREADME.mdを読み、演習環境をデプロイする前に前提条件を完了してください。
-
Lunaデスクトップでターミナルを開きます。
-
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で最適に動作します。
-
演習環境をデプロイします。
カスタム構成を使用してインストールします。
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のインストールが完了し、インスタンスの準備ができました。前の再生に注意してください。これは、デプロイするノードのパブリックIPアドレスとプライベートIPアドレス、および演習の実行中に必要なその他のデプロイメント情報を出力します。
Oracle Container Host for Kubernetes Builderのインストール
Oracle Container Host for Kubernetes Builder (ock-forge
)は、ブート可能なメディアのOracle Container Host for Kubernetes (OCK) OSTreeベースのイメージを構築するためのコマンドライン・ツールです。ock-forge
は、qcow2形式、RAWディスク・イメージ、または既存のブロック・デバイスに直接書き込むことで、仮想マシン・イメージを生成できます。このチュートリアルでは、カスタマイズされた.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構成リポジトリをクローニングします。
ock-forge
は、OCKのOCK構成ツリーファイル仕様を使用してイメージを構築します。cd ock-forge/ git clone https://github.com/oracle-cne/ock
OCKイメージの構築
次に、ネットワーク・ブロック・デバイスを作成し、ビルドするOCKイメージに追加のLinuxパッケージを追加し、ock-forge
を使用して、ブート可能なOCKイメージの生成に必要なすべての作業を実行します。
ネットワークブロックデバイスの有効化
ネットワーク・ブロック・デバイス(NBD)は、生成された.qcow2イメージをマウントするためにock-forge
によって使用され、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構成リポジトリにあります。
-
カスタマイズ・ファイルのディレクトリを作成します。
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イメージ構築プロセスが終了すると、ユーザーの作成、ファイルの作成、ネットワークの構成、systemdユニットの定義などが、Butaneのスキーマに準拠したButane構成YAMLファイルを使用してqcow2ファイルに対して可能になります。詳細は、アップストリームのButaneのドキュメントを参照してください。
次に、Butane準拠のYAMLファイルを作成してテキスト・ファイルを作成し、新しいユーザーを設定します。
デフォルト構成の使用方法
次の2つの方法のいずれかでカスタマイズを適用できます。
- 作成するすべての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
-
ワーカー・ノードに接続します。
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
-
ワーカー・ノードに接続します。
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トレーニング・ステーションに投稿されている他のチュートリアルを参照して、KubernetesおよびOracle Cloud Native Environmentの知識を引き続き拡大します。
関連リンク
- Oracle Cloud Native Environmentのドキュメント
- Oracle Cloud Native Environmentトラック
- Oracle Linuxトレーニング・ステーション
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Use ock-forge with Oracle Cloud Native Environment
G33068-01
Copyright ©2025, Oracle and/or its affiliates.