4.2. ベアメタルへの Hosted Control Plane のデプロイ


クラスターを管理クラスターとして機能するように設定することで、Hosted Control Plane をデプロイできます。管理クラスターは、コントロールプレーンがホストされる OpenShift Container Platform クラスターです。場合によっては、管理クラスターは ホスティング クラスターとも呼ばれます。

注記

管理クラスターは、マネージド クラスターとは異なります。マネージドクラスターは、ハブクラスターが管理するクラスターです。

Hosted Control Plane 機能はデフォルトで有効になっています。

multicluster engine Operator は、マネージドのハブクラスターであるデフォルトの local-cluster と、管理クラスターとしてのハブクラスターのみをサポートしています。Red Hat Advanced Cluster Management がインストールされている場合は、マネージドハブクラスター (local-cluster) を管理クラスターとして使用できます。

ホステッドクラスター は、API エンドポイントとコントロールプレーンが管理クラスターでホストされている OpenShift Container Platform クラスターです。ホステッドクラスターには、コントロールプレーンとそれに対応するデータプレーンが含まれます。マルチクラスターエンジン Operator コンソールまたはホステッドコントロールプレーンコマンドラインインターフェイス(hcp)を使用して、ホステッドクラスターを作成できます。

ホステッドクラスターは、マネージドクラスターとして自動的にインポートされます。この自動インポート機能を無効にする場合は、「multicluster engine Operator へのホステッドクラスターの自動インポートの無効化」を参照してください。

4.2.1. ベアメタルへの Hosted Control Plane のデプロイの準備

ベアメタルに Hosted Control Plane をデプロイする準備をする際には、次の情報を考慮してください。

  • 管理クラスターとワーカーは、Hosted Control Plane の同じプラットフォーム上で実行してください。
  • すべてのベアメタルホストは、Central Infrastructure Management が提供する Discovery Image ISO を使用して手動で起動する必要があります。ホストは手動で起動することも、Cluster-Baremetal-Operator を使用して自動化することもできます。各ホストが起動すると、エージェントプロセスが実行され、ホストの詳細が検出され、インストールが完了します。Agent カスタムリソースは、各ホストを表します。
  • Hosted Control Plane のストレージを設定する場合は、etcd の推奨プラクティスを考慮してください。レイテンシー要件を満たすには、各コントロールプレーンノードで実行されるすべての Hosted Control Plane の etcd インスタンス専用の高速ストレージデバイスを使用します。LVM ストレージを使用して、ホストされた etcd Pod のローカルストレージクラスを設定できます。詳細は、「推奨される etcd プラクティス」および「論理ボリュームマネージャーストレージを使用した永続ストレージ」を参照してください。

4.2.1.1. 管理クラスターを設定するための前提条件

  • OpenShift Container Platform クラスターに multicluster engine for Kubernetes Operator 2.2 以降がインストールされている必要があります。multicluster engine Operator は、OpenShift Container Platform OperatorHub から Operator としてインストールできます。
  • multicluster engine Operator には、少なくとも 1 つのマネージド OpenShift Container Platform クラスターが必要です。multicluster engine Operator バージョン 2.2 以降では、local-cluster が自動的にインポートされます。local-cluster の詳細は、Red Hat Advanced Cluster Management ドキュメントの 詳細設定 を参照してください。次のコマンドを実行して、ハブクラスターの状態を確認できます。

    $ oc get managedclusters local-cluster
    Copy to Clipboard Toggle word wrap
  • 管理クラスター上のベアメタルホストに topology.kubernetes.io/zone ラベルを追加する必要があります。各ホストの topology.kubernetes.io/zone の値が一意であることを確認します。そうしないと、すべての Hosted Control Plane Pod が 1 つのノードにスケジュールされ、単一障害点が発生します。
  • エージェントプラットフォームを使用して、Hosted Control Plane をベアメタルでプロビジョニングできます。Agent プラットフォームは、Central Infrastructure Management サービスを使用して、ホステッドクラスターにワーカーノードを追加します。詳細は、Central Infrastructure Management サービスの有効化 を参照してください。
  • Hosted Control Plane のコマンドラインインターフェイスをインストールする必要があります。

4.2.1.2. ベアメタルファイアウォール、ポート、およびサービスの要件

管理クラスター、コントロールプレーン、ホステッドクラスター間でポートの通信ができるように、ファイアウォール、ポート、およびサービスの要件を満たす必要があります。

注記

サービスはデフォルトのポートで実行されます。ただし、NodePort 公開ストラテジーを使用する場合、サービスは NodePort サービスによって割り当てられたポートで実行されます。

ファイアウォールルール、セキュリティーグループ、またはその他のアクセス制御を使用して、必要なソースだけにアクセスを制限します。必要な場合を除き、ポートを公開しないでください。実稼働環境の場合は、ロードバランサーを使用して、単一の IP アドレスによるアクセスを簡素化します。

ハブクラスターにプロキシー設定がある場合は、すべてのホステッドクラスター API エンドポイントを Proxy オブジェクトの noProxy フィールドに追加して、ハブクラスターがホステッドクラスターの API エンドポイントにアクセスできようにします。詳細は、「クラスター全体のプロキシーの設定」を参照してください。

Hosted Control Plane はベアメタル上で次のサービスを公開します。

  • APIServer

    • APIServer サービスはデフォルトでポート 6443 で実行され、コントロールプレーンコンポーネント間の通信には ingress アクセスが必要です。
    • MetalLB ロードバランシングを使用する場合は、ロードバランサーの IP アドレスに使用される IP 範囲への ingress アクセスを許可します。
  • OAuthServer

    • ルートと Ingress を使用してサービスを公開する場合、OAuthServer サービスはデフォルトでポート 443 で実行されます。
    • NodePort 公開ストラテジーを使用する場合は、OAuthServer サービスにファイアウォールルールを使用します。
  • Konnectivity

    • ルートと Ingress を使用してサービスを公開する場合、Konnectivity サービスはデフォルトでポート 443 で実行されます。
    • Konnectivity エージェントはリバーストンネルを確立し、コントロールプレーンがホステッドクラスターのネットワークにアクセスできるようにします。エージェントは egress を使用して Konnectivity サーバーに接続します。サーバーは、ポート 443 のルートまたは手動で割り当てられた NodePort を使用して公開されます。
    • クラスター API サーバーのアドレスが内部 IP アドレスの場合は、ワークロードサブネットからポート 6443 の IP アドレスへのアクセスを許可します。
    • アドレスが外部 IP アドレスの場合は、ノードからその外部 IP アドレスにポート 6443 で送信できるように許可します。
  • Ignition

    • ルートと Ingress を使用してサービスを公開する場合、Ignition サービスはデフォルトでポート 443 で実行されます。
    • NodePort 公開ストラテジーを使用する場合は、Ignition サービスにファイアウォールルールを使用します。

