検索

19.4. 独自のインフラストラクチャーを使用した OpenStack へのクラスターのインストール

download PDF

OpenShift Container Platform バージョン 4.16 では、user-provisioned infrastructure 上で実行される Red Hat OpenStack Platform (RHOSP) にクラスターをインストールできます。

独自のインフラストラクチャーを使用することで、クラスターを既存のインフラストラクチャーおよび変更と統合できます。このプロセスでは、installer-provisioned installation の場合よりも多くの手作業が必要になります。Nova サーバー、Neutron ポート、セキュリティーグループなどのすべての RHOSP リソースを作成する必要があるためです。ただし、Red Hat では、デプロイメントプロセスを支援する Ansible Playbook を提供しています。

19.4.1. 前提条件

19.4.2. OpenShift Container Platform のインターネットアクセス

OpenShift Container Platform 4.16 では、クラスターをインストールするためにインターネットアクセスが必要になります。

インターネットへのアクセスは以下を実行するために必要です。

  • OpenShift Cluster Manager にアクセスし、インストールプログラムをダウンロードし、サブスクリプション管理を実行します。クラスターにインターネットアクセスがあり、Telemetry を無効にしない場合、そのサービスは有効なサブスクリプションでクラスターを自動的に使用します。
  • クラスターのインストールに必要なパッケージを取得するために Quay.io にアクセスします。
  • クラスターの更新を実行するために必要なパッケージを取得します。
重要

クラスターでインターネットに直接アクセスできない場合、プロビジョニングする一部のタイプのインフラストラクチャーでネットワークが制限されたインストールを実行できます。このプロセスで、必要なコンテンツをダウンロードし、これを使用してミラーレジストリーにインストールパッケージを設定します。インストールタイプによっては、クラスターのインストール環境でインターネットアクセスが不要となる場合があります。クラスターを更新する前に、ミラーレジストリーのコンテンツを更新します。

19.4.3. OpenShift Container Platform を RHOSP にインストールするリソースのガイドライン

OpenShift Container Platform のインストールをサポートするために、Red Hat OpenStack Platform (RHOSP) クォータは以下の要件を満たす必要があります。

表19.4 RHOSP のデフォルトの OpenShift Container Platform クラスターに関する推奨リソース
リソース

Floating IP アドレス

3

ポート

15

ルーター

1

サブネット

1

RAM

88 GB

vCPU

22

ボリュームストレージ

275 GB

インスタンス

7

セキュリティーグループ

3

セキュリティーグループルール

60

サーバーグループ

2 - 各マシンプールの追加のアベイラビリティーゾーンごとに 1 つ追加

クラスターは推奨されるリソースよりもリソースが少ない場合にも機能する場合がありますが、その場合のパフォーマンスは保証されません。

重要

RHOSP オブジェクトストレージ (Swift) が利用可能で、swiftoperator ロールを持つユーザーアカウントによって操作されている場合、これは OpenShift Container Platform イメージレジストリーのデフォルトバックエンドとして使用されます。この場合、ボリュームストレージ要件は 175 GB です。Swift 領域要件は、イメージレジストリーのサイズによって異なります。

注記

デフォルトで、セキュリティーグループおよびセキュリティーグループルールのクォータは低く設定される可能性があります。問題が生じた場合には、管理者として openstack quota set --secgroups 3 --secgroup-rules 60 <project> を実行して値を増やします。

OpenShift Container Platform デプロイメントは、コントロールプレーンマシン、コンピュートマシン、およびブートストラップマシンで構成されます。

19.4.3.1. コントロールプレーンマシン

デフォルトでは、OpenShift Container Platform インストールプロセスは 3 つのコントロールプレーンマシンを作成します。

それぞれのマシンには以下が必要です。

  • RHOSP クォータからのインスタンス
  • RHOSP クォータからのポート
  • 少なくとも 16 GB のメモリーと 4 つの vCPU を備えたフレーバー
  • RHOSP クォータから少なくとも 100 GB のストレージ容量

19.4.3.2. コンピュートマシン

デフォルトでは、OpenShift Container Platform インストールプロセスは 3 つのコンピューティングマシンを作成します。

それぞれのマシンには以下が必要です。

  • RHOSP クォータからのインスタンス
  • RHOSP クォータからのポート
  • 少なくとも 8 GB のメモリーと 2 つの vCPU を備えたフレーバー
  • RHOSP クォータから少なくとも 100 GB のストレージ容量
ヒント

コンピュートマシンは、OpenShift Container Platform で実行されるアプリケーションをホストします。できるだけ多くのアプリケーションを実行することが意図されています。

19.4.3.3. ブートストラップマシン

インストール時に、ブートストラップマシンは一時的にプロビジョニングされ、コントロールプレーンを初期化します。実稼働環境用のコントロールプレーンの準備ができた後に、ブートストラップマシンのプロビジョニングは解除されます。

ブートストラップマシンには以下が必要です。

  • RHOSP クォータからのインスタンス
  • RHOSP クォータからのポート
  • 少なくとも 16 GB のメモリーと 4 つの vCPU を備えたフレーバー
  • RHOSP クォータから少なくとも 100 GB のストレージ容量

19.4.4. Playbook 依存関係のダウンロード

user-provisioned infrastructure でのインストールプロセスを単純化する Ansible Playbook には、複数の Python モジュールが必要です。インストーラーを実行するマシンで、モジュールのリポジトリーを追加し、それらをダウンロードします。

注記

この手順では、Red Hat Enterprise Linux (RHEL) 8 を使用していることを前提としています。

前提条件

  • Python 3 がマシンにインストールされている。

手順

  1. コマンドラインで、リポジトリーを追加します。

    1. Red Hat Subscription Manager に登録します。

      $ sudo subscription-manager register # If not done already
    2. 最新のサブスクリプションデータをプルします。

      $ sudo subscription-manager attach --pool=$YOUR_POOLID # If not done already
    3. 現在のリポジトリーを無効にします。

      $ sudo subscription-manager repos --disable=* # If not done already
    4. 必要なリポジトリーを追加します。

      $ sudo subscription-manager repos \
        --enable=rhel-8-for-x86_64-baseos-rpms \
        --enable=openstack-16-tools-for-rhel-8-x86_64-rpms \
        --enable=ansible-2.9-for-rhel-8-x86_64-rpms \
        --enable=rhel-8-for-x86_64-appstream-rpms
  2. モジュールをインストールします。

    $ sudo yum install python3-openstackclient ansible python3-openstacksdk python3-netaddr ansible-collections-openstack
  3. python コマンドが python3 を参照していることを確認します。

    $ sudo alternatives --set python /usr/bin/python3

19.4.5. インストール Playbook のダウンロード

OpenShift Container Platform を独自の Red Hat OpenStack Platform (RHOSP) インフラストラクチャーにインストールするために使用できる Ansible Playbook をダウンロードします。

前提条件

  • curl コマンドラインツールがマシンで利用できる。

手順

  • Playbook を作業ディレクトリーにダウンロードするには、コマンドラインから以下のスクリプトを実行します。

    $ xargs -n 1 curl -O <<< '
            https://raw.githubusercontent.com/openshift/installer/release-4.16/upi/openstack/bootstrap.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.16/upi/openstack/common.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.16/upi/openstack/compute-nodes.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.16/upi/openstack/control-plane.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.16/upi/openstack/down-bootstrap.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.16/upi/openstack/down-compute-nodes.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.16/upi/openstack/down-control-plane.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.16/upi/openstack/down-network.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.16/upi/openstack/down-security-groups.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.16/upi/openstack/down-containers.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.16/upi/openstack/inventory.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.16/upi/openstack/network.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.16/upi/openstack/security-groups.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.16/upi/openstack/update-network-resources.yaml'

Playbook はマシンにダウンロードされます。

重要

インストールプロセス時に、Playbook を変更してデプロイメントを設定できます。

クラスターの有効期間中に、すべての Playbook を保持します。OpenShift Container Platform クラスターを RHOSP から削除するには Playbook が必要です。

重要

bootstrap.yamlcompute-nodes.yamlcontrol-plane.yamlnetwork.yaml、および security-groups.yaml ファイルに加えた編集内容は、down- の接頭辞が付けられた対応する Playbook に一致している必要があります。たとえば、bootstrap.yaml ファイルへの編集は、down-bootstrap.yaml ファイルにも反映される必要があります。両方のファイルを編集しない場合、サポートされるクラスターの削除プロセスは失敗します。

19.4.6. インストールプログラムの取得

OpenShift Container Platform をインストールする前に、インストールに使用しているホストにインストールファイルをダウンロードします。

前提条件

  • 500 MB のローカルディスク領域がある Linux または macOS を実行するコンピューターが必要です。

