機械翻訳について

リリース2の構成の準備

Oracle CNEリリース2クラスタの構成を設定します。

クラスタ構成ファイルの作成

リリース1クラスタの構成と一致するクラスタ構成ファイルを作成します。 「OSのカスタマイズ」で識別されるカスタム構成が含まれていることを確認します。 設定するオプションは、リリース1クラスタと一致する必要があります。たとえば、クラスタ名は同じである必要があります。

クラスタ構成ファイルを作成します。 必要な最小構成は次のとおりです:

provider: byo
name: cluster_name
kubernetesVersion: kube_version
loadBalancer: ip_address
providers:
  byo:
    networkInterface: nic_name

クラスタ構成ファイルに含めることができる内容の詳細は、「Oracle Cloud Native Environment: Kubernetesクラスタ」を参照してください。

たとえば:

provider: byo
name: mycluster
kubernetesVersion: 1.29
loadBalancer: 192.0.2.100
providers:
  byo:
    networkInterface: enp1s0

OSTreeイメージの作成

開始する前に、Oracle CNEリリース1クラスタで実行されているKubernetesのバージョンを特定します。

  1. OSTreeイメージを作成します。

    重要:

    Oracle Container Host for Kubernetesイメージ・ビルダーを使用して作成されたカスタムOSTreeイメージを使用している場合は、このステップを実行する必要はありません。

    Oracle CNEリリース1クラスタにKubernetesのバージョンを含むBYOプロバイダのOSTreeイメージを作成します。

    ocne image createコマンドを使用して、OSTreeイメージを作成します。 構文は次のとおりです。

    ocne image create 
    {-a|--arch} arch
    [{-t|--type} provider]
    [{-v|--version} version]

    構文オプションの詳細は、Oracle Cloud Native Environment: CLIを参照してください。

    たとえば、64ビットx86サーバーのKubernetesリリース1.29の場合:

    ocne image create --type ostree --arch amd64 --version 1.29

    このコマンドは、完了するまでに時間がかかる場合があります。 OSTreeイメージは、$HOME/.ocne/images/ディレクトリに保存されます。

  2. OSTreeイメージをコンテナ・レジストリにアップロードします。

    ocne image uploadコマンドを使用して、イメージをコンテナ・レジストリにアップロードします。 構文は次のとおりです。

    ocne image upload 
    {-a|--arch} arch
    [{-b|--bucket} name]
    [{-c|--compartment} name]
    [--config path]
    [{-d|--destination} path]
    {-f|--file} path
    {-i|--image-name} name 
    {-t|--type} provider
    {-v|--version} version

    構文オプションの詳細は、Oracle Cloud Native Environment: CLIを参照してください。

    たとえば:
    ocne image upload --type ostree --file $HOME/.ocne/images/ock-1.29-amd64-ostree.tar --destination docker://myregistry.example.com/ock-ostree:latest --arch amd64

    Kubernetesクラスタは、OSTreeイメージをアップロードします。 ターゲット・コンテナ・レジストリに資格証明が設定されていない場合、サインイン・プロンプトが表示されます。 イメージがコンテナ・レジストリにアップロードされます。

    ヒント:

    コンテナ・レジストリがない場合、またはこれをローカルで実行する場合は、OSTreeアーカイブ・イメージをローカル・コンテナ・ランタイムにロードできます。 たとえば、OSTreeアーカイブ・ファイルをlocalhostのPodmanにロードするには、次のようにします:

    podman load < $HOME/.ocne/images/ock-1.29-amd64-ostree.tar
  3. OSTreeイメージを提供します。

    OSTreeイメージをコンテナとして使用できるようにします。 Kubernetesクラスタを含め、任意のコンテナ・ランタイムを使用します。

    たとえば、Podmanを使用してコンテナ・レジストリからコンテナ・イメージを提供するには、次のものを使用します:

    podman run -d --name ock-content-server -p 8080:80 myregistry.example.com/ock-ostree:latest

    Podmanのローカル・インスタンスからコンテナ・イメージを提供するには、次を使用します:

    podman run -d --name ock-content-server -p 8080:80 localhost/ock-ostree:latest

Ignitionファイルの作成