ベアメタルで以下のサービスは必要ありません。

  • OVNSbDb
  • OIDC

4.2.1.3. ベアメタルのインフラストラクチャー要件

エージェントプラットフォームはインフラストラクチャーを作成しませんが、インフラストラクチャーに関して次の要件があります。

  • Agent: Agent は、Discovery イメージで起動され、OpenShift Container Platform ノードとしてプロビジョニングされる準備ができているホストを表します。
  • DNS: API および Ingress エンドポイントは、ルーティング可能である必要があります。

4.2.2. ベアメタルでの DNS 設定

ホステッドクラスターの API サーバーは、NodePort サービスとして公開されます。API サーバーに到達できる宛先を指す api.<hosted_cluster_name>.<base_domain> の DNS エントリーが存在する必要があります。

DNS エントリーは、ホステッドコントロールプレーンを実行している管理クラスター内のノードの 1 つを指すレコードのように単純なものにすることができます。エントリーは、受信トラフィックを Ingress Pod にリダイレクトするためにデプロイされるロードバランサーを指すこともできます。

DNS 設定の例

api.example.krnl.es.    IN A 192.168.122.20
api.example.krnl.es.    IN A 192.168.122.21
api.example.krnl.es.    IN A 192.168.122.22
api-int.example.krnl.es.    IN A 192.168.122.20
api-int.example.krnl.es.    IN A 192.168.122.21
api-int.example.krnl.es.    IN A 192.168.122.22
`*`.apps.example.krnl.es. IN A 192.168.122.23
Copy to Clipboard Toggle word wrap

注記

上記の例では、*.apps.example.krnl.es です。IN A 192.168.122.23 は、ホステッドクラスターのノードまたはロードバランサー(設定されている場合)のいずれかです。

IPv6 ネットワーク上の非接続環境用に DNS を設定する場合、設定は次の例のようになります。

IPv6 ネットワークの DNS 設定の例

api.example.krnl.es.    IN A 2620:52:0:1306::5
api.example.krnl.es.    IN A 2620:52:0:1306::6
api.example.krnl.es.    IN A 2620:52:0:1306::7
api-int.example.krnl.es.    IN A 2620:52:0:1306::5
api-int.example.krnl.es.    IN A 2620:52:0:1306::6
api-int.example.krnl.es.    IN A 2620:52:0:1306::7
`*`.apps.example.krnl.es. IN A 2620:52:0:1306::10
Copy to Clipboard Toggle word wrap

デュアルスタックネットワークの非接続環境で DNS を設定する場合は、IPv4 と IPv6 の両方の DNS エントリーを含めるようにしてください。

デュアルスタックネットワークの DNS 設定の例

host-record=api-int.hub-dual.dns.base.domain.name,192.168.126.10
host-record=api.hub-dual.dns.base.domain.name,192.168.126.10
address=/apps.hub-dual.dns.base.domain.name/192.168.126.11
dhcp-host=aa:aa:aa:aa:10:01,ocp-master-0,192.168.126.20
dhcp-host=aa:aa:aa:aa:10:02,ocp-master-1,192.168.126.21
dhcp-host=aa:aa:aa:aa:10:03,ocp-master-2,192.168.126.22
dhcp-host=aa:aa:aa:aa:10:06,ocp-installer,192.168.126.25
dhcp-host=aa:aa:aa:aa:10:07,ocp-bootstrap,192.168.126.26

host-record=api-int.hub-dual.dns.base.domain.name,2620:52:0:1306::2
host-record=api.hub-dual.dns.base.domain.name,2620:52:0:1306::2
address=/apps.hub-dual.dns.base.domain.name/2620:52:0:1306::3
dhcp-host=aa:aa:aa:aa:10:01,ocp-master-0,[2620:52:0:1306::5]
dhcp-host=aa:aa:aa:aa:10:02,ocp-master-1,[2620:52:0:1306::6]
dhcp-host=aa:aa:aa:aa:10:03,ocp-master-2,[2620:52:0:1306::7]
dhcp-host=aa:aa:aa:aa:10:06,ocp-installer,[2620:52:0:1306::8]
dhcp-host=aa:aa:aa:aa:10:07,ocp-bootstrap,[2620:52:0:1306::9]
Copy to Clipboard Toggle word wrap

4.2.2.1. カスタム DNS 名の定義

クラスター管理者は、ノードのブートストラップおよびコントロールプレーン通信に使用される内部エンドポイントとは異なる外部 API DNS 名でホステッドクラスターを作成できます。別の DNS 名を定義する理由には、次のようなものがあります。

  • 内部ルート CA にバインドされているコントロールプレーン機能を損なうことなく、ユーザー向けの TLS 証明書をパブリック CA が発行したものに置き換えるため
  • スプリットホライズン DNS および NAT のシナリオをサポートするため
  • スタンドアロンのコントロールプレーンと同様のエクスペリエンスを確保するよう、正しい kubeconfig と DNS 設定で「Show Login Command」などの機能を使用できるようにするため

HostedCluster オブジェクトの kubeAPIServerDNSName フィールドにドメイン名を入力することで、初期セットアップ時または day-2 操作時に DNS 名を定義できます。

前提条件

  • kubeAPIServerDNSName フィールドに設定する DNS 名をカバーする有効な TLS 証明書がある。
  • DNS 名は、到達可能で正しいアドレスを指している解決可能な URI である。