手順

  1. OpenShift Cluster Manager サイトの インフラストラクチャープロバイダー ページにアクセスします。Red Hat アカウントがある場合は、認証情報を使用してログインします。アカウントがない場合はこれを作成します。
  2. インフラストラクチャープロバイダーを選択します。
  3. インストールタイプのページに移動し、ホストオペレーティングシステムとアーキテクチャーに対応するインストールプログラムをダウンロードして、インストール設定ファイルを保存するディレクトリーにファイルを配置します。

    重要

    インストールプログラムは、クラスターのインストールに使用するコンピューターにいくつかのファイルを作成します。クラスターのインストール完了後は、インストールプログラムおよびインストールプログラムが作成するファイルを保持する必要があります。ファイルはいずれもクラスターを削除するために必要になります。

    重要

    インストールプログラムで作成されたファイルを削除しても、クラスターがインストール時に失敗した場合でもクラスターは削除されません。クラスターを削除するには、特定のクラウドプロバイダー用の OpenShift Container Platform のアンインストール手順を実行します。

  4. インストールプログラムを展開します。たとえば、Linux オペレーティングシステムを使用するコンピューターで以下のコマンドを実行します。

    $ tar -xvf openshift-install-linux.tar.gz
  5. Red Hat OpenShift Cluster Manager からインストールプルシークレット をダウンロードします。このプルシークレットを使用し、OpenShift Container Platform コンポーネントのコンテナーイメージを提供する Quay.io など、組み込まれた各種の認証局によって提供されるサービスで認証できます。

19.4.7. クラスターノードの SSH アクセス用のキーペアの生成

OpenShift Container Platform をインストールする際に、SSH パブリックキーをインストールプログラムに指定できます。キーは、Ignition 設定ファイルを介して Red Hat Enterprise Linux CoreOS (RHCOS) ノードに渡され、ノードへの SSH アクセスを認証するために使用されます。このキーは各ノードの core ユーザーの ~/.ssh/authorized_keys リストに追加され、パスワードなしの認証が可能になります。

キーがノードに渡されると、キーペアを使用して RHCOS ノードにユーザー core として SSH を実行できます。SSH 経由でノードにアクセスするには、秘密鍵のアイデンティティーをローカルユーザーの SSH で管理する必要があります。

インストールのデバッグまたは障害復旧を実行するためにクラスターノードに対して SSH を実行する場合は、インストールプロセスの間に SSH 公開鍵を指定する必要があります。./openshift-install gather コマンドでは、SSH 公開鍵がクラスターノードに配置されている必要もあります。

重要

障害復旧およびデバッグが必要な実稼働環境では、この手順を省略しないでください。

注記

AWS キーペア などのプラットフォームに固有の方法で設定したキーではなく、ローカルキーを使用する必要があります。

手順

  1. クラスターノードへの認証に使用するローカルマシンに既存の SSH キーペアがない場合は、これを作成します。たとえば、Linux オペレーティングシステムを使用するコンピューターで以下のコマンドを実行します。

    $ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 1
    1
    新しい SSH キーのパスとファイル名 (~/.ssh/id_ed25519 など) を指定します。既存のキーペアがある場合は、公開鍵が ~/.ssh ディレクトリーにあることを確認します。
    注記

    x86_64ppc64le、および s390x アーキテクチャーのみで FIPS 140-2/140-3 検証のために NIST に提出された RHEL 暗号化ライブラリーを使用する OpenShift Container Platform クラスターをインストールする予定がある場合は、ed25519 アルゴリズムを使用するキーを作成しないでください。代わりに、rsa アルゴリズムまたは ecdsa アルゴリズムを使用するキーを作成します。

  2. 公開 SSH キーを表示します。

    $ cat <path>/<file_name>.pub

    たとえば、次のコマンドを実行して ~/.ssh/id_ed25519.pub 公開鍵を表示します。

    $ cat ~/.ssh/id_ed25519.pub
  3. ローカルユーザーの SSH エージェントに SSH 秘密鍵 ID が追加されていない場合は、それを追加します。キーの SSH エージェント管理は、クラスターノードへのパスワードなしの SSH 認証、または ./openshift-install gather コマンドを使用する場合は必要になります。

    注記

    一部のディストリビューションでは、~/.ssh/id_rsa および ~/.ssh/id_dsa などのデフォルトの SSH 秘密鍵のアイデンティティーは自動的に管理されます。

    1. ssh-agent プロセスがローカルユーザーに対して実行されていない場合は、バックグラウンドタスクとして開始します。

      $ eval "$(ssh-agent -s)"

      出力例

      Agent pid 31874

      注記

      クラスターが FIPS モードにある場合は、FIPS 準拠のアルゴリズムのみを使用して SSH キーを生成します。鍵は RSA または ECDSA のいずれかである必要があります。

  4. SSH プライベートキーを ssh-agent に追加します。

    $ ssh-add <path>/<file_name> 1
    1
    ~/.ssh/id_ed25519 などの、SSH プライベートキーのパスおよびファイル名を指定します。

    出力例

    Identity added: /home/<you>/<path>/<file_name> (<computer_name>)

次のステップ

  • OpenShift Container Platform をインストールする際に、SSH パブリックキーをインストールプログラムに指定します。

19.4.8. Red Hat Enterprise Linux CoreOS (RHCOS) イメージの作成

OpenShift Container Platform インストールプログラムでは、Red Hat Enterprise Linux CoreOS (RHCOS) イメージが Red Hat OpenStack Platform (RHOSP) クラスターに存在する必要があります。最新の RHCOS イメージを取得した後、RHOSP CLI を使用してこれをアップロードします。

前提条件

  • RHOSP CLI がインストールされています。

手順

  1. Red Hat カスタマーポータルの 製品ダウンロードページ にログインします。
  2. Version で、Red Hat Enterprise Linux (RHEL) 8 用の OpenShift Container Platform 4.16 の最新リリースを選択します。

    重要

    RHCOS イメージは OpenShift Container Platform の各リリースごとに変更されない可能性があります。インストールする OpenShift Container Platform バージョンと等しいか、それ以下のバージョンの内で最も新しいバージョンのイメージをダウンロードする必要があります。利用可能な場合は、OpenShift Container Platform バージョンに一致するイメージのバージョンを使用します。

  3. Red Hat Enterprise Linux CoreOS (RHCOS) - OpenStack Image (QCOW) をダウンロードします。
  4. イメージを展開します。

    注記

    クラスターが使用する前に RHOSP イメージを圧縮解除する必要があります。ダウンロードしたファイルの名前に、.gz または .tgz などの圧縮拡張子が含まれていない場合があります。ファイルを圧縮するか、どのように圧縮するかを確認するには、コマンドラインで以下を入力します。

    $ file <name_of_downloaded_file>
  5. ダウンロードしたイメージから、RHOSP CLI を使用して rhcos という名前のイメージをクラスターに作成します。

    $ openstack image create --container-format=bare --disk-format=qcow2 --file rhcos-${RHCOS_VERSION}-openstack.qcow2 rhcos
    重要

    RHOSP 環境によっては、.raw または .qcow2 形式 のいずれかでイメージをアップロードできる場合があります。Ceph を使用する場合は、.raw 形式を使用する必要があります。

    警告

    インストールプログラムが同じ名前を持つ複数のイメージを見つける場合、それらのイメージのいずれかがランダムに選択されます。この動作を回避するには、RHOSP でリソースの一意の名前を作成します。

RHOSP にイメージをアップロードした後は、インストールプログラムでイメージを利用できます。

19.4.9. 外部ネットワークアクセスの確認

OpenShift Container Platform インストールプロセスでは、外部ネットワークへのアクセスが必要です。外部ネットワーク値をこれに指定する必要があります。指定しない場合には、デプロイメントは失敗します。このプロセスを実行する前に、外部ルータータイプのネットワークが Red Hat OpenStack Platform (RHOSP) に存在することを確認します。

手順

  1. RHOSP CLI を使用して、'External' ネットワークの名前と ID を確認します。

    $ openstack network list --long -c ID -c Name -c "Router Type"

    出力例

    +--------------------------------------+----------------+-------------+
    | ID                                   | Name           | Router Type |
    +--------------------------------------+----------------+-------------+
    | 148a8023-62a7-4672-b018-003462f8d7dc | public_network | External    |
    +--------------------------------------+----------------+-------------+

外部ルータータイプのあるネットワークがネットワークリストに表示されます。1 つ以上のネットワークが表示されない場合は、デフォルトの Floating IP ネットワークの作成 および デフォルトのプロバイダーネットワークの作成 を参照してください。

注記

Neutron トランクサービスプラグインが有効にされると、トランクポートがデフォルトで作成されます。詳細は、Neutron trunk port を参照してください。

19.4.10. 環境へのアクセスの有効化

デプロイ時に、OpenShift Container Platform マシンはすべて Red Hat OpenStack Platform (RHOSP) テナントネットワークに作成されます。したがって、ほとんどの RHOSP デプロイメントでは直接アクセスできません。

インストール時に Floating IP アドレス (FIP) を使用して OpenShift Container Platform API およびアプリケーションのアクセスを設定できます。FIP を設定せずにインストールを完了することもできますが、インストーラーは API またはアプリケーションを外部からアクセスする方法を設定しません。

