This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第23章 インストール設定
23.1. ノードのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform は、Ignition を介してクラスター全体の設定とマシンごとの設定の両方をサポートしています。そのため、オペレーティングシステムに対する任意のパーティショニングとファイルコンテンツの変更が可能です。一般に、設定ファイルが Red Hat Enterprise Linux (RHEL) で文書化されている場合、Ignition を介した変更がサポートされます。
マシン設定の変更をデプロイするには 2 つの方法があります。
-
openshift-installの実行時にクラスターを起動するためにマニフェストファイルに組み込まれるマシン設定を作成します。 - Machine Config Operator を使用して実行中の OpenShift Container Platform ノードに渡されるマシン設定を作成します。
さらに、ベアメタルノードのインストール時に coreos-installer に渡される Ignition 設定などの参照設定を変更すると、マシンごとの設定が可能になります。現在、これらの変更はマシン設定オペレーターに表示されません。
以下のセクションでは、この方法でノード上で設定する必要が生じる可能性のある機能について説明します。
23.1.1. Butane でのマシン設定の作成 リンクのコピーリンクがクリップボードにコピーされました!
マシン設定は、ユーザーおよびファイルシステムの作成、ネットワークの設定、systemd ユニットのインストールなどを行う方法をマシンに指示することで、コントロールプレーンマシンおよびワーカーマシンを設定するために使用されます。
マシン設定の変更は困難である可能性があるため、Butane 設定を使用してマシン設定を作成することができます。これにより、ノードの設定がより容易になります。
23.1.1.1. Butane について リンクのコピーリンクがクリップボードにコピーされました!
Butane は、OpenShift Container Platform が使用するコマンドラインユーティリティーで、マシン設定を作成するための便利で簡略化した構文を提供したり、マシン設定の追加検証を実行したりします。Butane が受け入れる Butane 設定ファイルの形式は、OpenShift Butane config spec で定義されています。
23.1.1.2. Butane のインストール リンクのコピーリンクがクリップボードにコピーされました!
Butane ツール (butane) をインストールして、コマンドラインインターフェイスから OpenShift Container Platform マシン設定を作成できます。対応するバイナリーファイルをダウンロードし、Linux、Windows、または macOS に butane をインストールできます。
Butane リリースは、古いリリースと、Fedora CoreOS Config Transpiler (FCCT) との後方互換性があります。
手順
- Butane イメージのダウンロードページ (https://mirror.openshift.com/pub/openshift-v4/clients/butane/) に移動してください。
butaneバイナリーを取得します。最新バージョンの Butane の場合は、最新の
butaneイメージを現在のディレクトリーに保存します。curl https://mirror.openshift.com/pub/openshift-v4/clients/butane/latest/butane --output butane
$ curl https://mirror.openshift.com/pub/openshift-v4/clients/butane/latest/butane --output butaneCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: aarch64 や ppc64le など、Butane をインストールする特定のタイプのアーキテクチャーの場合は、適切な URL を指定してください。以下に例を示します。
curl https://mirror.openshift.com/pub/openshift-v4/clients/butane/latest/butane-aarch64 --output butane
$ curl https://mirror.openshift.com/pub/openshift-v4/clients/butane/latest/butane-aarch64 --output butaneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ダウンロード済みのバイナリーファイルを実行可能にします。
chmod +x butane
$ chmod +x butaneCopy to Clipboard Copied! Toggle word wrap Toggle overflow butaneバイナリーファイルをPATHにあるディレクトリーに移動します。PATHを確認するには、ターミナルを開き、以下のコマンドを実行します。echo $PATH
$ echo $PATHCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
butaneコマンドを実行して、Butane ツールを使用できるようになりました。butane <butane_file>
$ butane <butane_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.1.1.3. Butane を使用した MachineConfig オブジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
Butane を使用して MachineConfig オブジェクトを作成できるため、インストール時に、または Machine Config Operator を使用して、ワーカーノードまたはコントロールプレーンノードを設定できます。
前提条件
-
butaneユーティリティーをインストールしている。
手順
Butane 設定ファイルを作成します。以下の例では、
99-worker-custom.buという名前のファイルを作成します。このファイルは、カーネルデバッグメッセージを表示するようにシステムコンソールを設定し、chrony タイムサービスのカスタム設定を指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記99-worker-custom.buファイルは、ワーカーノードのマシン設定を作成するように設定されます。コントロールプレーンノードにデプロイするには、ロールをworkerからmasterに変更します。どちらの方法でも、デプロイメントの種類ごとに異なるファイル名を使用して手順全体を繰り返すことができます。直前の手順で作成したファイルを Butane に指定して
MachineConfigオブジェクトを作成します。butane 99-worker-custom.bu -o ./99-worker-custom.yaml
$ butane 99-worker-custom.bu -o ./99-worker-custom.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow MachineConfigオブジェクト YAML ファイルは、マシンの設定を終了するために作成されます。-
将来的に
MachineConfigオブジェクトを更新する必要がある場合に備えて、Butane 設定を保存します。 クラスターがまだ起動していない場合は、マニフェストファイルを生成し、
MachineConfigオブジェクト YAML ファイルをopenshiftディレクトリーに追加します。クラスターがすでに実行中の場合は、ファイルを以下のように適用します。oc create -f 99-worker-custom.yaml
$ oc create -f 99-worker-custom.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
23.1.2. day-1 カーネル引数の追加 リンクのコピーリンクがクリップボードにコピーされました!
多くの場合、カーネル引数を day-2 アクティビティーとして変更することが推奨されますが、初期クラスターのインストール時にすべてのマスターまたはワーカーノードにカーネル引数を追加することができます。以下は、クラスターのインストール時にカーネル引数を追加して、システムの初回起動前に有効にする必要が生じる可能性のある理由です。
- SELinux などの機能を無効にし、初回起動時にシステムに影響を与えないようにする必要がある場合。
RHCOS での SELinux の無効化はサポートされていません。
- システムの起動前に、低レベルのネットワーク設定を実行する必要がある場合。
カーネル引数をマスターまたはワーカーノードに追加するには、MachineConfig オブジェクトを作成し、そのオブジェクトをクラスターのセットアップ時に Ignition が使用するマニフェストファイルのセットに挿入することができます。
起動時に RHEL 8 カーネルに渡すことのできる引数のリストについては、Kernel.org カーネルパラメーター を参照してください。カーネル引数が OpenShift Container Platform の初回インストールを完了するために必要な場合は、この手順でカーネル引数のみを追加することが推奨されます。
手順
インストールプログラムが含まれるディレクトリーに切り替え、クラスターの Kubernetes マニフェストを生成します。
./openshift-install create manifests --dir <installation_directory>
$ ./openshift-install create manifests --dir <installation_directory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - カーネル引数をワーカーまたコントロールプレーンノードに追加するかどうかを決定します。
openshiftディレクトリーでファイル (例:99-openshift-machineconfig-master-kargs.yaml) を作成し、カーネル設定を追加するためにMachineConfigオブジェクトを定義します。この例では、loglevel=7カーネル引数をコントロールプレーンノードに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow カーネル引数をワーカーノードに追加する場合は、
masterをworkerに切り替えます。マスターおよびワーカーノードの両方に追加するために別々の YAML ファイルを作成します。
クラスターの作成を継続できます。
23.1.3. カーネルモジュールのノードへの追加 リンクのコピーリンクがクリップボードにコピーされました!
大半の一般的なハードウェアの場合、Linux カーネルには、コンピューターの起動時にそのハードウェアを使用するために必要となるデバイスドライバーモジュールが含まれます。ただし、一部のハードウェアの場合、Linux でモジュールを利用できません。したがって、各ホストコンピューターにこれらのモジュールを提供する方法を確保する必要があります。この手順では、OpenShift Container Platform クラスターのノードについてこれを実行する方法を説明します。
この手順に従ってカーネルモジュールを最初にデプロイする際、モジュールは現行のカーネルに対して利用可能になります。新規カーネルがインストールされると、kmods-via-containers ソフトウェアはモジュールを再ビルドし、デプロイしてそのモジュールの新規カーネルと互換性のあるバージョンが利用可能になるようにします。
この機能によって各ノードでモジュールが最新の状態に保てるようにするために、以下が実行されます。
- 新規カーネルがインストールされているかどうかを検出するために、システムの起動時に起動する各ノードに systemd サービスを追加します。
- 新規カーネルが検出されると、サービスはモジュールを再ビルドし、これをカーネルにインストールします。
この手順に必要なソフトウェアの詳細については、kmods-via-containers github サイトを参照してください。
以下の重要な点に留意してください。
- この手順はテクノロジープレビューです。
-
ソフトウェアのツールおよびサンプルは公式の RPM 形式で利用できず、現時点ではこの手順に記載されている非公式の
github.comサイトからしか取得できません。 - この手順で追加する必要がある可能性のあるサードパーティーのカーネルモジュールについては Red Hat はサポートしません。
-
この手順では、カーネルモジュールのビルドに必要なソフトウェアは RHEL 8 コンテナーにデプロイされます。モジュールは、ノードが新規カーネルを取得する際に各ノードで自動的に再ビルドされることに注意してください。このため、各ノードには、モジュールの再ビルドに必要なカーネルと関連パッケージを含む
yumリポジトリーへのアクセスが必要です。このコンテンツは、有効な RHEL サブスクリプションを使用して効果的に利用できます。
23.1.3.1. カーネルモジュールコンテナーのビルドおよびテスト リンクのコピーリンクがクリップボードにコピーされました!
カーネルモジュールを OpenShift Container Platform クラスターにデプロイする前に、プロセスを別の RHEL システムでテストできます。カーネルモジュールのソースコード、KVC フレームワーク、および kmod-via-containers ソフトウェアを収集します。次にモジュールをビルドし、テストします。RHEL 8 システムでこれを行うには、以下を実行します。
手順
RHEL 8 システムを登録します。
subscription-manager register
# subscription-manager registerCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 8 システムにサブスクリプションを割り当てます。
subscription-manager attach --auto
# subscription-manager attach --autoCopy to Clipboard Copied! Toggle word wrap Toggle overflow ソフトウェアとコンテナーのビルドに必要なソフトウェアをインストールします。
yum install podman make git -y
# yum install podman make git -yCopy to Clipboard Copied! Toggle word wrap Toggle overflow kmod-via-containersリポジトリーのクローンを作成します。リポジトリーのフォルダーを作成します。
mkdir kmods; cd kmods
$ mkdir kmods; cd kmodsCopy to Clipboard Copied! Toggle word wrap Toggle overflow リポジトリーのクローンを作成します。
git clone https://github.com/kmods-via-containers/kmods-via-containers
$ git clone https://github.com/kmods-via-containers/kmods-via-containersCopy to Clipboard Copied! Toggle word wrap Toggle overflow
RHEL 8 ビルドホストに KVC フレームワークインスタンスをインストールし、モジュールをテストします。これにより、
kmods-via-containersystemd サービスが追加され、読み込まれます。kmod-via-containersディレクトリーに移動します。cd kmods-via-containers/
$ cd kmods-via-containers/Copy to Clipboard Copied! Toggle word wrap Toggle overflow KVC フレームワークインスタンスをインストールします。
sudo make install
$ sudo make installCopy to Clipboard Copied! Toggle word wrap Toggle overflow systemd マネージャー設定を再読み込みします。
sudo systemctl daemon-reload
$ sudo systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
カーネルモジュールのソースコードを取得します。ソースコードは、制御下になく、他から提供されるサードパーティーモジュールをビルドするために使用される可能性があります。システムに対してクローン作成できる以下の
kvc-simple-kmodサンプルのコンテンツと同様のコンテンツが必要になります。cd .. ; git clone https://github.com/kmods-via-containers/kvc-simple-kmod
$ cd .. ; git clone https://github.com/kmods-via-containers/kvc-simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、設定ファイル
simple-kmod.confを編集し、Dockerfile の名前をDockerfile.rhelに変更します。kvc-simple-kmodディレクトリーに移動します。cd kvc-simple-kmod
$ cd kvc-simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow Dockerfile の名前を変更します。
cat simple-kmod.conf
$ cat simple-kmod.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow Dockerfile の例
KMOD_CONTAINER_BUILD_CONTEXT="https://github.com/kmods-via-containers/kvc-simple-kmod.git" KMOD_CONTAINER_BUILD_FILE=Dockerfile.rhel KMOD_SOFTWARE_VERSION=dd1a7d4 KMOD_NAMES="simple-kmod simple-procfs-kmod"
KMOD_CONTAINER_BUILD_CONTEXT="https://github.com/kmods-via-containers/kvc-simple-kmod.git" KMOD_CONTAINER_BUILD_FILE=Dockerfile.rhel KMOD_SOFTWARE_VERSION=dd1a7d4 KMOD_NAMES="simple-kmod simple-procfs-kmod"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
この例ではカーネルモジュール
simple-kmodのkmods-via-containers@.serviceのインスタンスを作成します。sudo make install
$ sudo make installCopy to Clipboard Copied! Toggle word wrap Toggle overflow kmods-via-containers@.serviceインスタンスを有効にします。sudo kmods-via-containers build simple-kmod $(uname -r)
$ sudo kmods-via-containers build simple-kmod $(uname -r)Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemd サービスを有効にし、起動します。
sudo systemctl enable kmods-via-containers@simple-kmod.service --now
$ sudo systemctl enable kmods-via-containers@simple-kmod.service --nowCopy to Clipboard Copied! Toggle word wrap Toggle overflow サービスのステータスを確認します。
sudo systemctl status kmods-via-containers@simple-kmod.service
$ sudo systemctl status kmods-via-containers@simple-kmod.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
● kmods-via-containers@simple-kmod.service - Kmods Via Containers - simple-kmod Loaded: loaded (/etc/systemd/system/kmods-via-containers@.service; enabled; vendor preset: disabled) Active: active (exited) since Sun 2020-01-12 23:49:49 EST; 5s ago...● kmods-via-containers@simple-kmod.service - Kmods Via Containers - simple-kmod Loaded: loaded (/etc/systemd/system/kmods-via-containers@.service; enabled; vendor preset: disabled) Active: active (exited) since Sun 2020-01-12 23:49:49 EST; 5s ago...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
カーネルモジュールがロードされていることを確認するには、
lsmodコマンドを使用してモジュールをリスト表示します。lsmod | grep simple_
$ lsmod | grep simple_Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
simple_procfs_kmod 16384 0 simple_kmod 16384 0
simple_procfs_kmod 16384 0 simple_kmod 16384 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション。他の方法を使用して
simple-kmodのサンプルが機能していることを確認します。dmesgを使用してカーネルリングバッファーで Hello world メッセージを探します。dmesg | grep 'Hello world'
$ dmesg | grep 'Hello world'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
[ 6420.761332] Hello world from simple_kmod.
[ 6420.761332] Hello world from simple_kmod.Copy to Clipboard Copied! Toggle word wrap Toggle overflow /procでsimple-procfs-kmodの値を確認します。sudo cat /proc/simple-procfs-kmod
$ sudo cat /proc/simple-procfs-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
simple-procfs-kmod number = 0
simple-procfs-kmod number = 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow spkutコマンドを実行して、モジュールの詳細情報を取得します。sudo spkut 44
$ sudo spkut 44Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
その後は、システムの起動時に、このサービスは新規カーネルが実行中であるかどうかをチェックします。新規カーネルがある場合は、サービスは新規バージョンのカーネルモジュールをビルドし、これをロードします。モジュールがすでにビルドされている場合は、これをロードします。
23.1.3.2. カーネルモジュールの OpenShift Container Platform へのプロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クラスターの初回起動時にカーネルモジュールを有効にする必要があるかどうかに応じて、以下のいずれかの方法でデプロイするようにカーネルモジュールを設定できます。
-
クラスターインストール時のカーネルモジュールのプロビジョニング (day-1): コンテンツを
MachineConfigとして作成し、これをマニフェストファイルのセットと共に組み込み、これをopenshift-installに提供できます。 - Machine Config Operator によるカーネルモジュールのプロビジョニング (day-2): カーネルモジュールを追加する際にクラスターが稼働するまで待機できる場合、Machine Config Operator (MCO) を使用してカーネルモジュールソフトウェアをデプロイできます。
いずれの場合も、各ノードは、新規カーネルの検出時にカーネルパッケージと関連ソフトウェアパッケージを取得できる必要があります。該当するコンテンツを取得できるように各ノードをセットアップする方法はいくつかあります。
- 各ノードに RHEL エンタイトルメントを提供します。
-
/etc/pki/entitlementディレクトリーから、既存 RHEL ホストの RHEL エンタイトルメントを取得し、それらを Ignition 設定の作成時に提供する他のファイルと同じ場所にコピーします。 -
Dockerfile 内で、カーネルおよびその他のパッケージを含む
yumリポジトリーへのポインターを追加します。これには、新たにインストールされたカーネルと一致させる必要があるため、新規のカーネルパッケージが含まれている必要があります。
23.1.3.2.1. MachineConfig オブジェクトを介したカーネルモジュールのプロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
MachineConfig オブジェクト でカーネルモジュールソフトウェアをパッケージ化することで、そのソフトウェアをインストール時に、または Machine Config Operator を使用して、ワーカーノードまたはコントロールプレーンノードに配信できます。
手順
RHEL 8 システムを登録します。
subscription-manager register
# subscription-manager registerCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 8 システムにサブスクリプションを割り当てます。
subscription-manager attach --auto
# subscription-manager attach --autoCopy to Clipboard Copied! Toggle word wrap Toggle overflow ソフトウェアのビルドに必要なソフトウェアをインストールします。
yum install podman make git -y
# yum install podman make git -yCopy to Clipboard Copied! Toggle word wrap Toggle overflow カーネルモジュールおよびツールをホストするディレクトリーを作成します。
mkdir kmods; cd kmods
$ mkdir kmods; cd kmodsCopy to Clipboard Copied! Toggle word wrap Toggle overflow kmods-via-containersソフトウェアを取得します。kmods-via-containersリポジトリーのクローンを作成します。git clone https://github.com/kmods-via-containers/kmods-via-containers
$ git clone https://github.com/kmods-via-containers/kmods-via-containersCopy to Clipboard Copied! Toggle word wrap Toggle overflow kvc-simple-kmodリポジトリーのクローンを作成します。git clone https://github.com/kmods-via-containers/kvc-simple-kmod
$ git clone https://github.com/kmods-via-containers/kvc-simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
モジュールソフトウェアを取得します。この例では、
kvc-simple-kmodが使用されます。 fakeroot ディレクトリーを作成し、先にクローン作成したリポジトリーを使用して Ignition で配信するファイルを使用してこれを設定します。
ディレクトリーを作成します。
FAKEROOT=$(mktemp -d)
$ FAKEROOT=$(mktemp -d)Copy to Clipboard Copied! Toggle word wrap Toggle overflow kmod-via-containersディレクトリーに移動します。cd kmods-via-containers
$ cd kmods-via-containersCopy to Clipboard Copied! Toggle word wrap Toggle overflow KVC フレームワークインスタンスをインストールします。
make install DESTDIR=${FAKEROOT}/usr/local CONFDIR=${FAKEROOT}/etc/$ make install DESTDIR=${FAKEROOT}/usr/local CONFDIR=${FAKEROOT}/etc/Copy to Clipboard Copied! Toggle word wrap Toggle overflow kvc-simple-kmodディレクトリーに移動します。cd ../kvc-simple-kmod
$ cd ../kvc-simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスを作成します。
make install DESTDIR=${FAKEROOT}/usr/local CONFDIR=${FAKEROOT}/etc/$ make install DESTDIR=${FAKEROOT}/usr/local CONFDIR=${FAKEROOT}/etc/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
fakeroot ディレクトリーのクローンを作成し、以下のコマンドを実行してシンボリックリンクをターゲットのコピーに置き換えます。
cd .. && rm -rf kmod-tree && cp -Lpr ${FAKEROOT} kmod-tree$ cd .. && rm -rf kmod-tree && cp -Lpr ${FAKEROOT} kmod-treeCopy to Clipboard Copied! Toggle word wrap Toggle overflow カーネルモジュールツリーを埋め込む Butane 設定ファイル (
99-simple-kmod.bu) を作成し、systemd サービスを有効にします。注記Butane の詳細は、Butane を使用したマシン設定の作成を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- コントロールプレーンノードでデプロイするには、
workerをmasterに変更します。コントロールプレーンおよびワーカーノードの両方にデプロイするには、それぞれのノードのタイプに対してこれらの残りの手順を 1 回ずつ実行します。
Butane を使用して、配信されるファイルおよび設定を含むマシン設定 YAML ファイルの
99-simple-kmod.yamlを生成します。butane 99-simple-kmod.bu --files-dir . -o 99-simple-kmod.yaml
$ butane 99-simple-kmod.bu --files-dir . -o 99-simple-kmod.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターがまだ起動していない場合は、マニフェストファイルを生成し、そのファイルを
openshiftディレクトリーに追加します。クラスターがすでに実行中の場合は、ファイルを以下のように適用します。oc create -f 99-simple-kmod.yaml
$ oc create -f 99-simple-kmod.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ノードは
kmods-via-containers@simple-kmod.serviceサービスを起動し、カーネルモジュールがロードされます。カーネルモジュールがロードされていることを確認するには、ノードにログインすることができます (
oc debug node/<openshift-node>を使用してからchroot /hostを使用します)。モジュールをリスト表示するには、lsmodコマンドを使用します。lsmod | grep simple_
$ lsmod | grep simple_Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
simple_procfs_kmod 16384 0 simple_kmod 16384 0
simple_procfs_kmod 16384 0 simple_kmod 16384 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.1.4. インストール時のディスクの暗号化およびミラーリング リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform のインストール時に、クラスターノードでブートディスクの暗号化およびミラーリングを有効にできます。
23.1.4.1. ディスクの暗号化について リンクのコピーリンクがクリップボードにコピーされました!
インストール時に、コントロールプレーンおよびコンピュートノードのブートディスクの暗号化を有効できます。OpenShift Container Platform は Trusted Platform Module (TPM) v2 および Tang 暗号化モードをサポートします。
- TPM v2: これは優先されるモードです。TPM v2 は、サーバー内に含まれる安全な暗号プロセッサーにパスフレーズを保存します。このモードを使用すると、ディスクがサーバーから削除された場合にクラスターノードのブートディスクデータが復号化されないようにできます。
- tang: Tang および Clevis は、ネットワークバインドディスク暗号化 (NBDE) を有効にするサーバーおよびクライアントコンポーネントです。クラスターノードのブートディスクデータを 1 つまたは複数の Tang サーバーにバインドできます。これにより、ノードが Tang サーバーにアクセスできるセキュアなネットワーク上にある場合を除き、データの復号化ができなくなります。Clevis は、クライアント側の復号化の実装に使用される自動復号化フレームワークです。
Tang 暗号化モードを使用したディスクの暗号化は、ユーザーによってプロビジョニングされるインフラストラクチャーでのベアメタルおよび vSphere インストールでのみサポートされます。
以前のバージョンの Red Hat Enterprise Linux CoreOS (RHCOS) では、ディスク暗号化は Ignition 設定で /etc/clevis.json を指定して設定されました。このファイルは、OpenShift Container Platform 4.7 以降で作成されたクラスターではサポートされず、ディスクの暗号化は以下の手順で設定される必要があります。
TPM v2 または Tang 暗号化モードを有効にすると、RHCOS ブートディスクは LUKS2 形式を使用して暗号化されます。
この機能には以下の特徴があります。
- インストーラーでプロビジョニングされるインフラストラクチャーおよびユーザーによってプロビジョニングされるインフラストラクチャーのデプロイメントで利用可能である。
- Red Hat Enterprise Linux CoreOS (RHCOS) システムのみでサポートされる。
- マニフェストのインストールフェーズでディスク暗号化が設定される。これにより、初回起動時からディスクに書き込まれたすべてのデータが暗号化されます。
- パスフレーズを提供するのにユーザーの介入を必要としない。
- FIPS モードが有効な場合は、AES-256-XTS 暗号化、または AES-256-CBC を使用します。
23.1.4.1.1. 暗号化しきい値の設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform では、複数の Tang サーバーの要件を指定できます。TPM v2 および Tang 暗号化モードを同時に設定して、TPM のセキュアな暗号プロセッサーが存在し、安全なネットワーク上で Tang サーバーにアクセスできる場合にのみ、ブートディスクデータを復号化できます。
Butane 設定の threshold 属性を使用して、復号化できるようにするために必要な TPM v2 および Tang 暗号化条件の最小数を定義できます。宣言条件の組み合わせで指定値に到達した場合に、しきい値が満たされます。たとえば、2 台の Tang サーバーにアクセスするか、TPM のセキュアな暗号プロセッサーおよび Tang サーバーの 1 つにアクセスすることで、以下の設定の 2 しきい値 に到達できます。
ディスク暗号化の Butane 設定例
デフォルトの しきい値 は 1 です。設定に複数の暗号化条件を追加するにも拘らず、しきい値を指定しない場合は、条件のいずれかが満たされている場合に復号化を実行できます。
復号化に TPM v2 と Tang の両方が必要な場合には、しきい値 属性の値は、指定された Tang サーバーの合計数と 1 つの値である必要があります。しきい値 が低い場合には、暗号化モードのいずれかのみを使用してしきい値に到達できます。たとえば、tpm2 を true に設定して、2 台の Tang サーバーを指定すると、TPM の安全な暗号プロセッサーが利用できない場合でも 2 台の Tang サーバーにアクセスして、しきい値を 2 つ満たすことができます。
23.1.4.2. ディスクのミラーリングについて リンクのコピーリンクがクリップボードにコピーされました!
コントロールプレーンおよびワーカーノードでの OpenShift Container Platform のインストール時に、ブートおよびその他のディスクの 2 つ以上の冗長ストレージデバイスへのミラーリングを有効にできます。ノードは、1 つのデバイスが利用可能な状態である限り、ストレージデバイスに障害が発生した後も引き続き機能します。
ミラーリングは、障害の発生したディスクの置き換えをサポートしません。ミラーを元の低下していない状態に復元するには、ノードを再プロビジョニングします。
ユーザーがプロビジョニングしたインフラストラクチャーのデプロイメントの場合、ミラーリングは RHCOS システムのみで使用できます。ミラーリングのサポートは、BIOS または UEFI で起動された x86_64 ノードおよび ppc64le ノードで利用できます。
23.1.4.3. ディスク暗号化およびミラーリングの設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform のインストール時に暗号化およびミラーリングを有効にし、設定することができます。
前提条件
- インストールノードで OpenShift Container Platform インストールプログラムをダウンロードしている。
インストールノードに Butane がインストールされている。
注記Butane は、OpenShift Container Platform が使用するコマンドラインユーティリティーで、マシン設定を作成するための便利で簡略化した構文を提供したり、マシン設定の追加検証を実行したりします。詳細は、Butane を使用したマシン設定の作成 セクションを参照してください。
- Tang 交換キーのサムプリントの生成に使用できる Red Hat Enterprise Linux (RHEL) 8 マシンにアクセスできる。
手順
- TPM v2 を使用してクラスターを暗号化する必要がある場合、TPM v2 暗号化を各ノードの BIOS で有効にする必要があるかどうかを確認します。これは、ほとんどの Dell システムで必要になります。コンピューターのマニュアルを確認してください。
Tang を使用してクラスターを暗号化する必要がある場合は、以下の準備段階の手順に従います。
- Tang サーバーを設定するか、既存のサーバーにアクセスします。手順については、NBDE (Network-Bound Disk Encryption) を参照してください。
RHEL 8 マシンに
clevisパッケージがインストールされていない場合はインストールします。sudo yum install clevis
$ sudo yum install clevisCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 8 マシンで以下のコマンドを実行し、交換キーのサムプリントを生成します。
http://tang.example.com:7500を Tang サーバーの URL に置き換えます。clevis-encrypt-tang '{"url":"http://tang.example.com:7500"}' < /dev/null > /dev/null$ clevis-encrypt-tang '{"url":"http://tang.example.com:7500"}' < /dev/null > /dev/null1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この例では、
tangd.socketは Tang サーバーのポート7500でリッスンしています。
注記このステップでは、
clevis-encrypt-tangコマンドを使用して、交換キーのサムプリントを生成します。この時点で暗号化用のデータがコマンドに渡されないため、/dev/nullはプレーンテキストではなく、インプットとして提供されます。この手順には必要ないため、暗号化された出力は/dev/nullに送信されます。出力例
The advertisement contains the following signing keys: PLjNyRdGw03zlRoGjQYMahSZGu9
The advertisement contains the following signing keys: PLjNyRdGw03zlRoGjQYMahSZGu91 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- エクスチェンジキーのサムプリント。
Do you want to trust these keys? [ynYN]のプロンプトが表示されたら、Yと入力します 。注記RHEL 8 には、Clevis バージョン 15 が同梱されており、SHA-1 ハッシュアルゴリズムを使用してサムプリントを生成します。その他のディストリビューションには、Clevis バージョン 17 以降があり、サムプリントに SHA-256 ハッシュアルゴリズムを使用します。サムプリントを作成するために SHA-1 を使用する Clevis バージョンを使用し、OpenShift Container Platform クラスターノードに Red Hat Enterprise Linux CoreOS (RHCOS) のインストール時に Clevis バインディングの問題を防ぐ必要があります。
ノードが静的 IP アドレス指定で設定されている場合は、RHCOS ノードをインストールするときに
coreos-installer iso customize --dest-karg-appendを実行するか、coreos-installer--append-kargオプションを使用して、インストール済みシステムの IP アドレスを設定します。ネットワークに必要なip=およびその他の引数を追加します。重要一部の静的 IP の設定方法は、初回のブート後に initramfs に影響を与えず、Tang 暗号化では機能しない場合があります。これらには、
coreos-installer--copy-networkオプション、coreos-installer iso customize--network-keyfileオプション、およびcoreos-installer pxe customize--network-keyfileオプションが含まれるほか、インストール中のライブ ISO または PXE イメージのカーネルコマンドラインにip=引数が追加されます。静的 IP 設定が間違っていると、ノードの 2 回目のブートが失敗します。
インストールノードで、インストールプログラムが含まれるディレクトリーに切り替え、クラスターの Kubernetes マニフェストを生成します。
./openshift-install create manifests --dir <installation_directory>
$ ./openshift-install create manifests --dir <installation_directory>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<installation_directory>は、インストールファイルを保存するディレクトリーへのパスに置き換えます。
ディスクの暗号化、ミラーリング、またはそれら両方を設定する Butane 設定を作成します。たとえば、コンピュートノードのストレージを設定するには、
$HOME/clusterconfig/worker-storage.buファイルを作成します。起動デバイスの Butane 設定例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1 2
- コントロールプレーンの設定については、これらの両方の場所で
workerをmasterに置き換えます。 - 3
- ppc64le ノードで、このフィールドを
ppc64leに設定します。その他のすべてのノードで、このフィールドは省略できます。 - 4
- ルートファイルシステムを暗号化する必要がある場合は、このセクションを追加してください。詳細は、ディスク暗号化について のセクションを参照してください。
- 5
- Trusted Platform Module (TPM) を使用してルートファイルシステムを暗号化する場合は、このフィールドを追加してください。
- 6
- 1 台以上の Tang サーバーを使用する必要がある場合は、このセクションを追加してください。
- 7
- Tang サーバーの URL を指定します。この例では、
tangd.socketは Tang サーバーのポート7500でリッスンしています。 - 8
- 前述のステップで生成された Exchange キーサムプリントを指定します。
- 9
- 復号化に実行に必要な TPM v2 および Tang 暗号化条件の最小数を指定します。デフォルト値は
1です。このトピックに関する詳細情報は、暗号化しきい値の設定 セクションを参照してください。 - 10
- ブートディスクをミラーリングする必要がある場合は、このセクションを追加してください。詳細は、ディスクのミラーリングについて を参照してください。
- 11
- RHCOS がインストールされるディスクを含む、ブートディスクミラーに含まれる必要があるすべてのディスクデバイスをリスト表示します。
- 12
- クラスターで FIPS モードを有効にするためにこのディレクティブを追加します。
重要クラスターで FIPS モードを有効にするには、FIPS モードで動作するように設定された Red Hat Enterprise Linux (RHEL) コンピューターからインストールプログラムを実行する必要があります。RHEL での FIPS モードの設定の詳細は、FIPS モードでのシステムのインストール を参照してください。ノードをディスク暗号化とミラーリングの両方を使用するように設定する場合、両方の機能を同じ Butane 設定ファイルに設定する必要があります。さらに、FIPS モードが有効にされたノードでディスク暗号化を設定する場合、FIPS モードが別のマニフェストで有効化されている場合でも、同じ Butane 設定ファイルに
fipsディレクティブを追加する必要があります。対応する Butane 設定ファイルからコントロールプレーンまたはコンピュートノードのマニフェストを作成し、
<installation_directory>/openshiftディレクトリーに保存します。たとえば、コンピュートノードのマニフェストを作成するには、以下のコマンドを実行します。butane $HOME/clusterconfig/worker-storage.bu -o <installation_directory>/openshift/99-worker-storage.yaml
$ butane $HOME/clusterconfig/worker-storage.bu -o <installation_directory>/openshift/99-worker-storage.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ディスクの暗号化またはミラーリングを必要とするノード種別ごとに、この手順を繰り返します。
- 今後マニフェストを更新する必要がある場合には、Butane 設定ファイルを保存します。
残りの OpenShift Container Platform インストールを継続します。
ヒントインストール時に、ディスク暗号化またはミラーリングに関連するエラーメッセージがないか、RHCOS ノードでコンソールログをモニタリングできます。
重要追加のデータパーティションを設定する場合、暗号化が明示的に要求されない限り、それらは暗号化されません。
検証
OpenShift Container Platform のインストール後に、ブートディスクの暗号化またはミラーリングがクラスターノードで有効にされているかどうかを確認できます。
インストールホストから、デバッグ Pod を使用してクラスターノードにアクセスします。
ノードのデバッグ Pod を起動します。以下の例では、
compute-1ノードのデバッグ Pod を起動します。oc debug node/compute-1
$ oc debug node/compute-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow /hostをデバッグシェル内の root ディレクトリーとして設定します。デバッグ Pod は、Pod 内の/hostにノードのルートファイルシステムをマウントします。root ディレクトリーを/hostに変更すると、ノードの実行可能パスに含まれるバイナリーを実行できます。chroot /host
# chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Red Hat Enterprise Linux CoreOS (RHCOS) を実行する OpenShift Container Platform クラスターノードは変更できず、Operator を使用してクラスターの変更を適用します。SSH を使用したクラスターノードへのアクセスは推奨されません。ただし、OpenShift Container Platform API が利用できない場合や、
kubeletがターゲットノードで適切に機能しない場合、oc操作がその影響を受けます。この場合は、代わりにssh core@<node>.<cluster_name>.<base_domain>を使用してノードにアクセスできます。
ブートディスクの暗号化を設定している場合は、有効であるかどうかを確認します。
デバッグシェルで、ノードでのルートマッピングのステータスを確認します。
cryptsetup status root
# cryptsetup status rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 暗号化されたデバイスにバインドされる Clevis プラグインを一覧表示します。
clevis luks list -d /dev/sda4
# clevis luks list -d /dev/sda41 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 前述のステップの出力の
deviceフィールドに一覧表示されるデバイスを指定します。
出力例
1: sss '{"t":1,"pins":{"tang":[{"url":"http://tang.example.com:7500"}]}}'1: sss '{"t":1,"pins":{"tang":[{"url":"http://tang.example.com:7500"}]}}'1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この出力例では、Tang プラグインは、
/dev/sda4デバイスの Shamir の Secret Sharing (SSS) Clevis プラグインにより使用されます。
ミラーリングを設定している場合は、有効かどうかを確認します。
デバッグシェルから、ノードにあるソフトウェアの RAID デバイスのリストを表示します。
cat /proc/mdstat
# cat /proc/mdstatCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記のコマンドの出力に記載されている各ソフトウェア RAID デバイスの詳細を確認してください。以下の例は、
/dev/md126デバイスの詳細を示しています。mdadm --detail /dev/md126
# mdadm --detail /dev/md126Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ソフトウェア RAID デバイスにマウントされているファイルシステムのリストを表示します。
mount | grep /dev/md
# mount | grep /dev/mdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この出力例では、
/bootファイルシステムが/dev/md126software RAID デバイスに、root ファイルシステムが/dev/md127にマウントされ t ています。
- OpenShift Container Platform ノードタイプごとに検証手順を繰り返します。
23.1.4.4. RAID 対応のデータボリュームの設定 リンクのコピーリンクがクリップボードにコピーされました!
ソフトウェア RAID のパーティション設定を有効にして、外部データボリュームを提供できます。OpenShift Container Platform は、データ保護およびフォールトトレランスに対応するために RAID 0、RAID 1、RAID 4、RAID 5、RAID 6、および RAID 10 をサポートします。詳細は、ディスクのミラーリングについてを参照してください。
前提条件
- インストールノードで OpenShift Container Platform インストールプログラムをダウンロードしている。
インストールノードに Butane をインストールしている。
注記Butane は、OpenShift Container Platform が使用するコマンドラインユーティリティーで、マシン設定を作成するための便利で簡略化した構文を提供したり、マシン設定の追加検証を実行したりします。詳細は、Butane を使用したマシン設定の作成 セクションを参照してください。
手順
ソフトウェア RAID を使用してデータボリュームを設定する Butane 設定を作成します。
ミラーリングされた起動ディスクに使用されるのと同じディスク上に RAID 1 を使用してデータボリュームを設定するには、
$HOME/clusterconfig/raid1-storage.buファイルを作成します。以下に例を示します。ミラーリングされた起動ディスク上の RAID 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow セカンダリーディスク上に RAID 1 を使用してデータボリュームを設定するには、
$HOME/clusterconfig/raid1-alt-storage.buファイルを作成します。以下に例を示します。セカンダリーディスク上の RAID 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
前のステップで作成した Butane 設定から RAID マニフェストを作成し、それを
<installation_directory>/openshiftディレクトリーに保存します。たとえば、コンピュートノードのマニフェストを作成するには、以下のコマンドを実行します。butane $HOME/clusterconfig/<butane_config>.bu -o <installation_directory>/openshift/<manifest_name>.yaml
$ butane $HOME/clusterconfig/<butane_config>.bu -o <installation_directory>/openshift/<manifest_name>.yaml1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<butane_config>および<manifest_name>を直前の手順のファイル名に置き換えます。たとえば、セカンダリーディスクの場合は、raid1-alt-storage.buおよびraid1-alt-storage.yamlになります。
- 今後マニフェストを更新する必要がある場合には、Butane 設定を保存します。
- 残りの OpenShift Container Platform インストールを継続します。
23.1.5. chrony タイムサービスの設定 リンクのコピーリンクがクリップボードにコピーされました!
chrony タイムサービス (chronyd) で使用されるタイムサーバーおよび関連する設定は、chrony.conf ファイルのコンテンツを変更し、それらのコンテンツをマシン設定としてノードに渡して設定できます。
手順
chrony.confファイルのコンテンツを含む Butane 設定を作成します。たとえば、ワーカーノードで chrony を設定するには、99-worker-chrony.buファイルを作成します。注記Butane の詳細は、Butane を使用したマシン設定の作成を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1 2
- コントロールプレーンノードでは、これらの両方の場所で
workerの代わりにmasterを使用します。 - 3
- マシン設定ファイルの
modeフィールドに 8 進数の値でモードを指定します。ファイルを作成し、変更を適用すると、modeは 10 進数の値に変換されます。コマンドoc get mc <mc-name> -o yamlで YAML ファイルを確認できます。 - 4
- DHCP サーバーが提供するものなど、有効な到達可能なタイムソースを指定します。または、NTP サーバーの
1.rhel.pool.ntp.org、2.rhel.pool.ntp.org、または3.rhel.pool.ntp.orgのいずれかを指定できます。
Butane を使用して、ノードに配信される設定を含む
MachineConfigオブジェクトファイル (99-worker-chrony.yaml) を生成します。butane 99-worker-chrony.bu -o 99-worker-chrony.yaml
$ butane 99-worker-chrony.bu -o 99-worker-chrony.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の 2 つの方法のいずれかで設定を適用します。
-
クラスターがまだ起動していない場合は、マニフェストファイルを生成した後に、
MachineConfigオブジェクトファイルを<installation_directory>/openshiftディレクトリーに追加してから、クラスターの作成を続行します。 クラスターがすでに実行中の場合は、ファイルを適用します。
oc apply -f ./99-worker-chrony.yaml
$ oc apply -f ./99-worker-chrony.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
クラスターがまだ起動していない場合は、マニフェストファイルを生成した後に、