手順

  • HostedCluster オブジェクトの仕様で、kubeAPIServerDNSName フィールドとドメインのアドレスを追加し、使用する証明書を指定します (以下の例を参照)。

    #...
    spec:
      configuration:
        apiServer:
          servingCerts:
            namedCertificates:
            - names:
              - xxx.example.com
              - yyy.example.com
              servingCertificate:
                name: <my_serving_certificate>
      kubeAPIServerDNSName: <your_custom_address> 
    1
    Copy to Clipboard Toggle word wrap
    1
    kubeAPIServerDNSName フィールドの値は、有効なアドレス指定可能なドメインである必要があります。

kubeAPIServerDNSName フィールドを定義して証明書を指定すると、Control Plane Operator コントローラーは、custom-admin-kubeconfig という名前の kubeconfig ファイルを作成し、HostedControlPlane namespace に保存します。証明書はルート CA から生成され、HostedControlPlane namespace によって証明書の有効期限と更新が管理されます。

Control Plane Operator は、HostedControlPlane namespace に CustomKubeconfig という名前の新しい kubeconfig ファイルを報告します。このファイルでは、kubeAPIServerDNSName フィールドに定義されている新しいサーバーが使用されます。

カスタム kubeconfig ファイルは、status フィールドの HostedCluster オブジェクトで CustomKubeconfig として参照されます。CustomKubeConfig フィールドはオプションであり、kubeAPIServerDNSName フィールドが空でない場合にのみ追加できます。CustomKubeConfig フィールドが設定されている場合、HostedCluster namespace で <hosted_cluster_name>-custom-admin-kubeconfig という名前のシークレットの生成がトリガーされます。このシークレットを使用して HostedCluster API サーバーにアクセスできます。Day-2 操作中に CustomKubeConfig フィールドを削除すると、関連するすべてのシークレットおよびステータス参照が削除されます。

注記

このプロセスはデータプレーンに直接影響しないため、ロールアウトは発生しません。HostedControlPlane namespace は、HyperShift Operator から変更を受け取り、対応するフィールドを削除します。

HostedCluster オブジェクトの仕様から kubeAPIServerDNSName フィールドを削除すると、新規に生成されるすべてのシークレットおよび CustomKubeconfig 参照がクラスターおよび status フィールドから削除されます。

4.2.3. InfraEnv リソースの作成

ベアメタル上にホステッドクラスターを作成する前に、InfraEnv リソースが必要です。

4.2.3.1. InfraEnv リソースの作成とノードの追加

ホストされたコントロールプレーンでは、データプレーンは専用ノードで実行される間、コントロールプレーンコンポーネントは管理クラスター上の Pod として実行されます。Assisted Service を使用して、ハードウェアをハードウェアインベントリーに追加する検出 ISO を使用してハードウェアを起動できます。後でホストされたクラスターを作成すると、インベントリーのハードウェアを使用してデータコントロールプレーンノードがプロビジョニングされます。検出 ISO の取得に使用されるオブジェクトは InfraEnv リソースです。検出 ISO からベアメタルノードをブートするようにクラスターを設定する BareMetalHost オブジェクトを作成する必要があります。