19.4.10.1. floating IP アドレスを使用したアクセスの有効化

OpenShift Container Platform API、クラスターアプリケーション、およびブートストラッププロセスへの外部アクセス用に Floating IP (FIP) アドレスを作成します。

手順

  1. Red Hat OpenStack Platform (RHOSP) CLI を使用して、API FIP を作成します。

    $ openstack floating ip create --description "API <cluster_name>.<base_domain>" <external_network>
  2. Red Hat OpenStack Platform (RHOSP) CLI を使用して、apps (アプリ)、または Ingress、FIP を作成します。

    $ openstack floating ip create --description "Ingress <cluster_name>.<base_domain>" <external_network>
  3. Red Hat OpenStack Platform (RHOSP) CLI を使用して、ブートストラップ FIP を作成します。

    $ openstack floating ip create --description "bootstrap machine" <external_network>
  4. API および Ingress FIP の DNS サーバーに、これらのパターンに準拠するレコードを追加します。

    api.<cluster_name>.<base_domain>.  IN  A  <API_FIP>
    *.apps.<cluster_name>.<base_domain>. IN  A <apps_FIP>
    注記

    DNS サーバーを制御していない場合は、次のようなクラスタードメイン名を /etc/hosts ファイルに追加することで、クラスターにアクセスできます。

    • <api_floating_ip> api.<cluster_name>.<base_domain>
    • <application_floating_ip> grafana-openshift-monitoring.apps.<cluster_name>.<base_domain>
    • <application_floating_ip> prometheus-k8s-openshift-monitoring.apps.<cluster_name>.<base_domain>
    • <application_floating_ip> oauth-openshift.apps.<cluster_name>.<base_domain>
    • <application_floating_ip> console-openshift-console.apps.<cluster_name>.<base_domain>
    • application_floating_ip integrated-oauth-server-openshift-authentication.apps.<cluster_name>.<base_domain>

    /etc/hosts ファイル内のクラスタードメイン名により、クラスターの Web コンソールおよび監視インターフェイスへのローカルアクセスが許可されます。kubectl または oc を使用することもできます。<application_floating_ip> を指す追加のエントリーを使用して、ユーザーアプリケーションにアクセスできます。このアクションにより、API およびアプリケーションは他のユーザーがアクセスできない状態になり、この状態は実稼働デプロイメントには適していませんが、開発およびテスト目的のインストールが可能になります。

  5. FIP を以下の変数の値として inventory.yaml ファイルに追加します。

    • os_api_fip
    • os_bootstrap_fip
    • os_ingress_fip

これらの値を使用する場合には、inventory.yaml ファイルの os_external_network 変数の値として外部ネットワークを入力する必要もあります。

ヒント

Floating IP アドレスを割り当て、ファイアウォール設定を更新することで、OpenShift Container Platform リソースがクラスター外で利用できる状態にすることができます。

19.4.10.2. Floating IP アドレスなしでのインストールの完了

Floating IP アドレスを指定せずに OpenShift Container Platform を Red Hat OpenStack Platform (RHOSP) にインストールすることができます。

inventory.yaml ファイルで、以下の変数を定義しないでください。

  • os_api_fip
  • os_bootstrap_fip
  • os_ingress_fip

外部ネットワークを提供できない場合は、os_external_network を空白のままにすることもできます。os_external_network の値を指定しない場合はルーターが作成されず、追加のアクションがない場合は、インストーラーは Glance からのイメージの取得に失敗します。インストールプロセスで、ネットワークリソースを作成する際に、独自の外部接続を設定する必要があります。

Floating IP アドレスまたは名前解決がないために、クラスター API に到達できないシステムから wait-for コマンドでインストーラーを実行すると、インストールに失敗します。このような場合にインストールが失敗するのを防ぐために、プロキシーネットワークを使用するか、マシンと同じネットワークにあるシステムからインストーラーを実行できます。

注記

API および Ingress ポートの DNS レコードを作成して、名前解決を有効にできます。以下に例を示します。

api.<cluster_name>.<base_domain>.  IN  A  <api_port_IP>
*.apps.<cluster_name>.<base_domain>. IN  A <ingress_port_IP>

DNS サーバーを制御しない場合は、/etc/hosts ファイルにレコードを追加できます。このアクションにより、API は他者のアクセスできない状態になり、この状態は実稼働デプロイメントには適していませんが、開発およびテスト目的のインストールが可能になります。

19.4.11. インストールプログラムのパラメーターの定義

OpenShift Container Platform インストールプログラムは、clouds.yaml というファイルを使用します。このファイルは、プロジェクト名、ログイン情報、認可サービスの URL を含む Red Hat OpenStack Platform (RHOSP) 設定パラメーターを説明します。

手順

  1. clouds.yaml ファイルを作成します。

    • RHOSP ディストリビューションに Horizon Web UI が含まれる場合には、そこに clouds.yaml ファイルを生成します。

      重要

      パスワードを必ず auth フィールドに追加してください。シークレットは、clouds.yaml別のファイル に保持できます。

    • RHOSP ディストリビューションに Horizon Web UI が含まれない場合や Horizon を使用する必要がない場合には、このファイルを独自に作成します。clouds.yaml の詳細は、RHOSP ドキュメントの Config files を参照してください。

      clouds:
        shiftstack:
          auth:
            auth_url: http://10.10.14.42:5000/v3
            project_name: shiftstack
            username: <username>
            password: <password>
            user_domain_name: Default
            project_domain_name: Default
        dev-env:
          region_name: RegionOne
          auth:
            username: <username>
            password: <password>
            project_name: 'devonly'
            auth_url: 'https://10.10.14.22:5001/v2.0'
  2. RHOSP インストールでエンドポイント認証用に自己署名認証局 (CA) を使用する場合、以下を実行します。

    1. 認証局ファイルをマシンにコピーします。
    2. cacerts キーを clouds.yaml ファイルに追加します。この値は、CA 証明書への絶対的な root 以外によるアクセスが可能なパスである必要があります。

      clouds:
        shiftstack:
          ...
          cacert: "/etc/pki/ca-trust/source/anchors/ca.crt.pem"
      ヒント

      カスタム CA 証明書を使用してインストーラーを実行した後に、cloud-provider-config キーマップの ca-cert.pem キーの値を編集して証明書を更新できます。コマンドラインで、以下を実行します。

      $ oc edit configmap -n openshift-config cloud-provider-config
  3. clouds.yaml ファイルを以下の場所のいずれかに置きます。

    1. OS_CLIENT_CONFIG_FILE 環境変数の値
    2. 現行ディレクトリー
    3. Unix 固有のユーザー設定ディレクトリー (例: ~/.config/openstack/clouds.yaml)
    4. Unix 固有のサイト設定ディレクトリー (例: /etc/openstack/clouds.yaml)

      インストールプログラムはこの順序で clouds.yaml を検索します。

19.4.12. RHOSP でのネットワークリソースの作成

独自のインフラストラクチャーを使用する Red Hat OpenStack Platform (RHOSP) インストールの OpenShift Container Platform に必要なネットワークリソースを作成します。時間を節約するには、セキュリティーグループ、ネットワーク、サブネット、ルーター、およびポートを生成する指定された Ansible Playbook を実行します。

前提条件

  • 「Playbook 依存関係のダウンロード」でモジュールをダウンロードしている。
  • 「インストール Playbook のダウンロード」で Playbook をダウンロードしている。

手順

  1. デュアルスタッククラスターデプロイメントの場合は、inventory.yaml ファイルを編集し、os_subnet6 属性のコメントを解除します。
  2. コマンドラインで次のコマンドを実行して、ネットワークリソースを作成します。

    $ ansible-playbook -i inventory.yaml network.yaml
    注記

    inventory.yaml Playbook の API VIP フィールドと Ingress VIP フィールドは、ネットワークポートに割り当てられた IP アドレスで上書きされます。

    注記

    network.yaml Playbook によって作成されたリソースは、down-network.yaml Playbook によって削除されます。

19.4.13. インストール設定ファイルの作成

Red Hat OpenStack Platform (RHOSP) にインストールする OpenShift Container Platform クラスターをカスタマイズできます。

前提条件

  • OpenShift Container Platform インストールプログラムおよびクラスターのプルシークレットがある。

