4.10. インストール設定ファイルの作成
Red Hat OpenStack Platform (RHOSP) にインストールする OpenShift Container Platform クラスターをカスタマイズできます。
前提条件
- OpenShift Container Platform インストールプログラムおよびクラスターのプルシークレットがある。
手順
install-config.yamlファイルを作成します。インストールプログラムが含まれるディレクトリーに切り替え、以下のコマンドを実行します。
$ ./openshift-install create install-config --dir <installation_directory>1 - 1
<installation_directory>の場合、インストールプログラムが作成するファイルを保存するためにディレクトリー名を指定します。
ディレクトリーを指定する場合:
-
ディレクトリーに
execute権限があることを確認します。この権限は、インストールディレクトリーで Terraform バイナリーを実行するために必要です。 空のディレクトリーを使用します。ブートストラップ X.509 証明書などの一部のインストールアセットは有効期限が短いため、インストールディレクトリーを再利用しないでください。別のクラスターインストールの個別のファイルを再利用する必要がある場合は、それらをディレクトリーにコピーすることができます。ただし、インストールアセットのファイル名はリリース間で変更される可能性があります。インストールファイルを以前のバージョンの OpenShift Container Platform からコピーする場合は注意してコピーを行ってください。
注記古い設定の再利用を回避するために、
~/.powervsディレクトリーは必ず削除してください。以下のコマンドを実行します。$ rm -rf ~/.powervs
プロンプト時に、クラウドの設定の詳細情報を指定します。
オプション: クラスターマシンにアクセスするために使用する SSH キーを選択します。
注記インストールのデバッグまたは障害復旧を実行する必要のある実稼働用の OpenShift Container Platform クラスターでは、
ssh-agentプロセスが使用する SSH キーを指定します。- ターゲットに設定するプラットフォームとして openstack を選択します。
- クラスターのインストールに使用する Red Hat OpenStack Platform (RHOSP) の外部ネットワーク名を指定します。
- OpenShift API への外部アクセスに使用する floating IP アドレスを指定します。
- コントロールプレーンノードに使用する少なくとも 16 GB の RAM とコンピュートノードに使用する 8 GB の RAM を持つ RHOSP フレーバーを指定します。
- クラスターをデプロイするベースドメインを選択します。すべての DNS レコードはこのベースのサブドメインとなり、クラスター名も含まれます。
- クラスターの名前を入力します。名前は 14 文字以下でなければなりません。
-
install-config.yamlファイルを変更します。利用可能なパラメーターの詳細は、「インストール設定パラメーター」のセクションを参照してください。 install-config.yamlファイルをバックアップし、複数のクラスターをインストールするのに使用できるようにします。重要install-config.yamlファイルはインストールプロセス時に使用されます。このファイルを再利用する必要がある場合は、この段階でこれをバックアップしてください。
4.10.1. インストール時のクラスター全体のプロキシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
実稼働環境では、インターネットへの直接アクセスを拒否し、代わりに HTTP または HTTPS プロキシーを使用することができます。プロキシー設定を install-config.yaml ファイルで行うことにより、新規の OpenShift Container Platform クラスターをプロキシーを使用するように設定できます。
Kuryr のインストールでは、HTTP プロキシーがデフォルト設定されます。
前提条件
Proxyオブジェクトを使用する制限付きネットワークで Kuryr をインストールする場合には、プロキシーはクラスターが使用するルーターとの応答が可能でなければなりません。root ユーザーとしてコマンドラインからプロキシー設定の静的ルートを追加するには、次のように入力します。$ ip route add <cluster_network_cidr> via <installer_subnet_gateway>-
制限付きサブネットには、Kuryr が作成する
Routerリソースにリンクできるように定義され、使用可能なゲートウェイが必要です。 -
既存の
install-config.yamlファイルがある。 クラスターがアクセスする必要のあるサイトを確認済みで、それらのいずれかがプロキシーをバイパスする必要があるかどうかを判別している。デフォルトで、すべてのクラスター Egress トラフィック (クラスターをホストするクラウドに関するクラウドプロバイダー API に対する呼び出しを含む) はプロキシーされます。プロキシーを必要に応じてバイパスするために、サイトを
Proxyオブジェクトのspec.noProxyフィールドに追加している。注記Proxyオブジェクトのstatus.noProxyフィールドには、インストール設定のnetworking.machineNetwork[].cidr、networking.clusterNetwork[].cidr、およびnetworking.serviceNetwork[]フィールドの値が設定されます。Amazon Web Services (AWS)、Google Cloud Platform (GCP)、Microsoft Azure、および Red Hat OpenStack Platform (RHOSP) へのインストールの場合、
Proxyオブジェクトのstatus.noProxyフィールドには、インスタンスメタデータのエンドポイント (169.254.169.254) も設定されます。
手順
install-config.yamlファイルを編集し、プロキシー設定を追加します。以下に例を示します。apiVersion: v1 baseDomain: my.domain.com proxy: httpProxy: http://<username>:<pswd>@<ip>:<port>1 httpsProxy: https://<username>:<pswd>@<ip>:<port>2 noProxy: example.com3 additionalTrustBundle: |4 -----BEGIN CERTIFICATE----- <MY_TRUSTED_CA_CERT> -----END CERTIFICATE----- additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle>5 - 1
- クラスター外の HTTP 接続を作成するために使用するプロキシー URL。URL スキームは
httpである必要があります。 - 2
- クラスター外で HTTPS 接続を作成するために使用するプロキシー URL。
- 3
- プロキシーから除外するための宛先ドメイン名、IP アドレス、または他のネットワーク CIDR のコンマ区切りのリスト。サブドメインのみと一致するように、ドメインの前に
.を付けます。たとえば、.y.comはx.y.comに一致しますが、y.comには一致しません。*を使用し、すべての宛先のプロキシーをバイパスします。 - 4
- 指定されている場合、インストールプログラムは HTTPS 接続のプロキシーに必要な 1 つ以上の追加の CA 証明書が含まれる
user-ca-bundleという名前の設定マップをopenshift-confignamespace に生成します。次に Cluster Network Operator は、これらのコンテンツを Red Hat Enterprise Linux CoreOS (RHCOS) 信頼バンドルにマージするtrusted-ca-bundle設定マップを作成し、この設定マップはProxyオブジェクトのtrustedCAフィールドで参照されます。additionalTrustBundleフィールドは、プロキシーのアイデンティティー証明書が RHCOS 信頼バンドルからの認証局によって署名されない限り必要になります。 - 5
- オプション:
trustedCAフィールドのuser-ca-bundle設定マップを参照するProxyオブジェクトの設定を決定するポリシー。許可される値はProxyonlyおよびAlwaysです。Proxyonlyを使用して、http/httpsプロキシーが設定されている場合にのみuser-ca-bundle設定マップを参照します。Alwaysを使用して、常にuser-ca-bundle設定マップを参照します。デフォルト値はProxyonlyです。
注記インストールプログラムは、プロキシーの
readinessEndpointsフィールドをサポートしません。注記インストーラーがタイムアウトした場合は、インストーラーの
wait-forコマンドを使用してデプロイメントを再起動してからデプロイメントを完了します。以下に例を示します。$ ./openshift-install wait-for install-complete --log-level debug- ファイルを保存し、OpenShift Container Platform のインストール時にこれを参照します。
インストールプログラムは、指定の install-config.yaml ファイルのプロキシー設定を使用する cluster という名前のクラスター全体のプロキシーを作成します。プロキシー設定が指定されていない場合、cluster Proxy オブジェクトが依然として作成されますが、これには spec がありません。
cluster という名前の Proxy オブジェクトのみがサポートされ、追加のプロキシーを作成することはできません。
4.10.2. 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 の数を慎重に検討する必要があるため、クラスターのインストール時に範囲を決定するための直接的なガイダンスを提供していません。
4.10.3. Kuryr を使用した OpenStack のカスタマイズされた install-config.yaml ファイルのサンプル リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの OVN-Kubernetes ネットワークプラグインの代わりに Kuryr SDN を使用してデプロイするには、install-config.yaml ファイルを変更して、Kuryr を目的の network.networkType として含める必要があります。このサンプル install-config.yaml は、すべての可能な Red Hat OpenStack Platform (RHOSP) カスタマイズオプションを示しています。
このサンプルファイルは参照用にのみ提供されます。インストールプログラムを使用して 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: Kuryr
platform:
openstack:
cloud: mycloud
externalNetwork: external
computeFlavor: m1.xlarge
apiFloatingIP: 128.0.0.1
trunkSupport: true
octaviaSupport: true
pullSecret: '{"auths": ...}'
sshKey: ssh-ed25519 AAAA...
- 1
- Amphora Octavia ドライバーは、ロードバランサーごとに 2 つのポートを作成します。そのため、インストーラーが作成するサービスサブネットは、
serviceNetworkプロパティーの値として指定される CIDR のサイズは 2 倍になります。IP アドレスの競合を防ぐには、範囲をより広くする必要があります。 - 2
- インストールするクラスターネットワークプラグイン。サポートされている値は、
Kuryr、OVNKubernetes、およびOpenShiftSDNです。デフォルトの値はOVNkubernetesです。 - 3 4
trunkSupportとoctaviaSupportの両方はインストーラーによって自動的に検出されるため、それらを設定する必要はありません。ただし、ご使用の環境がこれらの両方の要件を満たさないと、Kuryr SDN は適切に機能しません。トランクは Pod を RHOSP ネットワークに接続するために必要であり、Octavia は OpenShift Container Platform サービスを作成するために必要です。
4.10.4. ユーザー管理のロードバランサーを使用した OpenStack 上のクラスターのインストール設定 リンクのコピーリンクがクリップボードにコピーされました!
次の install-config.yaml ファイルの例は、デフォルトの内部ロードバランサーではなく、ユーザー管理の外部ロードバランサーを使用するクラスターを設定する方法を示しています。
apiVersion: v1
baseDomain: mydomain.test
compute:
- name: worker
platform:
openstack:
type: m1.xlarge
replicas: 3
controlPlane:
name: master
platform:
openstack:
type: m1.xlarge
replicas: 3
metadata:
name: mycluster
networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
machineNetwork:
- cidr: 192.168.10.0/24
platform:
openstack:
cloud: mycloud
machinesSubnet: 8586bf1a-cc3c-4d40-bdf6-c243decc603a
apiVIPs:
- 192.168.10.5
ingressVIPs:
- 192.168.10.7
loadBalancer:
type: UserManaged
4.10.5. RHOSP プロバイダーネットワーク上のクラスターデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
プロバイダーネットワーク上のプライマリーネットワークインターフェイスを使用して、OpenShift Container Platform クラスターを Red Hat OpenStack Platform (RHOSP) にデプロイできます。プロバイダーネットワークは一般的に、インターネットへの到達に使用可能なパブリックネットワークに、プロジェクトが直接アクセスできるように使用します。ネットワーク作成プロセスの一環として、プロバイダーネットワークをプロジェクト間で共有することもできます。
RHOSP プロバイダーネットワークは、データセンター内の既存の物理ネットワークに直接マップします。RHOSP 管理者はこれらを作成する必要があります。
以下の例では、OpenShift Container Platform ワークロードはプロバイダーネットワークを使用してデータセンターに接続されます。
プロバイダーネットワークにインストールされている OpenShift Container Platform クラスターは、テナントネットワークまたは Floating IP アドレスを必要としません。インストーラーは、インストール中にこれらのリソースを作成しません。
プロバイダーネットワークタイプの例には、フラット (タグなし) および VLAN (802.1Q タグ付き) が含まれます。
クラスターは、ネットワークタイプが許可する限り多くのプロバイダーネットワーク接続をサポートできます。たとえば、VLAN ネットワークは、通常最大 4096 の接続をサポートします。
プロバイダーネットワークおよびテナントネットワークの詳細は、RHOSP のドキュメント を参照してください。
4.10.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 openshiftRHOSP でのネットワークの作成に関する詳細は、プロバイダーネットワークに関するドキュメント を参照してください。
クラスターが
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) ルールを作成します。
4.10.5.2. プロバイダーネットワークにプライマリーインターフェイスを持つクラスターのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) プロバイダーネットワーク上にプライマリーネットワークインターフェイスを持つ OpenShift Container Platform クラスターをデプロイすることができます。
前提条件
- 「クラスターのインストールにおける RHOSP プロバイダーネットワーク要件」に記載されているとおりに、お使いの Red Hat OpenStack Platform (RHOSP) のデプロイメントが設定されています。
手順
-
テキストエディターで
install-config.yamlファイルを開きます。 -
platform.openstack.apiVIPsプロパティーの値を API VIP の IP アドレスに設定します。 -
platform.openstack.ingressVIPsプロパティーの値を Ingress VIP の IP アドレスに設定します。 -
platform.openstack.machinesSubnetプロパティーの値をプロバイダーネットワークサブネットの UUID に設定します。 -
networking.machineNetwork.cidrプロパティーの値をプロバイダーネットワークサブネットの CIDR ブロックに設定します。
platform.openstack.apiVIPs プロパティーおよび platform.openstack.ingressVIPs プロパティーはいずれも、networking.machineNetwork.cidr ブロックから割り当てられていない IP アドレスである必要があります。
RHOSP プロバイダーネットワークに依存するクラスターのインストール設定ファイルのセクション
...
platform:
openstack:
apiVIPs:
- 192.0.2.13
ingressVIPs:
- 192.0.2.23
machinesSubnet: fa806b2f-ac49-4bce-b9db-124bc64209bf
# ...
networking:
machineNetwork:
- cidr: 192.0.2.0/24
プライマリーネットワークインターフェイスにプロバイダーネットワークを使用している間は、platform.openstack.externalNetwork パラメーターまたは platform.openstack.externalDNS パラメーターを設定することはできません。
クラスターをデプロイする際に、インストーラーは install-config.yaml ファイルを使用してプロバイダーネットワークにクラスターをデプロイします。
プロバイダーネットワークを含むネットワークを platform.openstack.additionalNetworkIDs リストに追加できます。
クラスターのデプロイ後に、Pod を追加のネットワークに接続することができます。詳細は、複数ネットワークについて を参照してください。
4.10.6. Kuryr ポートプール リンクのコピーリンクがクリップボードにコピーされました!
Kuryr ポートプールでは、Pod 作成のスタンバイ状態の多数のポートを維持します。
ポートをスタンバイ状態に維持すると、Pod の作成時間が必要最小限に抑えることができます。ポートプールを使用しない場合には、Kuryr は Pod が作成または削除されるたびにポートの作成または削除を明示的に要求する必要があります。
Kuryr が使用する Neutron ポートは、namespace に関連付けられるサブネットに作成されます。これらの Pod ポートは、OpenShift Container Platform クラスターノードのプライマリーポートにサブポートとして追加されます。
Kuryr は namespace をそれぞれ、別のサブネットに保存するため、namespace-worker ペアごとに別個のポートプールが維持されます。
クラスターをインストールする前に、cluster-network-03-config.yml マニフェストファイルに以下のパラメーターを設定して、ポートプールの動作を設定できます。
-
enablePortPoolsPrepopulationパラメーターは、プールの事前入力を制御します。これにより、Pod 専用ネットワークを使用するように設定された最初の Pod が namespace に作成されたときに、Kuryr が Neutron ポートをプールに追加します。デフォルト値はfalseです。 -
poolMinPortsパラメーターは、プールに保持する空きポートの最小数です。デフォルト値は1です。 poolMaxPortsパラメーターは、プールに保持する空きポートの最大数です。値が0の場合は、上限が無効になります。これはデフォルト設定です。OpenStack ポートのクォータが低い場合や、Pod ネットワークで IP アドレスの数が限定されている場合には、このオプションを設定して、不要なポートが削除されるようにします。
-
poolBatchPortsパラメーターは、一度に作成可能な Neutron ポートの最大数を定義します。デフォルト値は3です。
4.10.7. インストール時の Kuryr ポートプールの調整 リンクのコピーリンクがクリップボードにコピーされました!
インストール時に、Pod 作成の速度や効率性を制御するために Kuryr で Red Hat OpenStack Platform (RHOSP) Neutron ポートを管理する方法を設定できます。
前提条件
-
install-config.yamlファイルを作成して変更しておく。
手順
コマンドラインからマニフェストファイルを作成します。
$ ./openshift-install create manifests --dir <installation_directory>1 - 1
<installation_directory>については、クラスターのinstall-config.yamlファイルが含まれるディレクトリーの名前を指定します。
cluster-network-03-config.ymlという名前のファイルを<installation_directory>/manifests/ディレクトリーに作成します。$ touch <installation_directory>/manifests/cluster-network-03-config.yml1 - 1
<installation_directory>については、クラスターのmanifests/ディレクトリーが含まれるディレクトリー名を指定します。
ファイルの作成後は、以下のようにいくつかのネットワーク設定ファイルが
manifests/ディレクトリーに置かれます。$ ls <installation_directory>/manifests/cluster-network-*出力例
cluster-network-01-crd.yml cluster-network-02-config.yml cluster-network-03-config.ymlエディターで
cluster-network-03-config.ymlファイルを開き、必要な Cluster Network Operator 設定を記述するカスタムリソース (CR) を入力します。$ oc edit networks.operator.openshift.io cluster要件に合わせて設定を編集します。以下のファイルをサンプルとして紹介しています。
apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 serviceNetwork: - 172.30.0.0/16 defaultNetwork: type: Kuryr kuryrConfig: enablePortPoolsPrepopulation: false1 poolMinPorts: 12 poolBatchPorts: 33 poolMaxPorts: 54 openstackServiceNetwork: 172.30.0.0/155 - 1
enablePortPoolsPrepopulationをtrueに設定すると、Pod のネットワーク上の最初の Pod が namespace に作成されたときに、Kuryr が新しい Neutron ポートを作成するようになります。この設定により、Neutron ポートのクォータが引き上げられますが、Pod の起動に必要となる時間を短縮できます。デフォルト値はfalseです。- 2
- Kuryr は、対象のプール内にある空きポートの数が
poolMinPortsの値よりも少ない場合には、プールに新規ポートを作成します。デフォルト値は1です。 - 3
poolBatchPortsは、空きポートの数がpoolMinPortsの値よりも少ない場合に作成される新規ポートの数を制御します。デフォルト値は3です。- 4
- プール内の空きポートの数が
poolMaxPortsの値よりも多い場合に、Kuryr はその値と同じ数になるまでポートを削除します。この値を0に設定すると、この上限は無効になり、プールが縮小できないようにします。デフォルト値は0です。 - 5
openStackServiceNetworkパラメーターは、RHOSP Octavia の LoadBalancer に割り当てられるネットワークの CIDR 範囲を定義します。
このパラメーターを Amphora ドライバーと併用する場合には、Octavia は、ロードバランサーごとに、このネットワークから IP アドレスを 2 つ (OpenShift 用に 1 つ、VRRP 接続用に 1 つ) 取得します。これらの IP アドレスは OpenShift Container Platform と Neutron でそれぞれ管理されるため、異なるプールから取得する必要があります。したがって、
openStackServiceNetworkserviceNetworkの値の 2 倍になる必要があり、serviceNetworkの値は、openStackServiceNetworkで定義された範囲と完全に重複する必要があります。CNO は、このパラメーターの定義範囲から取得した VRRP IP アドレスが
serviceNetworkパラメーターの定義範囲と重複しないことを検証します。このパラメーターが設定されていない場合には、CNO は
serviceNetworkの拡張値を使用します。この値は、プリフィックスのサイズを 1 つずつ減らして決定します。-
cluster-network-03-config.ymlファイルを保存し、テキストエディターを終了します。 -
オプション:
manifests/cluster-network-03-config.ymlファイルをバックアップします。インストールプログラムは、クラスターの作成時にmanifests/ディレクトリーを削除します。