手順

  1. 次のコマンドを入力して、ハードウェアインベントリーを保存する名前空間を作成します。

    $ oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig create \
      namespace <namespace_example>
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

    <directory_example>
    管理クラスターの kubeconfig ファイルが保存されるディレクトリーの名前です。
    <namespace_example>

    作成する namespace の名前です(例: hardware-inventory )。

    出力例

    namespace/hardware-inventory created
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを入力して、管理クラスターのプルシークレットをコピーします。

    $ oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig \
      -n openshift-config get secret pull-secret -o yaml \
      | grep -vE "uid|resourceVersion|creationTimestamp|namespace" \
      | sed "s/openshift-config/<namespace_example>/g" \
      | oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig \
      -n <namespace> apply -f -
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

    <directory_example>
    管理クラスターの kubeconfig ファイルが保存されるディレクトリーの名前です。
    <namespace_example>

    作成する namespace の名前です(例: hardware-inventory )。

    出力例

    secret/pull-secret created
    Copy to Clipboard Toggle word wrap

  3. 次のコンテンツを YAML ファイルに追加して、InfraEnv リソースを作成します。

    apiVersion: agent-install.openshift.io/v1beta1
    kind: InfraEnv
    metadata:
      name: hosted
      namespace: <namespace_example>
    spec:
      additionalNTPSources:
      - <ip_address>
      pullSecretRef:
        name: pull-secret
      sshAuthorizedKey: <ssh_public_key>
    # ...
    Copy to Clipboard Toggle word wrap
  4. 次のコマンドを入力して、YAML ファイルに変更を適用します。

    $ oc apply -f <infraenv_config>.yaml
    Copy to Clipboard Toggle word wrap

    &lt ;infraenv_config&gt; をファイルの名前に置き換えます。

  5. 次のコマンドを入力して、InfraEnv リソースが作成されたことを確認します。

    $ oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig \
      -n <namespace_example> get infraenv hosted
    Copy to Clipboard Toggle word wrap
  6. 次の 2 つの方法のいずれかに従って、ベアメタルホストを追加します。

    • Metal3 Operator を使用しない場合は、InfraEnv リソースから検出 ISO を取得し、次の手順を実行してホストを手動で起動します。

      1. 次のコマンドを入力して、ライブ ISO をダウンロードします。

        $ oc get infraenv -A
        Copy to Clipboard Toggle word wrap
        $ oc get infraenv <namespace_example> -o jsonpath='{.status.isoDownloadURL}' -n <namespace_example> <iso_url>
        Copy to Clipboard Toggle word wrap
      2. ISO を起動します。ノードは Assisted Service と通信し、InfraEnv リソースと同じ namespace 内のエージェントとして登録します。
      3. エージェントごとに、インストールディスク ID とホスト名を設定し、エージェントを使用する準備ができていることを示すためにこれを承認します。次のコマンドを入力します。

        $ oc -n <hosted_control_plane_namespace> get agents
        Copy to Clipboard Toggle word wrap

        出力例

        NAME                                   CLUSTER   APPROVED   ROLE          STAGE
        86f7ac75-4fc4-4b36-8130-40fa12602218                        auto-assign
        e57a637f-745b-496e-971d-1abbf03341ba                        auto-assign
        Copy to Clipboard Toggle word wrap

        $ oc -n <hosted_control_plane_namespace> \
          patch agent 86f7ac75-4fc4-4b36-8130-40fa12602218 \
          -p '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-0.example.krnl.es"}}' \
          --type merge
        Copy to Clipboard Toggle word wrap
        $ oc -n <hosted_control_plane_namespace> \
          patch agent 23d0c614-2caa-43f5-b7d3-0b3564688baa -p \
          '{"spec":{"installation_disk_id":"/dev/sda","approved":true,"hostname":"worker-1.example.krnl.es"}}' \
          --type merge
        Copy to Clipboard Toggle word wrap
        $ oc -n <hosted_control_plane_namespace> get agents
        Copy to Clipboard Toggle word wrap

        出力例

        NAME                                   CLUSTER   APPROVED   ROLE          STAGE
        86f7ac75-4fc4-4b36-8130-40fa12602218             true       auto-assign
        e57a637f-745b-496e-971d-1abbf03341ba             true       auto-assign
        Copy to Clipboard Toggle word wrap

    • Metal3 Operator を使用する場合は、次のオブジェクトを作成してベアメタルホスト登録を自動化できます。

      1. YAML ファイルを作成し、以下の内容を追加します。

        apiVersion: v1
        kind: Secret
        metadata:
          name: hosted-worker0-bmc-secret
          namespace: <namespace_example>
        data:
          password: <password>
          username: <username>
        type: Opaque
        ---
        apiVersion: v1
        kind: Secret
        metadata:
          name: hosted-worker1-bmc-secret
          namespace: <namespace_example>
        data:
          password: <password>
          username: <username>
        type: Opaque
        ---
        apiVersion: v1
        kind: Secret
        metadata:
          name: hosted-worker2-bmc-secret
          namespace: <namespace_example>
        data:
          password: <password>
          username: <username>
        type: Opaque
        ---
        apiVersion: metal3.io/v1alpha1
        kind: BareMetalHost
        metadata:
          name: hosted-worker0
          namespace: <namespace_example>
          labels:
            infraenvs.agent-install.openshift.io: hosted
          annotations:
            inspect.metal3.io: disabled
            bmac.agent-install.openshift.io/hostname: hosted-worker0
        spec:
          automatedCleaningMode: disabled
          bmc:
            disableCertificateVerification: True
            address: <bmc_address>
            credentialsName: hosted-worker0-bmc-secret
          bootMACAddress: aa:aa:aa:aa:02:01
          online: true
        ---
        apiVersion: metal3.io/v1alpha1
        kind: BareMetalHost
        metadata:
          name: hosted-worker1
          namespace: <namespace_example>
          labels:
            infraenvs.agent-install.openshift.io: hosted
          annotations:
            inspect.metal3.io: disabled
            bmac.agent-install.openshift.io/hostname: hosted-worker1
        spec:
          automatedCleaningMode: disabled
          bmc:
            disableCertificateVerification: True
            address: <bmc_address>
            credentialsName: hosted-worker1-bmc-secret
          bootMACAddress: aa:aa:aa:aa:02:02
          online: true
        ---
        apiVersion: metal3.io/v1alpha1
        kind: BareMetalHost
        metadata:
          name: hosted-worker2
          namespace: <namespace_example>
          labels:
            infraenvs.agent-install.openshift.io: hosted
          annotations:
            inspect.metal3.io: disabled
            bmac.agent-install.openshift.io/hostname: hosted-worker2
        spec:
          automatedCleaningMode: disabled
          bmc:
            disableCertificateVerification: True
            address: <bmc_address>
            credentialsName: hosted-worker2-bmc-secret
          bootMACAddress: aa:aa:aa:aa:02:03
          online: true
        ---
        apiVersion: rbac.authorization.k8s.io/v1
        kind: Role
        metadata:
          name: capi-provider-role
          namespace: <namespace_example>
        rules:
        - apiGroups:
          - agent-install.openshift.io
          resources:
          - agents
          verbs:
          - '*'
        Copy to Clipboard Toggle word wrap

        ここでは、以下のようになります。

        <namespace_example>
        お使いの namespace です。
        <password>
        これは、シークレットのパスワードです。
        <username>
        シークレットのユーザー名です。
        <bmc_address>

        BareMetalHost オブジェクトの BMC アドレスです。

        注記

        この YAML ファイルを適用すると、以下のオブジェクトが作成されます。

        • Baseboard Management Controller (BMC)の認証情報を持つシークレット
        • BareMetalHost オブジェクト
        • エージェントを管理できる HyperShift Operator のロール

        infraenvs.agent-install.openshift.io: hosted カスタムラベルを使用して、InfraEnv リソースが BareMetalHost オブジェクトでどのように参照されているかに注目してください。これにより、ノードが ISO で生成された状態で起動されるようになります。

      2. 次のコマンドを入力して、YAML ファイルに変更を適用します。

        $ oc apply -f <bare_metal_host_config>.yaml
        Copy to Clipboard Toggle word wrap

        & lt;bare_metal_host_config&gt; をファイルの名前に置き換えます。

  7. 次のコマンドを入力し、BareMetalHost オブジェクトが Provisioning の状態に移行するまで数分待ちます。

    $ oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig -n <namespace_example> get bmh
    Copy to Clipboard Toggle word wrap

    出力例

    NAME             STATE          CONSUMER   ONLINE   ERROR   AGE
    hosted-worker0   provisioning              true             106s
    hosted-worker1   provisioning              true             106s
    hosted-worker2   provisioning              true             106s
    Copy to Clipboard Toggle word wrap

  8. 次のコマンドを入力して、ノードが起動してエージェントとして表示されていることを確認します。このプロセスには数分かかるため、コマンドを複数回入力する必要がある場合があります。

    $ oc --kubeconfig ~/<directory_example>/mgmt-kubeconfig -n <namespace_example> get agent
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                   CLUSTER   APPROVED   ROLE          STAGE
    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0201             true       auto-assign
    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0202             true       auto-assign
    aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaa0203             true       auto-assign
    Copy to Clipboard Toggle word wrap

4.2.3.2. コンソールを使用した InfraEnv リソースの作成