手順

  1. install-config.yaml ファイルを作成します。

    1. インストールプログラムが含まれるディレクトリーに切り替え、以下のコマンドを実行します。

      $ ./openshift-install create install-config --dir <installation_directory> 1
      1
      <installation_directory> の場合、インストールプログラムが作成するファイルを保存するためにディレクトリー名を指定します。

      ディレクトリーを指定する場合:

      • ディレクトリーに execute 権限があることを確認します。この権限は、インストールディレクトリーで Terraform バイナリーを実行するために必要です。
      • 空のディレクトリーを使用します。ブートストラップ X.509 証明書などの一部のインストールアセットは有効期限が短いため、インストールディレクトリーを再利用しないでください。別のクラスターインストールの個別のファイルを再利用する必要がある場合は、それらをディレクトリーにコピーすることができます。ただし、インストールアセットのファイル名はリリース間で変更される可能性があります。インストールファイルを以前のバージョンの OpenShift Container Platform からコピーする場合は注意してコピーを行ってください。
    2. プロンプト時に、クラウドの設定の詳細情報を指定します。

      1. オプション: クラスターマシンにアクセスするために使用する SSH キーを選択します。

        注記

        インストールのデバッグまたは障害復旧を実行する必要のある実稼働用の OpenShift Container Platform クラスターでは、ssh-agent プロセスが使用する SSH キーを指定します。

      2. ターゲットに設定するプラットフォームとして openstack を選択します。
      3. クラスターのインストールに使用する Red Hat OpenStack Platform (RHOSP) の外部ネットワーク名を指定します。
      4. OpenShift API への外部アクセスに使用する floating IP アドレスを指定します。
      5. コントロールプレーンノードに使用する少なくとも 16 GB の RAM とコンピュートノードに使用する 8 GB の RAM を持つ RHOSP フレーバーを指定します。
      6. クラスターをデプロイするベースドメインを選択します。すべての DNS レコードはこのベースのサブドメインとなり、クラスター名も含まれます。
      7. クラスターの名前を入力します。名前は 14 文字以下でなければなりません。
  2. install-config.yaml ファイルを変更します。利用可能なパラメーターの詳細は、「インストール設定パラメーター」のセクションを参照してください。
  3. install-config.yaml ファイルをバックアップし、複数のクラスターをインストールするのに使用できるようにします。

    重要

    install-config.yaml ファイルはインストールプロセス時に使用されます。このファイルを再利用する必要がある場合は、この段階でこれをバックアップしてください。

これで、指定したディレクトリーに install-config.yaml ファイルが作成されます。

19.4.13.1. RHOSP デプロイメントでのカスタムサブネット

オプションで、選択する Red Hat OpenStack Platform (RHOSP) サブネットにクラスターをデプロイすることができます。サブネットの GUID は、install-config.yaml ファイルの platform.openstack.machinesSubnet の値として渡されます。

このサブネットはクラスターのプライマリーサブネットとして使用されます。デフォルトで、ノードおよびポートはこの上に作成されます。platform.openstack.machinesSubnet プロパティーの値をサブネットの UUID に設定すると、異なる RHOSP サブネットにノードおよびポートを作成することができます。

カスタムサブネットを使用して OpenShift Container Platform インストーラーを実行する前に、設定が以下の要件を満たしていることを確認してください。

  • platform.openstack.machinesSubnet で使用されるサブネットで DHCP が有効にされている。
  • platform.openstack.machinesSubnet の CIDR は networking.machineNetwork の CIDR に一致する。
  • インストールプログラムのユーザーには、固定 IP アドレスを持つポートなど、このネットワークでポートを作成するパーミッションがある。

カスタムサブネットを使用するクラスターには、以下の制限があります。

  • Floating IP アドレスを使用するクラスターをインストールする予定の場合には、platform.openstack.machinesSubnet サブネットを externalNetwork ネットワークに接続されているルーターに接続する必要があります。
  • platform.openstack.machinesSubnet の値が install-config.yaml ファイルに設定されている場合、インストールプログラムは RHOSP マシンのプライベートネットワークまたはサブネットを作成しません。
  • platform.openstack.externalDNS プロパティーは、カスタムサブネットと同時に使用することはできません。カスタムサブネットを使用するクラスターに DNS を追加するには、RHOSP ネットワークで DNS を設定します。
注記

デフォルトでは、API VIP は x.x.x.5 を取得し、Ingress VIP はネットワークの CIDR ブロックから x.x.x.7 を取得します。これらのデフォルト値を上書きするには、DHCP 割り当てプール外の platform.openstack.apiVIPs および platform.openstack.ingressVIPs の値を設定します。

重要

ネットワークの CIDR 範囲は、クラスターのインストール後に調整できません。Red Hat は、namespace ごとに作成される Pod の数を慎重に検討する必要があるため、クラスターのインストール時に範囲を決定するための直接的なガイダンスを提供していません。

19.4.13.2. RHOSP のカスタマイズされた install-config.yaml ファイルのサンプル

次の install-config.yaml ファイルの例は、すべての可能な Red Hat OpenStack Platform (RHOSP) カスタマイズオプションを示しています。

重要

このサンプルファイルは参照用にのみ提供されます。インストールプログラムを使用して install-config.yaml ファイルを取得する必要があります。

例19.4 シングルスタックの install-config.yaml ファイルの例

apiVersion: v1
baseDomain: example.com
controlPlane:
  name: master
  platform: {}
  replicas: 3
compute:
- name: worker
  platform:
    openstack:
      type: ml.large
  replicas: 3
metadata:
  name: example
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  machineNetwork:
  - cidr: 10.0.0.0/16
  serviceNetwork:
  - 172.30.0.0/16
  networkType: OVNKubernetes
platform:
  openstack:
    cloud: mycloud
    externalNetwork: external
    computeFlavor: m1.xlarge
    apiFloatingIP: 128.0.0.1
fips: false
pullSecret: '{"auths": ...}'
sshKey: ssh-ed25519 AAAA...

例19.5 デュアルスタックの install-config.yaml ファイルの例

apiVersion: v1
baseDomain: example.com
controlPlane:
  name: master
  platform: {}
  replicas: 3
compute:
- name: worker
  platform:
    openstack:
      type: ml.large
  replicas: 3
metadata:
  name: example
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  - cidr: fd01::/48
    hostPrefix: 64
  machineNetwork:
  - cidr: 192.168.25.0/24
  - cidr: fd2e:6f44:5dd8:c956::/64
  serviceNetwork:
  - 172.30.0.0/16
  - fd02::/112
  networkType: OVNKubernetes
platform:
  openstack:
    cloud: mycloud
    externalNetwork: external
    computeFlavor: m1.xlarge
    apiVIPs:
    - 192.168.25.10
    - fd2e:6f44:5dd8:c956:f816:3eff:fec3:5955
    ingressVIPs:
    - 192.168.25.132
    - fd2e:6f44:5dd8:c956:f816:3eff:fe40:aecb
    controlPlanePort:
      fixedIPs:
      - subnet:
          name: openshift-dual4
      - subnet:
          name: openshift-dual6
      network:
        name: openshift-dual
fips: false
pullSecret: '{"auths": ...}'
sshKey: ssh-ed25519 AAAA...

19.4.13.3. マシンのカスタムサブネットの設定

インストールプログラムがデフォルトで使用する IP 範囲は、OpenShift Container Platform のインストール時に作成する Neutron サブネットと一致しない可能性があります。必要な場合は、インストール設定ファイルを編集して、新規マシンの CIDR 値を更新します。

前提条件

  • OpenShift Container Platform インストールプログラムで生成された install-config.yaml ファイルがあります。
  • Python 3 がインストールされている。

手順

  1. コマンドラインで、install-config.yaml ファイルと inventory.yaml ファイルが含まれるディレクトリーを参照します。
  2. そのディレクトリーからスクリプトを実行して install-config.yaml ファイルを編集するか、手動でファイルを更新します。

    • スクリプトを使用して値を設定するには、次のコマンドを実行します。

      $ python -c 'import yaml
      path = "install-config.yaml"
      data = yaml.safe_load(open(path))
      inventory = yaml.safe_load(open("inventory.yaml"))["all"]["hosts"]["localhost"]
      machine_net = [{"cidr": inventory["os_subnet_range"]}]
      api_vips = [inventory["os_apiVIP"]]
      ingress_vips = [inventory["os_ingressVIP"]]
      ctrl_plane_port = {"network": {"name": inventory["os_network"]}, "fixedIPs": [{"subnet": {"name": inventory["os_subnet"]}}]}
      if inventory.get("os_subnet6"): 1
          machine_net.append({"cidr": inventory["os_subnet6_range"]})
          api_vips.append(inventory["os_apiVIP6"])
          ingress_vips.append(inventory["os_ingressVIP6"])
          data["networking"]["networkType"] = "OVNKubernetes"
          data["networking"]["clusterNetwork"].append({"cidr": inventory["cluster_network6_cidr"], "hostPrefix": inventory["cluster_network6_prefix"]})
          data["networking"]["serviceNetwork"].append(inventory["service_subnet6_range"])
          ctrl_plane_port["fixedIPs"].append({"subnet": {"name": inventory["os_subnet6"]}})
      data["networking"]["machineNetwork"] = machine_net
      data["platform"]["openstack"]["apiVIPs"] = api_vips
      data["platform"]["openstack"]["ingressVIPs"] = ingress_vips
      data["platform"]["openstack"]["controlPlanePort"] = ctrl_plane_port
      del data["platform"]["openstack"]["externalDNS"]
      open(path, "w").write(yaml.dump(data, default_flow_style=False))'
      1
      デュアルスタック (IPv4/IPv6) 環境に適用されます。