リリース2では、ノードをKubernetesクラスタに結合するために、Ignitionファイルが必要です。 Ignitionファイルの設定はコントロール・プレーン・ノードとワーカー・ノードで異なるため、クラスタ・ノード・タイプごとにIgnitionファイルを作成します。 これらのIgnitionファイルは、ホストOSをリリース2 OSにアップグレードするときにノードのブートに使用されるKickstartファイルに含めます。

  1. Ignitionファイルのロケーションを設定します。

    Kubernetesクラスタ・イグニッション・ファイルを使用可能にする方法を決定します。

    Ignitionファイルは、最初のブート時にすべてのホストで使用可能である必要があります。 イグニッション・ファイルは、ネットワーク・ファイル・サーバー(NFS)やwebサーバーなどを使用して、「アップストリームIgnitionのドキュメント」にリストされているプラットフォームのいずれかを使用して提供できます。

  2. kubeconfigファイルのロケーションを設定します。
    kubeconfigファイルをKUBECONFIG環境変数として設定します。 リリース1のクラスタに設定する必要があります。 たとえば:
    export KUBECONFIG=~/.kube/kubeconfig.mycluster
  3. コントロール・プレーン・ノードのイグニッション構成を生成します。

    ocne cluster joinコマンドを使用して、コントロール・プレーン・ノードをクラスタに結合するイグニッション情報を生成します。 次の構文を使用します。

    ocne cluster join 
    [{-c|--config} path] 
    [{-d|--destination} path]
    [{-N|--node} name]
    [{-P|--provider} provider]
    [{-r|--role-control-plane}]

    構文オプションの詳細は、Oracle Cloud Native Environment: CLIを参照してください。

    重要なオプションは次のとおりです:

    ocne cluster join --kubeconfig path --role-control-plane --config path > ignition_file

    重要:

    環境変数として設定されている場合でも、--kubeconfigオプションが必要です。

    たとえば:

    ocne cluster join --kubeconfig ~/.kube/kubeconfig.mycluster --role-control-plane --config myconfig.yaml > ignition-control-plane.ign

    出力には、アップグレードの後半で使用される重要な情報が含まれています。

    重要:

    出力に表示されているコマンドを実行する必要はありません。 かわりに、この出力のcertificate-keyおよび「トークン」を書き留めます。

  4. ワーカー・ノードのイグニッション構成を生成します。

    ocne cluster joinコマンドを使用して、ワーカー・ノードをクラスタに結合するイグニッション情報を生成します。 重要なオプションは次のとおりです:

    ocne cluster join --kubeconfig path --config path > ignition_file

    重要:

    環境変数として設定されている場合でも、--kubeconfigオプションが必要です。

    たとえば:

    ocne cluster join --kubeconfig ~/.kube/kubeconfig.mycluster --config myconfig.yaml > ignition-worker.ign

    出力には、アップグレードの後半で使用される重要な情報が含まれています。

    重要:

    出力に表示されているコマンドを実行する必要はありません。 かわりに、この出力の「トークン」に注意してください。

  5. Ignitionファイルを公開します。

    これらのファイルをホストするために選択したロケーションで、Ignitionファイルを使用可能にします。 たとえば、webサーバーにコピーします。

    ヒント:

    Podmanで実行されているNGINX webサーバー・コンテナを使用して、Ignitionファイルをローカルで使用できるようにするには、次を使用します:

    podman run -d --name ol-content-server -p 8081:80 -v 'directory':/usr/share/nginx/html/ock --privileged container-registry.oracle.com/olcne/nginx:1.17.7

    ここで、「ディレクトリ」は、Ignitionファイルを含むlocalhost上のロケーションです。 このディレクトリは、Kickstartファイルの提供にも使用できます。 次のコマンドを使用して、Ignitionファイルが処理されていることを検証できます:

    curl http://IPaddress:8081/ock/filename.ign

    ここで、IPaddressはlocalhostのIPアドレス、「ファイル名」はIgnitionファイルの名前です。

自動Oracle Linuxインストールの作成

2つのKickstartファイルを作成します。1つはコントロール・プレーン・ノードを起動し、もう1つはワーカー・ノードを起動します。 これらは同一である可能性が高いですが、Kubernetesノード・タイプの適切なIgnitionファイルへの参照を含める必要があります。

ノート:

既存のホストIPアドレスを保持するには、ノードごとに1つのKickstartファイルを作成し、IPアドレス構成を含めてください。 必要に応じて、このアップグレードのステップを調整します。

  1. 自動Oracle Linuxインストールを準備します。

    Kickstartファイルは、Oracle Linuxの自動インストールを定義します。 リリース2 OSのインストール時に、Kickstartファイルを使用可能にする必要があります。 Kickstartファイルを使用して、ホスト上でOracle Linuxの自動インストールを実行するメソッドを決定します。 たとえば、ネットワーク・ドライブ、webサーバー、またはUSBドライブを使用できます。

    ヒント:

    Kickstartファイルは、NFSやwebサーバーなどを使用して、Ignitionファイルと同じロケーションに含めると便利です。

    ブート・カーネルに一致するカーネルおよびinitrd (初期RAMディスク)のみをプロビジョニングする必要があります。 Oracle Linux UEKブートISOファイルは、必要なカーネルおよびinitrdを含むブート・メディアとして、より小さいファイル・サイズで使用することをお薦めします。 「Oracle Linux yumサーバー」からOracle Linux ISOファイルをダウンロードします。

    選択したメソッドを使用して、Oracle Linuxブート・メディアを準備します。

    Oracle Linuxの自動インストール・オプションの詳細は、「Oracle Linux 9: Oracle Linuxのインストール」を参照してください。

  2. 2つのKickstartファイルを作成します。

    コントロール・プレーン・ノードのKickstartファイルとワーカー・ノード用のKickstartファイルを作成します。 Kickstartファイルには、OSTreeイメージのロケーションと、ノード・タイプのIgnitionファイルのロケーションが含まれている必要があります。

    次を使用して、Ignitionファイルのロケーションを追加してください:

    bootloader --append "rw ip=dhcp rd.neednet=1 ignition.platform.id=metal ignition.config.url=http://hostname/filename.ign ignition.firstboot=1"

    ここで、「ホスト名」はIgnitionファイル・サーバーのホスト名またはIPアドレスで、「ファイル名」はIgnitionファイルです。

    コンテナ・レジストリ内のOSTreeイメージのロケーションは次のとおりです:

    ostreesetup --nogpg --osname ock --url registry --ref ock

    「レジ」を、コンテナ・レジストリ内のOSTreeイメージのURLに置き換えます。 たとえば、http://myregistry.example.com/ostreeなどです。

    たとえば、OSTreeイメージのロケーション情報では、次のようなものを使用できます:

    ...
    services --enabled=ostree-remount
    bootloader --append "rw ip=dhcp rd.neednet=1 ignition.platform.id=metal ignition.config.url=http://myhost.example.com/ignition.ign ignition.firstboot=1"
    ostreesetup --nogpg --osname ock --url http://myregistry.example.com/ostree --ref ock
    %post
    %end

    この例では、最小限のKickstartファイルを作成します:

    1. 変数を設定します:
      export OSTREE_IP=$(ip route |  grep 'default.*src' | cut -d' ' -f9)
      export OSTREE_PORT=8080
      export OSTREE_REF=ock
      export OSTREE_PATH=ostree
      export KS_PORT=8081
    2. Kickstartファイルを作成します:

      次のコマンドは、前のステップで設定した変数を使用してKickstartファイルを生成します。

      envsubst > kickstart.cfg << EOF
      logging
                      
      keyboard us
      lang en_US.UTF-8
      timezone UTC
      text
      reboot
                      
      selinux --enforcing
      firewall --use-system-defaults
      network --bootproto=dhcp
                      
      zerombr
      clearpart --all --initlabel
      part /boot --fstype=xfs --label=boot --size=2048
      part /boot/efi --fstype=efi --label=efi --size=1024
      part / --fstype=xfs --label=root --grow
                      
      services --enabled=ostree-remount
                      
      bootloader --append "rw ip=dhcp rd.neednet=1 ignition.platform.id=metal ignition.config.url=http://$SERVER_IP:$KS_PORT/ock/ignition.ign ignition.firstboot=1"
                      
      ostreesetup --nogpg --osname ock --url http://$SERVER_IP:$OSTREE_PORT/$OSTREE_PATH --ref $OSTREE_REF
                      
      %post
                      
      %end
      EOF

      次のKickstartファイルの例では、静的IPアドレス構成が含まれています。 このオプションを使用する場合は、ホストごとに個別のファイルが必要です。

      envsubst > kickstart.cfg << EOF
      logging
                      
      keyboard us
      lang en_US.UTF-8
      timezone UTC
      text
      reboot
                      
      selinux --enforcing
      firewall --use-system-defaults
      network --bootproto=static --device=enp1s0 --gateway=192.0.2.1 --ip=192.0.2.50 --netmask=255.255.255.0 --onboot=yes --hostname=ocne-control-plane-1
                      
      zerombr
      clearpart --all --initlabel
      part /boot --fstype=xfs --label=boot --size=2048
      part /boot/efi --fstype=efi --label=efi --size=1024
      part / --fstype=xfs --label=root --grow
                      
      services --enabled=ostree-remount
                      
      bootloader --append "rw ip=192.0.2.50::192.0.2.1:255.255.255.0::enp1s0:none rd.neednet=1 ignition.platform.id=metal ignition.config.url=http://$SERVER_IP:$KS_PORT/ock/ignition.ign ignition.firstboot=1"
                      
      ostreesetup --nogpg --osname ock --url http://$SERVER_IP:$OSTREE_PORT/$OSTREE_PATH --ref $OSTREE_REF
                      
      %post
                      
      %end
      EOF
  3. Kickstartファイルを公開します。

    これらのファイルをホストするために選択したロケーションで、Kickstartファイルを使用可能にします。 たとえば、webサーバーにコピーします。

    ヒント:

    Podmanを使用して、Kickstartファイルをローカルで使用可能にすることもできます。 Ignitionファイルを提供するためにPodmanでローカルにNGINXコンテナが実行されていて、Kickstartファイルが同じディレクトリにある場合は、すでに提供されています。 そうでない場合は、コンテナを起動します:

    podman run -d --name ol-content-server -p 8081:80 -v 'directory':/usr/share/nginx/html/ock --privileged container-registry.oracle.com/olcne/nginx:1.17.7

    ここで、「ディレクトリ」は、Kickstartファイルを含むlocalhost上のロケーションです。 次を使用して、Kickstartファイルが処理されていることを検証できます:

    curl http://IPaddress:8081/ock/filename.cfg

    ここで、IPaddressはlocalhostのIPアドレス、「ファイル名」はKickstartファイルの名前です。