コンソールを使用して InfraEnv リソースを作成するには、次の手順を実行します。

手順

  1. OpenShift Container Platform Web コンソールを開き、管理者の認証情報を入力してログインします。コンソールを開く方法は、Web コンソールへのアクセスを参照してください。
  2. コンソールヘッダーで、All Clusters が選択されていることを確認します。
  3. Infrastructure Host inventory Create infrastructure environment をクリックします。
  4. InfraEnv リソースを作成したら、Add hosts をクリックし、使用可能なオプションから選択して、InfraEnv ビュー内からベアメタルホストを追加します。
関連情報

4.2.4. ベアメタルでのホステッドクラスターの作成

ホステッドクラスターの作成やインポートが可能です。Assisted Installer がマルチクラスターエンジン Operator へのアドオンとして有効になり、エージェントプラットフォームでホステッドクラスターを作成すると、HyperShift Operator は Hosted Control Plane namespace に Agent Cluster API プロバイダーをインストールします。

4.2.4.1. CLI を使用したホストされたクラスターの作成

コマンドラインインターフェイス(CLI)を使用してホステッドクラスターを作成するには、次の手順を実行します。

前提条件

  • 各ホステッドクラスターに、クラスター全体で一意の名前が必要です。multicluster engine Operator によってホステッドクラスターを管理するには、ホステッドクラスター名を既存のマネージドクラスターと同じにすることはできません。
  • ホステッドクラスター名として clusters を使用しないでください。
  • ホステッドクラスターは、multicluster engine Operator のマネージドクラスターの namespace には作成できません。
  • クラスターにデフォルトのストレージクラスが設定されていることを確認します。設定されていない場合は、保留中の永続ボリューム要求(PVC)が表示される可能性があります。
  • デフォルトでは、hcp create cluster エージェント コマンドを使用すると、ホストされたクラスターがノードポートで作成されます。ただし、ベアメタル上のホステッドクラスターの推奨される公開ストラテジーは、ロードバランサーを介してサービスを公開することです。Web コンソールまたは Red Hat Advanced Cluster Management を使用してホステッドクラスターを作成する場合、Kubernetes API サーバー以外のサービスの公開ストラテジーを設定するには、HostedCluster カスタムリソースで servicePublishingStrategy 情報を手動で指定する必要があります。詳細は、この手順のステップ 4 を参照してください。
  • 「ホストされたコントロールプレーンをベアメタルにデプロイするための準備」で説明されている要件を満たしていることを確認してください。これには、インフラストラクチャー、ファイアウォール、ポート、およびサービスに関する要件が含まれます。たとえば、これらの要件では、以下のコマンド例のように、管理クラスター内のベアメタルホストに適切なゾーンラベルを追加する方法について説明します。

    $ oc label node [compute-node-1] topology.kubernetes.io/zone=zone1
    Copy to Clipboard Toggle word wrap
    $ oc label node [compute-node-2] topology.kubernetes.io/zone=zone2
    Copy to Clipboard Toggle word wrap
    $ oc label node [compute-node-3] topology.kubernetes.io/zone=zone3
    Copy to Clipboard Toggle word wrap
  • ハードウェアインベントリーにベアメタルノードが追加されていることを確認します。