19.4.13.4. コンピュートマシンプールを空にする

独自のインフラストラクチャーを使用するインストールを実行するには、インストール設定ファイルのコンピュートマシンの数をゼロに設定します。その後、これらのマシンを手動で作成します。

前提条件

  • OpenShift Container Platform インストールプログラムで生成された install-config.yaml ファイルがあります。

手順

  1. コマンドラインで、install-config.yaml が含まれるディレクトリーを参照します。
  2. そのディレクトリーからスクリプトを実行して install-config.yaml ファイルを編集するか、手動でファイルを更新します。

    • スクリプトを使用して値を設定するには、以下を実行します。

      $ python -c '
      import yaml;
      path = "install-config.yaml";
      data = yaml.safe_load(open(path));
      data["compute"][0]["replicas"] = 0;
      open(path, "w").write(yaml.dump(data, default_flow_style=False))'
    • 値を手動で設定するには、ファイルを開き、compute.<first entry>.replicas の値を 0 に設定します。

19.4.13.5. RHOSP プロバイダーネットワーク上のクラスターデプロイメント

プロバイダーネットワーク上のプライマリーネットワークインターフェイスを使用して、OpenShift Container Platform クラスターを Red Hat OpenStack Platform (RHOSP) にデプロイできます。プロバイダーネットワークは一般的に、インターネットへの到達に使用可能なパブリックネットワークに、プロジェクトが直接アクセスできるように使用します。ネットワーク作成プロセスの一環として、プロバイダーネットワークをプロジェクト間で共有することもできます。

RHOSP プロバイダーネットワークは、データセンター内の既存の物理ネットワークに直接マップします。RHOSP 管理者はこれらを作成する必要があります。

以下の例では、OpenShift Container Platform ワークロードはプロバイダーネットワークを使用してデータセンターに接続されます。

OpenStack 上の 4 つの OpenShift ワークロードを示す図。各ワークロードは、プロバイダーネットワークを使用して、NIC によって外部のデータセンターに接続されます。

プロバイダーネットワークにインストールされている OpenShift Container Platform クラスターは、テナントネットワークまたは Floating IP アドレスを必要としません。インストーラーは、インストール中にこれらのリソースを作成しません。

プロバイダーネットワークタイプの例には、フラット (タグなし) および VLAN (802.1Q タグ付き) が含まれます。

注記

クラスターは、ネットワークタイプが許可する限り多くのプロバイダーネットワーク接続をサポートできます。たとえば、VLAN ネットワークは、通常最大 4096 の接続をサポートします。

プロバイダーネットワークおよびテナントネットワークの詳細は、RHOSP のドキュメント を参照してください。

19.4.13.5.1. クラスターのインストールにおける RHOSP プロバイダーネットワーク要件

OpenShift Container Platform クラスターをインストールする前に、Red Hat OpenStack Platform (RHOSP) のデプロイメントおよびプロバイダーネットワークは、さまざまな条件を満たす必要があります。

  • RHOSP ネットワークサービス (Neutron) が有効化され、RHOSP ネットワーク API 経由でアクセス可能であること。
  • RHOSP ネットワークサービスでは、ポートセキュリティーと許可するアドレスペアの機能拡張が有効化 されていること。
  • プロバイダーネットワークは他のテナントと共有できます。

    ヒント

    --share フラグを指定して openstack network create コマンドを使用して、共有できるネットワークを作成します。

  • クラスターのインストールに使用する RHOSP プロジェクトは、プロバイダーネットワークと適切なサブネットを所有する必要があります。

    ヒント
    "openshift" という名前のプロジェクトのネットワークを作成するには、以下のコマンドを入力します。
    $ openstack network create --project openshift
    "openshift" という名前のプロジェクトのサブネットを作成するには、以下のコマンドを入力します。
    $ openstack subnet create --project openshift

    RHOSP でのネットワークの作成に関する詳細は、プロバイダーネットワークに関するドキュメント を参照してください。

    クラスターが admin ユーザーによって所有されている場合、そのユーザーとしてインストーラーを実行してネットワーク上でポートを作成する必要があります。

    重要

    プロバイダーネットワークは、クラスターの作成に使用される RHOSP プロジェクトによって所有されている必要があります。所有されていない場合は、RHOSP Compute サービス (Nova) はそのネットワークからポートを要求できません。

  • プロバイダーネットワークが、デフォルトで 169.254.169.254 である RHOSP メタデータサービスの IP アドレスに到達できることを確認します。

    RHOSP SDN とネットワークサービス設定によっては、サブネットを作成する際に、ルートを提供しなければならない場合があります。以下に例を示します。

    $ openstack subnet create --dhcp --host-route destination=169.254.169.254/32,gateway=192.0.2.2 ...
  • オプション: ネットワークのセキュリティーを保護するには、単一のプロジェクトへのネットワークアクセスを制限する ロールベースのアクセス制御 (RBAC) ルールを作成します。
19.4.13.5.2. プロバイダーネットワークにプライマリーインターフェイスを持つクラスターのデプロイ

Red Hat OpenStack Platform (RHOSP) プロバイダーネットワーク上にプライマリーネットワークインターフェイスを持つ OpenShift Container Platform クラスターをデプロイすることができます。

前提条件

  • 「クラスターのインストールにおける RHOSP プロバイダーネットワーク要件」に記載されているとおりに、お使いの Red Hat OpenStack Platform (RHOSP) のデプロイメントが設定されています。

手順

  1. テキストエディターで install-config.yaml ファイルを開きます。
  2. platform.openstack.apiVIPs プロパティーの値を API VIP の IP アドレスに設定します。
  3. platform.openstack.ingressVIPs プロパティーの値を Ingress VIP の IP アドレスに設定します。
  4. platform.openstack.machinesSubnet プロパティーの値をプロバイダーネットワークサブネットの UUID に設定します。
  5. networking.machineNetwork.cidr プロパティーの値をプロバイダーネットワークサブネットの CIDR ブロックに設定します。
重要

platform.openstack.apiVIPs プロパティーおよび platform.openstack.ingressVIPs プロパティーはいずれも、networking.machineNetwork.cidr ブロックから割り当てられていない IP アドレスである必要があります。

RHOSP プロバイダーネットワークに依存するクラスターのインストール設定ファイルのセクション

        ...
        platform:
          openstack:
            apiVIPs: 1
              - 192.0.2.13
            ingressVIPs: 2
              - 192.0.2.23
            machinesSubnet: fa806b2f-ac49-4bce-b9db-124bc64209bf
            # ...
        networking:
          machineNetwork:
          - cidr: 192.0.2.0/24

1 2
OpenShift Container Platform 4.12 以降では、apiVIP および ingressVIP 設定は非推奨です。代わりに、リスト形式を使用して、apiVIPs および ingressVIPs 設定に値を入力します。
警告

プライマリーネットワークインターフェイスにプロバイダーネットワークを使用している間は、platform.openstack.externalNetwork パラメーターまたは platform.openstack.externalDNS パラメーターを設定することはできません。

クラスターをデプロイする際に、インストーラーは install-config.yaml ファイルを使用してプロバイダーネットワークにクラスターをデプロイします。

ヒント

プロバイダーネットワークを含むネットワークを platform.openstack.additionalNetworkIDs リストに追加できます。

クラスターのデプロイ後に、Pod を追加のネットワークに接続することができます。詳細は、複数ネットワークについて を参照してください。

19.4.14. Kubernetes マニフェストおよび Ignition 設定ファイルの作成

一部のクラスター定義ファイルを変更し、クラスターマシンを手動で起動する必要があるため、クラスターがマシンを設定するために必要な Kubernetes マニフェストと Ignition 設定ファイルを生成する必要があります。

インストール設定ファイルは Kubernetes マニフェストに変換されます。マニフェストは Ignition 設定ファイルにラップされます。これはクラスターマシンを設定するために後で使用されます。

重要
  • OpenShift Container Platform のインストールプログラムが生成する Ignition 設定ファイルには、24 時間が経過すると期限切れになり、その後に更新される証明書が含まれます。証明書を更新する前にクラスターが停止し、24 時間経過した後にクラスターを再起動すると、クラスターは期限切れの証明書を自動的に復元します。例外として、kubelet 証明書を回復するために保留状態の node-bootstrapper 証明書署名要求 (CSR) を手動で承認する必要があります。詳細は、コントロールプレーン証明書の期限切れの状態からのリカバリー に関するドキュメントを参照してください。
  • 24 時間証明書はクラスターのインストール後 16 時間から 22 時間にローテーションするため、Ignition 設定ファイルは、生成後 12 時間以内に使用することを推奨します。12 時間以内に Ignition 設定ファイルを使用することにより、インストール中に証明書の更新が実行された場合のインストールの失敗を回避できます。