手順

  1. 以下のコマンドを入力して namespace を作成します。

    $ oc create ns <hosted_cluster_namespace>
    Copy to Clipboard Toggle word wrap

    &lt ;hosted_cluster_namespace > をホストされたクラスターの namespace の識別子に置き換えます。通常、namespace は HyperShift Operator によって作成されますが、ベアメタルでのホストされたクラスターの作成プロセス中に、namespace がすでに存在している必要がある Cluster API プロバイダーロールが生成されます。

  2. 次のコマンドを入力して、ホステッドクラスターの設定ファイルを作成します。

    $ hcp create cluster agent \
      --name=<hosted_cluster_name> \
    1
    
      --pull-secret=<path_to_pull_secret> \
    2
    
      --agent-namespace=<hosted_control_plane_namespace> \
    3
    
      --base-domain=<base_domain> \
    4
    
      --api-server-address=api.<hosted_cluster_name>.<base_domain> \
    5
    
      --etcd-storage-class=<etcd_storage_class> \
    6
    
      --ssh-key=<path_to_ssh_key> \
    7
    
      --namespace=<hosted_cluster_namespace> \
    8
    
      --control-plane-availability-policy=HighlyAvailable \
    9
    
      --release-image=quay.io/openshift-release-dev/ocp-release:<ocp_release_image>-multi \
    10
    
      --node-pool-replicas=<node_pool_replica_count> \
    11
    
      --render \
      --render-sensitive \
      --ssh-key <home_directory>/<path_to_ssh_key>/<ssh_key> > hosted-cluster-config.yaml 
    12
    Copy to Clipboard Toggle word wrap
    1
    ホステッドクラスターの名前を指定します。
    2
    プルシークレットへのパスを指定します (例: /user/name/pullsecret)。
    3
    ホステッドコントロールプレーンの namespace を指定します。この名前空間でエージェントを使用できるようにするには、oc get agent -n <hosted_control_plane_namespace > コマンドを入力します。
    4
    ベースドメインを指定します (例: krnl.es)。
    5
    --api-server-address フラグは、ホステッドクラスター内の Kubernetes API 通信に使用される IP アドレスを定義します。--api-server-address フラグを設定しない場合は、管理クラスターに接続するためにログインする必要があります。
    6
    etcd ストレージクラス名を指定します (例: lvm-storageclass)。
    7
    SSH 公開鍵へのパスを指定します。デフォルトのファイルパスは ~/.ssh/id_rsa.pub です。
    8
    ホステッドクラスターの namespace を指定します。
    9
    Hosted Control Plane コンポーネントの可用性ポリシーを指定します。サポートされているオプションは SingleReplicaHighlyAvailable です。デフォルト値は HighlyAvailable です。
    10
    使用するサポート対象の OpenShift Container Platform バージョンを指定します (例: 4.19.0-multi)。非接続環境を使用している場合は、<ocp_release_image> をダイジェストイメージに置き換えます。OpenShift Container Platform リリースイメージダイジェストを抽出するには、リリースイメージダイジェストの展開を参照してください。
    11
    ノードプールのレプリカ数を指定します (例: 3)。同じ数のレプリカを作成するには、レプリカ数を 0 以上に指定する必要があります。それ以外の場合、ノードプールは作成されません。
    12
    --ssh-key フラグの後に、SSH キーへのパスを指定します(例: user/.ssh/id_rsa )。
  3. サービス公開ストラテジーを設定します。デフォルトでは、ノードポートは追加のインフラストラクチャーなしで常に利用できるため、ホステッドクラスターは NodePort サービス公開ストラテジーを使用します。ただし、ロードバランサーを使用するようにサービス公開ストラテジーを設定できます。

    • デフォルトの NodePort ストラテジーを使用している場合は、管理クラスターノードではなく、ホステッドクラスターコンピュートノードを指すように DNS を設定します。詳細は、ベアメタルの DNS 設定を参照してください。
    • 実稼働環境では、証明書の処理と自動 DNS 解決を提供するため、LoadBalancer ストラテジーを使用します。サービス公開ストラテジー LoadBalancer を変更するには、ホストされたクラスター設定ファイルでサービス公開ストラテジーの詳細を編集します。

      ...
      spec:
        services:
        - service: APIServer
          servicePublishingStrategy:
            type: LoadBalancer 
      1
      
        - service: Ignition
          servicePublishingStrategy:
            type: Route
        - service: Konnectivity
          servicePublishingStrategy:
            type: Route
        - service: OAuthServer
          servicePublishingStrategy:
            type: Route
        - service: OIDC
          servicePublishingStrategy:
            type: Route
        sshKey:
          name: <ssh_key>
      ...
      Copy to Clipboard Toggle word wrap
      1
      LoadBalancer を API サーバータイプとして指定します。その他すべてのサービスについては、Route をタイプとして指定します。
  4. 次のコマンドを入力して、ホストされたクラスター設定ファイルに変更を適用します。

    $ oc apply -f hosted_cluster_config.yaml
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを入力して、ホステッドクラスター、ノードプール、および Pod の作成を監視します。

    $ oc get hostedcluster \
      <hosted_cluster_namespace> -n \
      <hosted_cluster_namespace> -o \
      jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
    Copy to Clipboard Toggle word wrap
    $ oc get nodepool \
      <hosted_cluster_namespace> -n \
      <hosted_cluster_namespace> -o \
      jsonpath='{.status.conditions[?(@.status=="False")]}' | jq .
    Copy to Clipboard Toggle word wrap
    $ oc get pods -n <hosted_cluster_namespace>
    Copy to Clipboard Toggle word wrap
  6. ホストされたクラスターの準備ができていることを確認します。クラスターは、ステータスが Available: True の場合、ノードプールのステータスに AllMachinesReady: True と表示され、すべてのクラスター Operator が正常です。
  7. ホストされたクラスターに MetalLB をインストールします。

    1. 次のコマンドを入力して、ホステッドクラスターから kubeconfig ファイルを抽出し、ホステッドクラスターアクセス用の環境変数を設定します。

      $ oc get secret \
        <hosted_cluster_namespace>-admin-kubeconfig \
        -n <hosted_cluster_namespace> \
        -o jsonpath='{.data.kubeconfig}' \
        | base64 -d > \
        kubeconfig-<hosted_cluster_namespace>.yaml
      Copy to Clipboard Toggle word wrap
      $ export KUBECONFIG="/path/to/kubeconfig-<hosted_cluster_namespace>.yaml"
      Copy to Clipboard Toggle word wrap
    2. install-metallb-operator.yaml ファイルを作成して MetalLB Operator をインストールします。

      apiVersion: v1
      kind: Namespace
      metadata:
        name: metallb-system
      ---
      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: metallb-operator
        namespace: metallb-system
      ---
      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: metallb-operator
        namespace: metallb-system
      spec:
        channel: "stable"
        name: metallb-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace
        installPlanApproval: Automatic
      Copy to Clipboard Toggle word wrap
    3. 以下のコマンドを入力してファイルを適用します。

      $ oc apply -f install-metallb-operator.yaml
      Copy to Clipboard Toggle word wrap
    4. deploy-metallb-ipaddresspool.yaml ファイルを作成して、MetalLB IP アドレスプールを設定します。

      apiVersion: metallb.io/v1beta1
      kind: IPAddressPool
      metadata:
        name: metallb
        namespace: metallb-system
      spec:
        autoAssign: true
        addresses:
        - 10.11.176.71-10.11.176.75
      ---
      apiVersion: metallb.io/v1beta1
      kind: L2Advertisement
      metadata:
        name: l2advertisement
        namespace: metallb-system
      spec:
        ipAddressPools:
        - metallb
      Copy to Clipboard Toggle word wrap
    5. 次のコマンドを入力して設定を適用します。

      $ oc apply -f deploy-metallb-ipaddresspool.yaml
      Copy to Clipboard Toggle word wrap
    6. Operator のステータス、IP アドレスプール、および L2 advertise をチェックして、MetalLB がインストールされていることを確認します。次のコマンドを入力します。

      $ oc get pods -n metallb-system
      Copy to Clipboard Toggle word wrap
      $ oc get ipaddresspool -n metallb-system
      Copy to Clipboard Toggle word wrap
      $ oc get l2advertisement -n metallb-system
      Copy to Clipboard Toggle word wrap
  8. Ingress のロードバランサーを設定します。

    1. ingress-loadbalancer.yaml ファイルを作成します。

      apiVersion: v1
      kind: Service
      metadata:
        annotations:
          metallb.universe.tf/address-pool: metallb
        name: metallb-ingress
        namespace: openshift-ingress
      spec:
        ports:
          - name: http
            protocol: TCP
            port: 80
            targetPort: 80
          - name: https
            protocol: TCP
            port: 443
            targetPort: 443
        selector:
          ingresscontroller.operator.openshift.io/deployment-ingresscontroller: default
        type: LoadBalancer
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを入力して設定を適用します。

      $ oc apply -f ingress-loadbalancer.yaml
      Copy to Clipboard Toggle word wrap
    3. 次のコマンドを入力して、ロードバランサーサービスが期待どおりに機能することを確認します。

      $ oc get svc metallb-ingress -n openshift-ingress
      Copy to Clipboard Toggle word wrap

      出力例

      NAME              TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)                      AGE
      metallb-ingress   LoadBalancer   172.31.127.129   10.11.176.71   80:30961/TCP,443:32090/TCP   16h
      Copy to Clipboard Toggle word wrap

  9. ロードバランサーと連携するように DNS を設定します。

    1. *. apps.<hosted_cluster_namespace>.<base_domain> ワイルドカード DNS レコードをロードバランサーの IP アドレスにポイントして、apps ドメイン の DNS を設定します。
    2. 次のコマンドを入力して、DNS 解決を確認します。

      $ nslookup console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain> <load_balancer_ip_address>
      Copy to Clipboard Toggle word wrap

      出力例

      Server:         10.11.176.1
      Address:        10.11.176.1#53
      
      Name:   console-openshift-console.apps.my-hosted-cluster.sample-base-domain.com
      Address: 10.11.176.71
      Copy to Clipboard Toggle word wrap

検証

  1. 次のコマンドを入力して、クラスター Operator を確認します。

    $ oc get clusteroperators
    Copy to Clipboard Toggle word wrap

    すべての Operator に AVAILABLE: TruePROGRESSING: False、および DEGRADED: False が表示されていることを確認します。

  2. 次のコマンドを入力してノードを確認します。

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    すべてのノードのステータスが READY であることを確認します。

  3. Web ブラウザーに以下の URL を入力して、コンソールへのアクセスをテストします。

    https://console-openshift-console.apps.<hosted_cluster_namespace>.<base_domain>
    Copy to Clipboard Toggle word wrap

4.2.4.2. コンソールを使用してベアメタル上にホステッドクラスターを作成する

コンソールを使用してホステッドクラスターを作成するには、次の手順を実行します。

手順

  1. OpenShift Container Platform Web コンソールを開き、管理者の認証情報を入力してログインします。コンソールを開く方法は、Web コンソールへのアクセスを参照してください。
  2. コンソールヘッダーで、All Clusters が選択されていることを確認します。
  3. Infrastructure Clusters をクリックします。
  4. Create cluster Host inventory Hosted control plane をクリックします。

    Create cluster ページが表示されます。

  5. Create cluster ページでプロンプトに従い、クラスター、ノードプール、ネットワーク、および自動化に関する詳細を入力します。

    注記

    クラスターの詳細を入力する際には、次のヒントが役立つ場合があります。

    • 事前定義された値を使用してコンソールのフィールドに自動的に値を入力する場合は、ホストインベントリーの認証情報を作成できます。詳細は、「オンプレミス環境の認証情報の作成」を参照してください。
    • Cluster details ページのプルシークレットは、OpenShift Container Platform リソースへのアクセスに使用する OpenShift Container Platform プルシークレットです。ホストインベントリー認証情報を選択した場合は、プルシークレットが自動的に入力されます。
    • Node pools ページでは、namespace にノードプールのホストが含まれます。コンソールを使用してホストインベントリーを作成した場合、コンソールは専用の namespace を作成します。
    • Networking ページで、API サーバー公開ストラテジーを選択します。ホステッドクラスターの API サーバーは、既存のロードバランサーを使用するか、NodePort タイプのサービスとして公開できます。API サーバーに到達できる宛先を指す api.<hosted_cluster_name>.<base_domain> 設定の DNS エントリーが存在する必要があります。このエントリーとして、管理クラスター内のノードの 1 つを指すレコード、または受信トラフィックを Ingress Pod にリダイレクトするロードバランサーを指すレコードを指定できます。
  6. エントリーを確認し、Create をクリックします。

    Hosted cluster ビューが表示されます。

  7. Hosted cluster ビューでホステッドクラスターのデプロイメントを監視します。
  8. ホステッドクラスターに関する情報が表示されない場合は、All Clusters が選択されていることを確認し、クラスター名をクリックします。
  9. コントロールプレーンコンポーネントの準備が整うまで待ちます。このプロセスには数分かかる場合があります。
  10. ノードプールのステータスを表示するには、NodePool セクションまでスクロールします。ノードをインストールするプロセスには約 10 分かかります。Nodes をクリックして、ノードがホステッドクラスターに参加したかどうかを確認することもできます。

次のステップ

4.2.4.3. ミラーレジストリーを使用してベアメタル上にホステッドクラスターを作成する

ミラーレジストリーを使用して、hcp create cluster コマンドで --image-content-sources フラグを指定して、ベアメタル上にホステッドクラスターを作成できます。

手順

  1. YAML ファイルを作成して、イメージコンテンツソースポリシー (ICSP) を定義します。以下の例を参照してください。

    - mirrors:
      - brew.registry.redhat.io
      source: registry.redhat.io
    - mirrors:
      - brew.registry.redhat.io
      source: registry.stage.redhat.io
    - mirrors:
      - brew.registry.redhat.io
      source: registry-proxy.engineering.redhat.com
    Copy to Clipboard Toggle word wrap
  2. ファイルを icsp.yaml として保存します。このファイルにはミラーレジストリーが含まれます。
  3. ミラーレジストリーを使用してホステッドクラスターを作成するには、次のコマンドを実行します。

    $ hcp create cluster agent \
        --name=<hosted_cluster_name> \
    1
    
        --pull-secret=<path_to_pull_secret> \
    2
    
        --agent-namespace=<hosted_control_plane_namespace> \
    3
    
        --base-domain=<basedomain> \
    4
    
        --api-server-address=api.<hosted_cluster_name>.<basedomain> \
    5
    
        --image-content-sources icsp.yaml  \
    6
    
        --ssh-key  <path_to_ssh_key> \
    7
    
        --namespace <hosted_cluster_namespace> \
    8
    
        --release-image=quay.io/openshift-release-dev/ocp-release:<ocp_release_image> 
    9
    Copy to Clipboard Toggle word wrap
    1
    ホステッドクラスターの名前を指定します (例: example)。
    2
    プルシークレットへのパスを指定します (例: /user/name/pullsecret)。
    3
    Hosted Control Plane namespace を指定します (例: clusters-example)。oc get agent -n <hosted-control-plane-namespace> コマンドを使用して、この namespace でエージェントが使用可能であることを確認します。
    4
    ベースドメインを指定します (例: krnl.es)。
    5
    --api-server-address フラグは、ホステッドクラスター内の Kubernetes API 通信に使用される IP アドレスを定義します。--api-server-address フラグを設定しない場合は、管理クラスターに接続するためにログインする必要があります。
    6
    ICSP およびミラーレジストリーを定義する icsp.yaml ファイルを指定します。
    7
    SSH 公開鍵へのパスを指定します。デフォルトのファイルパスは ~/.ssh/id_rsa.pub です。
    8
    ホステッドクラスターの namespace を指定します。
    9
    使用するサポート対象の OpenShift Container Platform バージョンを指定します (例: 4.19.0-multi)。非接続環境を使用している場合は、<ocp_release_image> をダイジェストイメージに置き換えます。OpenShift Container Platform リリースイメージダイジェストを抽出するには、「OpenShift Container Platform リリースイメージダイジェストの抽出」を参照してください。