前提条件

  • OpenShift Container Platform インストールプログラムを取得していること。
  • install-config.yaml インストール設定ファイルを作成していること。

手順

  1. OpenShift Container Platform のインストールプログラムが含まれるディレクトリーに切り替え、クラスターの Kubernetes マニフェストを生成します。

    $ ./openshift-install create manifests --dir <installation_directory> 1
    1
    <installation_directory> については、作成した install-config.yaml ファイルが含まれるインストールディレクトリーを指定します。
  2. コントロールプレーンマシン、コンピュートマシンセット、およびコントロールプレーンマシンセットを定義する Kubernetes マニフェストファイルを削除します。

    $ rm -f openshift/99_openshift-cluster-api_master-machines-*.yaml openshift/99_openshift-cluster-api_worker-machineset-*.yaml openshift/99_openshift-machine-api_master-control-plane-machine-set.yaml

    これらのリソースを独自に作成および管理するため、それらを初期化する必要はありません。

    • コンピュートマシンセットファイルを保存して、マシン API を使用してコンピュートマシンを作成することができますが、環境に合わせてそれらへの参照を更新する必要があります。
  3. <installation_directory>/manifests/cluster-scheduler-02-config.yml Kubernetes マニフェストファイルの mastersSchedulable パラメーターが false に設定されていることを確認します。この設定により、Pod がコントロールプレーンマシンにスケジュールされなくなります。

    1. <installation_directory>/manifests/cluster-scheduler-02-config.yml ファイルを開きます。
    2. mastersSchedulable パラメーターを見つけ、これが false に設定されていることを確認します。
    3. ファイルを保存し、終了します。
  4. Ignition 設定ファイルを作成するには、インストールプログラムが含まれるディレクトリーから以下のコマンドを実行します。

    $ ./openshift-install create ignition-configs --dir <installation_directory> 1
    1
    <installation_directory> については、同じインストールディレクトリーを指定します。

    Ignition 設定ファイルは、インストールディレクトリー内のブートストラップ、コントロールプレーン、およびコンピュートノード用に作成されます。kubeadmin-password および kubeconfig ファイルが ./<installation_directory>/auth ディレクトリーに作成されます。

    .
    ├── auth
    │   ├── kubeadmin-password
    │   └── kubeconfig
    ├── bootstrap.ign
    ├── master.ign
    ├── metadata.json
    └── worker.ign
  5. メタデータファイルの infraID キーを環境変数としてエクスポートします。

    $ export INFRA_ID=$(jq -r .infraID metadata.json)
ヒント

metadata.json から infraID キーを抽出し、作成するすべての RHOSP リソースの接頭辞として使用します。これを実行することで、同じプロジェクトで複数のデプロイメントを実行する際に名前の競合が発生しないようにします。

19.4.15. ブートストラップ Ignition ファイルの準備

OpenShift Container Platform インストールプロセスは、ブートストラップ Ignition 設定ファイルから作成されるブートストラップマシンに依存します。

ファイルを編集し、アップロードします。次に、Red Hat OpenStack Platform (RHOSP) がプライマリーファイルをダウンロードする際に使用するセカンダリーブートストラップ Ignition 設定ファイルを作成します。

前提条件

  • インストーラープログラムが生成するブートストラップ Ignition ファイル bootstrap.ign があります。
  • インストーラーのメタデータファイルのインフラストラクチャー ID は環境変数 ($INFRA_ID) として設定されます。

    • 変数が設定されていない場合は、Kubernetes マニフェストおよび Ignition 設定ファイルの作成 を参照してください。
  • HTTP(S) でアクセス可能な方法でブートストラップ Ignition ファイルを保存できます。

    • 記載された手順では RHOSP イメージサービス (Glance) を使用しますが、RHOSP ストレージサービス (Swift)、Amazon S3、内部 HTTP サーバー、またはアドホックの Nova サーバーを使用することもできます。

手順

  1. 以下の Python スクリプトを実行します。スクリプトはブートストラップ Ignition ファイルを変更して、ホスト名および利用可能な場合は、実行時の CA 証明書ファイルを設定します。

    import base64
    import json
    import os
    
    with open('bootstrap.ign', 'r') as f:
        ignition = json.load(f)
    
    files = ignition['storage'].get('files', [])
    
    infra_id = os.environ.get('INFRA_ID', 'openshift').encode()
    hostname_b64 = base64.standard_b64encode(infra_id + b'-bootstrap\n').decode().strip()
    files.append(
    {
        'path': '/etc/hostname',
        'mode': 420,
        'contents': {
            'source': 'data:text/plain;charset=utf-8;base64,' + hostname_b64
        }
    })
    
    ca_cert_path = os.environ.get('OS_CACERT', '')
    if ca_cert_path:
        with open(ca_cert_path, 'r') as f:
            ca_cert = f.read().encode()
            ca_cert_b64 = base64.standard_b64encode(ca_cert).decode().strip()
    
        files.append(
        {
            'path': '/opt/openshift/tls/cloud-ca-cert.pem',
            'mode': 420,
            'contents': {
                'source': 'data:text/plain;charset=utf-8;base64,' + ca_cert_b64
            }
        })
    
    ignition['storage']['files'] = files;
    
    with open('bootstrap.ign', 'w') as f:
        json.dump(ignition, f)
  2. RHOSP CLI を使用して、ブートストラップ Ignition ファイルを使用するイメージを作成します。

    $ openstack image create --disk-format=raw --container-format=bare --file bootstrap.ign <image_name>
  3. イメージの詳細を取得します。

    $ openstack image show <image_name>

    file 値をメモします。これは v2/images/<image_ID>/file パターンをベースとしています。

    注記

    作成したイメージがアクティブであることを確認します。

  4. イメージサービスのパブリックアドレスを取得します。

    $ openstack catalog show image
  5. パブリックアドレスとイメージ file 値を組み合わせ、結果を保存場所として保存します。この場所は、<image_service_public_URL>/v2/images/<image_ID>/file パターンをベースとしています。
  6. 認証トークンを生成し、トークン ID を保存します。

    $ openstack token issue -c id -f value
  7. $INFRA_ID-bootstrap-ignition.json というファイルに以下のコンテンツを挿入し、独自の値に一致するようにプレースホルダーを編集します。

    {
      "ignition": {
        "config": {
          "merge": [{
            "source": "<storage_url>", 1
            "httpHeaders": [{
              "name": "X-Auth-Token", 2
              "value": "<token_ID>" 3
            }]
          }]
        },
        "security": {
          "tls": {
            "certificateAuthorities": [{
              "source": "data:text/plain;charset=utf-8;base64,<base64_encoded_certificate>" 4
            }]
          }
        },
        "version": "3.2.0"
      }
    }
    1
    ignition.config.append.source の値をブートストラップ Ignition ファイルのストレージ URL に置き換えます。
    2
    httpHeadersname"X-Auth-Token" に設定します。
    3
    httpHeadersvalue をトークンの ID に設定します。
    4
    ブートストラップ Ignition ファイルサーバーが自己署名証明書を使用する場合は、base64 でエンコードされた証明書を含めます。
  8. セカンダリー Ignition 設定ファイルを保存します。

ブートストラップ Ignition データはインストール時に RHOSP に渡されます。

警告

ブートストラップ Ignition ファイルには、clouds.yaml 認証情報などの機密情報が含まれます。これを安全な場所に保存し、インストールプロセスの完了後に削除します。

19.4.16. RHOSP でのコントロールプレーンの Ignition 設定ファイルの作成

独自のインフラストラクチャーを使用して OpenShift Container Platform を Red Hat OpenStack Platform (RHOSP) にインストールするには、コントロールプレーンの Ignition 設定ファイルが必要です。複数の設定ファイルを作成する必要があります。

注記

ブートストラップ Ignition 設定と同様に、各コントロールプレーンマシンのホスト名を明示的に定義する必要があります。

前提条件

  • インストールプログラムのメタデータファイルのインフラストラクチャー ID は環境変数 ($INFRA_ID) として設定されます。

    • 変数が設定されていない場合は、「Kubernetes マニフェストおよび Ignition 設定ファイルの作成」を参照してください。

手順

  • コマンドラインで、以下の Python スクリプトを実行します。

    $ for index in $(seq 0 2); do
        MASTER_HOSTNAME="$INFRA_ID-master-$index\n"
        python -c "import base64, json, sys;
    ignition = json.load(sys.stdin);
    storage = ignition.get('storage', {});
    files = storage.get('files', []);
    files.append({'path': '/etc/hostname', 'mode': 420, 'contents': {'source': 'data:text/plain;charset=utf-8;base64,' + base64.standard_b64encode(b'$MASTER_HOSTNAME').decode().strip(), 'verification': {}}, 'filesystem': 'root'});
    storage['files'] = files;
    ignition['storage'] = storage
    json.dump(ignition, sys.stdout)" <master.ign >"$INFRA_ID-master-$index-ignition.json"
    done

    以下の 3 つのコントロールプレーン Ignition ファイルが作成されます。<INFRA_ID>-master-0-ignition.json<INFRA_ID>-master-1-ignition.json、および <INFRA_ID>-master-2-ignition.json

19.4.17. RHOSP でのネットワークリソースの更新

独自のインフラストラクチャーを使用する Red Hat OpenStack Platform (RHOSP) インストールの OpenShift Container Platform に必要なネットワークリソースを更新します。

前提条件

  • Python 3 がマシンにインストールされている。
  • 「Playbook 依存関係のダウンロード」でモジュールをダウンロードしている。
  • 「インストール Playbook のダウンロード」で Playbook をダウンロードしている。

手順

  1. オプション: 外部ネットワークの値を inventory.yaml Playbook に追加します。

    inventory.yaml Ansible Playbook の外部ネットワーク値の例

    ...
          # The public network providing connectivity to the cluster. If not
          # provided, the cluster external connectivity must be provided in another
          # way.
    
          # Required for os_api_fip, os_ingress_fip, os_bootstrap_fip.
          os_external_network: 'external'
    ...

    重要

    inventory.yaml ファイルの os_external_network の値を指定しなかった場合は、仮想マシンが Glance および外部接続にアクセスできるようにする必要があります。

  2. オプション: 外部ネットワークおよび Floating IP (FIP) アドレスの値を inventory.yaml Playbook に追加します。

    inventory.yaml Ansible Playbook の FIP 値の例

    ...
          # OpenShift API floating IP address. If this value is non-empty, the
          # corresponding floating IP will be attached to the Control Plane to
          # serve the OpenShift API.
          os_api_fip: '203.0.113.23'
    
          # OpenShift Ingress floating IP address. If this value is non-empty, the
          # corresponding floating IP will be attached to the worker nodes to serve
          # the applications.
          os_ingress_fip: '203.0.113.19'
    
          # If this value is non-empty, the corresponding floating IP will be
          # attached to the bootstrap machine. This is needed for collecting logs
          # in case of install failure.
          os_bootstrap_fip: '203.0.113.20'

    重要

    os_api_fip および os_ingress_fip の値を定義しない場合、インストール後のネットワーク設定を実行する必要があります。

    os_bootstrap_fip の値を定義しなかった場合、インストールプログラムが失敗したインストールからデバッグ情報をダウンロードできません。

    詳細は、「環境へのアクセスの有効化」を参照してください。

  3. コマンドラインで、security-groups.yaml Playbook を実行してセキュリティーグループを作成します。

    $ ansible-playbook -i inventory.yaml security-groups.yaml
  4. コマンドラインで、update-network-resources.yaml Playbook を実行してネットワークリソースを更新します。

    $ ansible-playbook -i inventory.yaml update-network-resources.yaml 1
    1
    この Playbook は、ネットワーク、サブネット、ポート、ルーターにタグを追加します。また、Floating IP アドレスを API ポートと Ingress ポートに接続し、それらのポートのセキュリティーグループを設定します。
  5. オプション: Nova サーバーが使用するデフォルトのリゾルバーを制御する必要がある場合は、RHOSP CLI コマンドを実行します。

    $ openstack subnet set --dns-nameserver <server_1> --dns-nameserver <server_2> "$INFRA_ID-nodes"
  6. オプション: 作成した inventory.yaml ファイルを使用して、インストールをカスタマイズできます。たとえば、ベアメタルマシンを使用するクラスターをデプロイすることができます。

19.4.17.1. ベアメタルマシンを使用したクラスターのデプロイ

クラスターがベアメタルマシンを使用する必要がある場合は、inventory.yaml ファイルを変更します。クラスターには、ベアメタル上でコントロールプレーンとコンピュートマシンの両方を実行させることも、コンピュートマシンのみを実行させることもできます。

注記

install-config.yaml ファイルで、ベアメタルワーカーに使用する RHOSP ネットワークが Floating IP アドレスをサポートするかどうかが反映されていることを確認します。

前提条件

  • RHOSP の ベアメタルサービス (Ironic) は有効にされており、RHOSP Compute API でアクセスできる。
  • ベアメタルは RHOSP フレーバー として利用可能である。
  • クラスターが 16.1.6 以降、16.2.4 未満の RHOSP バージョンで実行している場合は、メタデータサービスが OpenShift Container Platform ノード上のサービスで使用できなくなる 既知の問題 により、ベアメタルワーカーは機能しません。
  • RHOSP ネットワークは、仮想マシンとベアメタルサーバー接続の両方をサポートする。
  • マシンを既存のネットワークにデプロイする必要がある場合、RHOSP サブネットがプロビジョニングされる。
  • マシンを installer-provisioned ネットワークに場合、RHOSP ベアメタルサービス (Ironic) はテナントネットワークで実行される Preboot eXecution Environment (PXE) ブートマシンをリッスンし、これと対話できます。
  • inventory.yaml ファイルを OpenShift Container Platform インストールプロセスの一部として作成している。

手順

  1. inventory.yaml ファイルで、マシンのフレーバーを編集します。

    1. ベアメタルコントロールプレーンマシンを使用する場合は、os_flavor_master の値をベアメタルフレーバーに変更します。
    2. os_flavor_worker の値をベアメタルフレーバーに変更します。

      ベアメタルの inventory.yaml のサンプルファイル

      all:
        hosts:
          localhost:
            ansible_connection: local
            ansible_python_interpreter: "{{ansible_playbook_python}}"
      
            # User-provided values
            os_subnet_range: '10.0.0.0/16'
            os_flavor_master: 'my-bare-metal-flavor' 1
            os_flavor_worker: 'my-bare-metal-flavor' 2
            os_image_rhcos: 'rhcos'
            os_external_network: 'external'
      ...

      1
      ベアメタルのコントロールプレーンマシンを使用する必要がある場合は、この値をベアメタルのフレーバーに変更します。
      2
      この値を、コンピュートマシンに使用するベアメタルのフレーバーに変更します。

更新された inventory.yaml ファイルを使用してインストールプロセスを完了します。デプロイメント時に作成されるマシンは、ファイルに追加したフレーバーを使用します。

注記

インストーラーは、ベアメタルマシンの起動中にタイムアウトする可能性があります。

インストーラーがタイムアウトした場合は、インストーラーの wait-for コマンドを使用してデプロイメントを再起動してからデプロイメントを完了します。以下に例を示します。

$ ./openshift-install wait-for install-complete --log-level debug

19.4.18. RHOSP でのブートストラップマシンの作成

ブートストラップマシンを作成し、これに Red Hat OpenStack Platform (RHOSP) で実行するために必要なネットワークアクセスを付与します。Red Hat は、このプロセスを単純化するために実行する Ansible Playbook を提供しています。

前提条件

  • 「Playbook 依存関係のダウンロード」でモジュールをダウンロードしている。
  • 「インストール Playbook のダウンロード」で Playbook をダウンロードしている。
  • inventory.yamlcommon.yaml、および bootstrap.yaml Ansible Playbook は共通ディレクトリーにある。
  • インストールプログラムが作成した metadata.json ファイルが Ansible Playbook と同じディレクトリーにあります。

手順

  1. コマンドラインで、作業ディレクトリーを Playbook の場所に切り替えます。
  2. コマンドラインで、bootstrap.yaml Playbook を実行します。

    $ ansible-playbook -i inventory.yaml bootstrap.yaml
  3. ブートストラップサーバーがアクティブになった後に、ログを表示し、Ignition ファイルが受信されたことを確認します。

    $ openstack console log show "$INFRA_ID-bootstrap"

19.4.19. RHOSP でのコントロールプレーンの作成

生成した Ignition 設定ファイルを使用して 3 つのコントロールプレーンマシンを作成します。Red Hat は、このプロセスを単純化するために実行する Ansible Playbook を提供しています。

前提条件

  • 「Playbook 依存関係のダウンロード」でモジュールをダウンロードしている。
  • 「インストール Playbook のダウンロード」で Playbook をダウンロードしている。
  • インストールプログラムのメタデータファイルのインフラストラクチャー ID は環境変数 ($INFRA_ID) として設定されます。
  • inventory.yamlcommon.yaml、および control-plane.yaml Ansible Playbook は共通ディレクトリーにあります。
  • 「コントロールプレーンの Ignition 設定ファイルの作成」で作成された 3 つの Ignition ファイルがある。

手順

  1. コマンドラインで、作業ディレクトリーを Playbook の場所に切り替えます。
  2. コントロールプレーンの Ignition 設定ファイルが作業ディレクトリーにまだない場合は、ファイルを作業ディレクトリーにコピーします。
  3. コマンドラインで、control-plane.yaml Playbook を実行します。

    $ ansible-playbook -i inventory.yaml control-plane.yaml
  4. 以下のコマンドを実行してブートストラッププロセスをモニターします。

    $ openshift-install wait-for bootstrap-complete

    コントロールプレーンマシンが実行され、クラスターに参加していることを確認できるメッセージが表示されます。

    INFO API v1.29.4 up
    INFO Waiting up to 30m0s for bootstrapping to complete...
    ...
    INFO It is now safe to remove the bootstrap resources

19.4.20. CLI の使用によるクラスターへのログイン

クラスター kubeconfig ファイルをエクスポートし、デフォルトシステムユーザーとしてクラスターにログインできます。kubeconfig ファイルには、クライアントを正しいクラスターおよび API サーバーに接続するために CLI で使用されるクラスターに関する情報が含まれます。このファイルはクラスターに固有のファイルであり、OpenShift Container Platform のインストール時に作成されます。

前提条件

  • OpenShift Container Platform クラスターをデプロイしていること。
  • oc CLI をインストールしていること。

手順

  1. kubeadmin 認証情報をエクスポートします。

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
    1
    <installation_directory> には、インストールファイルを保存したディレクトリーへのパスを指定します。
  2. エクスポートされた設定を使用して、oc コマンドを正常に実行できることを確認します。

    $ oc whoami

    出力例

    system:admin

19.4.21. RHOSP からのブートストラップリソースの削除

不要になったブートストラップリソースを削除します。

前提条件

  • 「Playbook 依存関係のダウンロード」でモジュールをダウンロードしている。
  • 「インストール Playbook のダウンロード」で Playbook をダウンロードしている。
  • inventory.yamlcommon.yaml、および down-bootstrap.yaml Ansible Playbook が共通ディレクトリーにある。
  • コントロールプレーンマシンが実行中である。

    • マシンのステータスが不明な場合は、「クラスターステータスの確認」を参照してください。

手順

  1. コマンドラインで、作業ディレクトリーを Playbook の場所に切り替えます。
  2. コマンドラインで、down-bootstrap.yaml Playbook を実行します。

    $ ansible-playbook -i inventory.yaml down-bootstrap.yaml

ブートストラップポート、サーバー、および Floating IP アドレスが削除されます。

警告

ブートストラップ Ignition ファイル URL をまだ無効にしていない場合は、無効にしてください。

19.4.22. RHOSP でのコンピュートマシンの作成

コントロールプレーンの起動後、コンピュートマシンを作成します。Red Hat は、このプロセスを単純化するために実行する Ansible Playbook を提供しています。

前提条件

  • 「Playbook 依存関係のダウンロード」でモジュールをダウンロードしている。
  • 「インストール Playbook のダウンロード」で Playbook をダウンロードしている。
  • inventory.yamlcommon.yaml、および compute-nodes.yaml Ansible Playbook が共通ディレクトリーにある。
  • インストールプログラムが作成した metadata.json ファイルが Ansible Playbook と同じディレクトリーにあります。
  • コントロールプレーンが有効である。

手順

  1. コマンドラインで、作業ディレクトリーを Playbook の場所に切り替えます。
  2. コマンドラインで Playbook を実行します。

    $ ansible-playbook -i inventory.yaml compute-nodes.yaml

次のステップ

  • マシンの証明書署名要求を承認します。

19.4.23. マシンの証明書署名要求の承認

マシンをクラスターに追加する際に、追加したそれぞれのマシンについて 2 つの保留状態の証明書署名要求 (CSR) が生成されます。これらの CSR が承認されていることを確認するか、必要な場合はそれらを承認してください。最初にクライアント要求を承認し、次にサーバー要求を承認する必要があります。

前提条件

  • マシンがクラスターに追加されています。

手順

  1. クラスターがマシンを認識していることを確認します。

    $ oc get nodes

    出力例

    NAME      STATUS    ROLES   AGE  VERSION
    master-0  Ready     master  63m  v1.29.4
    master-1  Ready     master  63m  v1.29.4
    master-2  Ready     master  64m  v1.29.4

    出力には作成したすべてのマシンがリスト表示されます。

    注記

    上記の出力には、一部の CSR が承認されるまで、ワーカーノード (ワーカーノードとも呼ばれる) が含まれない場合があります。

  2. 保留中の証明書署名要求 (CSR) を確認し、クラスターに追加したそれぞれのマシンのクライアントおよびサーバー要求に Pending または Approved ステータスが表示されていることを確認します。

    $ oc get csr

    出力例

    NAME        AGE     REQUESTOR                                                                   CONDITION
    csr-8b2br   15m     system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending
    csr-8vnps   15m     system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending
    ...

    この例では、2 つのマシンがクラスターに参加しています。このリストにはさらに多くの承認された CSR が表示される可能性があります。

  3. 追加したマシンの保留中の CSR すべてが Pending ステータスになった後に CSR が承認されない場合には、クラスターマシンの CSR を承認します。

    注記

    CSR のローテーションは自動的に実行されるため、クラスターにマシンを追加後 1 時間以内に CSR を承認してください。1 時間以内に承認しない場合には、証明書のローテーションが行われ、各ノードに 3 つ以上の証明書が存在するようになります。これらの証明書すべてを承認する必要があります。クライアントの CSR が承認された後に、Kubelet は提供証明書のセカンダリー CSR を作成します。これには、手動の承認が必要になります。次に、後続の提供証明書の更新要求は、Kubelet が同じパラメーターを持つ新規証明書を要求する場合に machine-approver によって自動的に承認されます。

    注記

    ベアメタルおよび他の user-provisioned infrastructure などのマシン API ではないプラットフォームで実行されているクラスターの場合、kubelet 提供証明書要求 (CSR) を自動的に承認する方法を実装する必要があります。要求が承認されない場合、API サーバーが kubelet に接続する際に提供証明書が必須であるため、oc execoc rsh、および oc logs コマンドは正常に実行できません。Kubelet エンドポイントにアクセスする操作には、この証明書の承認が必要です。この方法は新規 CSR の有無を監視し、CSR が system:node または system:admin グループの node-bootstrapper サービスアカウントによって提出されていることを確認し、ノードのアイデンティティーを確認します。

    • それらを個別に承認するには、それぞれの有効な CSR について以下のコマンドを実行します。

      $ oc adm certificate approve <csr_name> 1
      1
      <csr_name> は、現行の CSR のリストからの CSR の名前です。
    • すべての保留中の CSR を承認するには、以下のコマンドを実行します。

      $ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approve
      注記

      一部の Operator は、一部の CSR が承認されるまで利用できない可能性があります。

  4. クライアント要求が承認されたら、クラスターに追加した各マシンのサーバー要求を確認する必要があります。

    $ oc get csr

    出力例

    NAME        AGE     REQUESTOR                                                                   CONDITION
    csr-bfd72   5m26s   system:node:ip-10-0-50-126.us-east-2.compute.internal                       Pending
    csr-c57lv   5m26s   system:node:ip-10-0-95-157.us-east-2.compute.internal                       Pending
    ...

  5. 残りの CSR が承認されず、それらが Pending ステータスにある場合、クラスターマシンの CSR を承認します。

    • それらを個別に承認するには、それぞれの有効な CSR について以下のコマンドを実行します。

      $ oc adm certificate approve <csr_name> 1
      1
      <csr_name> は、現行の CSR のリストからの CSR の名前です。
    • すべての保留中の CSR を承認するには、以下のコマンドを実行します。

      $ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve
  6. すべてのクライアントおよびサーバーの CSR が承認された後に、マシンのステータスが Ready になります。以下のコマンドを実行して、これを確認します。

    $ oc get nodes

    出力例

    NAME      STATUS    ROLES   AGE  VERSION
    master-0  Ready     master  73m  v1.29.4
    master-1  Ready     master  73m  v1.29.4
    master-2  Ready     master  74m  v1.29.4
    worker-0  Ready     worker  11m  v1.29.4
    worker-1  Ready     worker  11m  v1.29.4

    注記

    サーバー CSR の承認後にマシンが Ready ステータスに移行するまでに数分の時間がかかる場合があります。

関連情報

19.4.24. インストールの正常な実行の確認

OpenShift Container Platform のインストールが完了していることを確認します。

前提条件

  • インストールプログラム (openshift-install) があります。

手順

  • コマンドラインで、以下を入力します。

    $ openshift-install --log-level debug wait-for install-complete

プログラムはコンソール URL と管理者のログイン情報を出力します。

19.4.25. OpenShift Container Platform の Telemetry アクセス

OpenShift Container Platform 4.16 では、Telemetry サービスにもインターネットアクセスが必要です。Telemetry サービスは、クラスターの健全性と更新の成功に関するメトリクスを提供するためにデフォルトで実行されます。クラスターがインターネットに接続されている場合、Telemetry は自動的に実行され、クラスターは OpenShift Cluster Manager に登録されます。

OpenShift Cluster Manager インベントリーが正常である (Telemetry によって自動的に維持、または OpenShift Cluster Manager を使用して手動で維持) ことを確認した後に、subscription watch を使用 して、アカウントまたはマルチクラスターレベルで OpenShift Container Platform サブスクリプションを追跡します。

関連情報

19.4.26. 次のステップ

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.