次のステップ

4.2.5. ホステッドクラスター作成の確認

デプロイメントプロセスが完了したら、ホステッドクラスターが正常に作成されたことを確認できます。ホステッドクラスターの作成から数分後に、次の手順に従います。

手順

  1. 次の extract コマンドを入力して、新しいホステッドクラスターの kubeconfig を取得します。

    $ oc extract -n <hosted-control-plane-namespace> secret/admin-kubeconfig \
      --to=- > kubeconfig-<hosted-cluster-name>
    Copy to Clipboard Toggle word wrap
  2. kubeconfig を使用して、ホステッドクラスターのクラスター Operator を表示します。以下のコマンドを入力します。

    $ oc get co --kubeconfig=kubeconfig-<hosted-cluster-name>
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
    console                                    4.10.26   True        False         False      2m38s
    dns                                        4.10.26   True        False         False      2m52s
    image-registry                             4.10.26   True        False         False      2m8s
    ingress                                    4.10.26   True        False         False      22m
    Copy to Clipboard Toggle word wrap

  3. 次のコマンドを入力して、ホステッドクラスター上で実行中の Pod を表示することもできます。

    $ oc get pods -A --kubeconfig=kubeconfig-<hosted-cluster-name>
    Copy to Clipboard Toggle word wrap

    出力例

    NAMESPACE                                          NAME                                                      READY   STATUS             RESTARTS        AGE
    kube-system                                        konnectivity-agent-khlqv                                  0/1     Running            0               3m52s
    openshift-cluster-node-tuning-operator             tuned-dhw5p                                               1/1     Running            0               109s
    openshift-cluster-storage-operator                 cluster-storage-operator-5f784969f5-vwzgz                 1/1     Running            1 (113s ago)    20m
    openshift-cluster-storage-operator                 csi-snapshot-controller-6b7687b7d9-7nrfw                  1/1     Running            0               3m8s
    openshift-console                                  console-5cbf6c7969-6gk6z                                  1/1     Running            0               119s
    openshift-console                                  downloads-7bcd756565-6wj5j                                1/1     Running            0               4m3s
    openshift-dns-operator                             dns-operator-77d755cd8c-xjfbn                             2/2     Running            0               21m
    openshift-dns                                      dns-default-kfqnh                                         2/2     Running            0               113s
    Copy to Clipboard Toggle word wrap

4.2.6. ホストされたクラスターでのカスタム API サーバー証明書の設定

API サーバーのカスタム証明書を設定するには、HostedCluster 設定の spec.configuration.apiServer セクションに証明書の詳細を指定します。

カスタム証明書は、Day-1 または day-2 操作のいずれかで設定できます。ただし、サービス公開ストラテジーは、ホステッドクラスターの作成時に設定した後に不変であるため、設定する予定の Kubernetes API サーバーのホスト名を知っている必要があります。

前提条件

  • 管理クラスターにカスタム証明書が含まれる Kubernetes シークレットを作成している。シークレットには次のキーが含まれます。

    • tls.crt: 証明書
    • tls.key: 秘密鍵
  • HostedCluster 設定にロードバランサーを使用するサービス公開ストラテジーが含まれている場合は、証明書の Subject Alternative Names (SAN)が内部 API エンドポイント(api-int)と競合しないようにしてください。内部 API エンドポイントは、プラットフォームによって自動的に作成され、管理されます。カスタム証明書と内部 API エンドポイントの両方で同じホスト名を使用すると、ルーティングの競合が発生する可能性があります。このルールの唯一の例外は、Private または PublicAndPrivate 設定で AWS をプロバイダーとして使用する場合です。この場合、SAN 競合はプラットフォームによって管理されます。
  • 証明書は外部 API エンドポイントに対して有効である必要があります。
  • 証明書の有効期間は、クラスターの予想されるライフサイクルと一致します。

手順

  1. 次のコマンドを入力して、カスタム証明書でシークレットを作成します。

    $ oc create secret tls sample-hosted-kas-custom-cert \
      --cert=path/to/cert.crt \
      --key=path/to/key.key \
      -n <hosted_cluster_namespace>
    Copy to Clipboard Toggle word wrap
  2. 以下の例のように、カスタム証明書の詳細を使用して HostedCluster 設定を更新します。

    spec:
      configuration:
        apiServer:
          servingCerts:
            namedCertificates:
            - names: 
    1
    
              - api-custom-cert-sample-hosted.sample-hosted.example.com
              servingCertificate: 
    2
    
                name: sample-hosted-kas-custom-cert
    Copy to Clipboard Toggle word wrap
    1
    証明書が有効な DNS 名のリスト。
    2
    カスタム証明書を含むシークレットの名前。
  3. 次のコマンドを入力して、HostedCluster 設定に変更を適用します。

    $ oc apply -f <hosted_cluster_config>.yaml
    Copy to Clipboard Toggle word wrap

検証

  • API サーバー Pod をチェックして、新しい証明書がマウントされていることを確認します。
  • カスタムドメイン名を使用して、API サーバーへの接続をテストします。
  • ブラウザーで証明書の詳細を確認するか、openssl などのツールを使用して確認します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat