設定


Red Hat build of MicroShift 4.16

MicroShift の設定

Red Hat OpenShift Documentation Team

概要

このドキュメントでは、MicroShift を設定する手順を説明します。

第1章 MicroShift の config.yaml の使用

YAML ファイルは、設定およびパラメーターを使用して MicroShift インスタンスをカスタマイズします。

注記

kustomize マニフェスト以外のツールを使用し、MicroShif API を介して設定を変更したり、アプリケーションをデプロイしたりする場合は、greenboot ヘルスチェックが完了するまで待つ必要があります。これにより、greenboot が rpm-ostree システムを以前の状態にロールバックしても、変更が失われなくなります。

1.1. デフォルトの設定

config.yaml ファイルを作成しない場合は、デフォルト値が使用されます。次の例は、デフォルトの設定を示しています。

  • デフォルト値を確認するには、次のコマンドを実行します。

    $ microshift show-config

    YAML 形式でのデフォルト値の出力例

    apiServer:
      advertiseAddress: 10.44.0.0/32 1
      auditLog:
        maxFileAge: 0 2
        maxFileSize: 200 3
        maxFiles: 10 4
        profile: Default 5
      namedCertificates:
        - certPath: ""
          keyPath: ""
          names:
            - ""
      subjectAltNames: [] 6
    debugging:
      logLevel: "Normal" 7
    dns:
      baseDomain: microshift.example.com 8
    etcd:
      memoryLimitMB: 0 9
    ingress:
      listenAddress:
        - "" 10
      ports: 11
        http: 80
        https: 443
      routeAdmissionPolicy:
        namespaceOwnership: InterNamespaceAllowed 12
      status: Managed 13
    manifests: 14
      kustomizePaths:
        - /usr/lib/microshift/manifests
        - /usr/lib/microshift/manifests.d/*
        - /etc/microshift/manifests
        - /etc/microshift/manifests.d/*
    network:
      clusterNetwork:
        - 10.42.0.0/16 15
      serviceNetwork:
        - 10.43.0.0/16 16
      serviceNodePortRange: 30000-32767 17
    node:
      hostnameOverride: "" 18
      nodeIP: "" 19

    1
    API サーバーがクラスターのメンバーにアドバタイズされる IP アドレスを指定する文字列。デフォルト値は、サービスネットワークのアドレスに基づいて計算されます。
    2
    ログファイルが自動的に削除されるまでの保存期間。maxFileAge パラメーターのデフォルト値 0 に設定すると、ログファイルが経過時間をベースに削除されなくなります。この値は設定可能です。
    3
    デフォルトでは、audit.log ファイルが maxFileSize の制限に達すると、audit.log ファイルがローテーションされ、MicroShift は新しい audit.log ファイルへの書き込みを開始します。この値は設定可能です。
    4
    保存されるログファイルの合計数。デフォルトでは、MicroShift は 10 個のログファイルを保持します。余分なファイルが作成されると、最も古いものが削除されます。この値は設定可能です。
    5
    読み取りおよび書き込み要求のメタデータのみをログに記録します。OAuth アクセストークン要求を除く要求の本文はログに記録されません。このフィールドを指定しない場合は、Default プロファイルが使用されます。
    6
    API サーバー証明書のサブジェクト代替名 (SAN)。
    7
    ログの詳細レベル。このフィールドの有効な値は、NormalDebugTrace、または TraceAll です。
    8
    デフォルトでは、etcd はシステムの負荷を処理するために必要な量のメモリーを使用します。ただし、メモリー制約のあるシステムでは、etcd が特定の時点で使用できるメモリーの量を制限することが望ましいか、または制限する必要がある場合があります。
    9
    クラスターのベースドメイン。管理されるすべての DNS レコードはこのベースのサブドメインです。
    10
    ingress.listenAddress の値は、デフォルトでホストのネットワーク全体に設定されます。有効な設定可能な値は、単一の IP アドレスまたは NIC 名、あるいは複数の IP アドレスと NIC 名のリストです。
    11
    デフォルトのポートが表示されます。設定可能です。両方のポートエントリーの有効な値は、1 - 65535 の範囲にある単一の一意のポートです。ports.http および ports.https フィールドの値は、同じにすることはできません。
    12
    複数の namespace のホスト名要求の処理方法を記述します。デフォルトでは、ルートが、複数の namespace においてホストが同じ名前でパスが異なる要求を許可します。有効な値は Strict および InterNamespaceAllowed です。Strict を指定すると、namespace が異なるルートが、同じホスト名を要求しなくなります。カスタマイズされた MicroShift の config.yaml で値が削除されると、InterNamespaceAllowed 値が自動的に設定されます。
    13
    デフォルトのルーターステータスは、Managed または Removed のいずれかになります。
    14
    マニフェストをロードするために使用する kustomization ファイルをスキャンするファイルシステム上の場所。パスのリストを設定すると、それらのパスのみをスキャンします。マニフェストの読み込みを無効にするには、空のリストに設定します。リスト内のエントリーは、複数のサブディレクトリーに一致する glob パターンに指定できます。
    15
    Pod IP アドレスの割り当てに使用する IP アドレスのブロック。このフィールドは、インストール後は不変です。
    16
    Kubernetes サービスの仮想 IP アドレスのブロック。サービスの IP アドレスプール。単一のエントリーがサポートされます。このフィールドは、インストール後は不変です。
    17
    NodePort タイプの Kubernetes サービスに許可されるポート範囲。指定しない場合、デフォルトの範囲の 30000-32767 が使用されます。NodePort が指定されていないサービスは、この範囲から自動的に割り当てられます。このパラメーターは、クラスターのインストール後に更新できます。
    18
    ノードの名前。デフォルト値はホスト名です。空でない場合、この文字列はホスト名ではなく、ノードを識別するために使用されます。MicroShift の初回起動後に、この不変設定を変更することはできません。
    19
    ノードの IP アドレス。デフォルト値は、デフォルトルートの IP アドレスです。

1.2. YAML 設定ファイルの使用

MicroShift は、起動時にシステム全体の /etc/microshift/ ディレクトリーで config.yaml という名前の設定ファイルがあるか確認します。ディレクトリー内に設定ファイルが存在しない場合は、組み込みのデフォルト値を使用してサービスが開始されます。

1.2.1. カスタム設定

カスタム設定を作成するには、MicroShift を起動または再起動する前に、/etc/microshift/ ディレクトリーに config.yaml ファイルを作成し、デフォルトをオーバーライドするための設定を変更する必要があります。

重要

設定を変更したら、MicroShift を再起動して有効にします。config.yaml は MicroShift 起動時の読み取り専用ファイルです。

ヒント

必要な設定をすべて一度に追加すると、システムの再起動を最小限に抑えることができます。

1.2.2. アドバタイズアドレスネットワークフラグの設定

apiserver.advertiseAddress フラグは、API サーバーをクラスターのメンバーにアドバタイズする IP アドレスを指定します。このアドレスは、クラスターから到達可能である必要があります。ここでカスタム IP アドレスを設定できますが、その IP アドレスをホストインターフェイスに追加する必要もあります。このパラメーターをカスタマイズすると、MicroShift がデフォルトの IP アドレスを br-ex ネットワークインターフェイスに追加しなくなります。

重要

advertiseAddress IP アドレスをカスタマイズする場合は、ホストインターフェイスに IP アドレスを追加して、MicroShift の起動時にクラスターからその IP アドレスに到達できることを確認してください。

設定されていない場合、デフォルト値はサービスネットワークのすぐ後のサブネットに設定されます。たとえば、サービスネットワークが 10.43.0.0/16 の場合、advertiseAddress は、10.44.0.0/32 に設定されます。

1.2.3. NodePort サービスのポート範囲の拡張

serviceNodePortRange 設定では、NodePort サービスで使用できるポート範囲が拡張します。このオプションは、30000-32767 範囲内で特定の標準ポートを公開する必要がある場合に役立ちます。たとえば、クライアントデバイスは別のポートを使用できないため、デバイスはネットワーク上で 1883/tcp MQ Telemetry Transport (MQTT) ポートを公開する必要があります。

重要

NodePort がシステムポートと重複し、システムまたは MicroShift の誤動作を引き起こす可能性があります。

NodePort サービス範囲を設定するときは、次の点を考慮してください。

  • nodePort を明示的に選択せずに NodePort サービスを作成しないでください。明示的な nodePort が指定されていない場合、このポートは kube-apiserver によってランダムに割り当てられるため、予測できません。
  • デバイスの HostNetwork で公開するシステムサービスポート、MicroShift ポート、またはその他のサービスに対して NodePort サービスを作成しないでください。
  • 表 1 は、ポート範囲の拡張時に避けるべきポートを示しています。

    表1.1 回避するポート
    ポート説明

    22/tcp

    SSH ポート

    80/tcp

    OpenShift Router HTTP エンドポイント

    443/tcp

    OpenShift Router HTTPS エンドポイント

    1936/tcp

    現在公開されていない openshift-router のメトリクスサービス

    2379/tcp

    etcd ポート

    2380/tcp

    etcd ポート

    6443

    kubernetes API

    8445/tcp

    openshift-route-controller-manager

    9537/tcp

    cri-o metrics

    10250/tcp

    kubelet

    10248/tcp

    kubelet healthz ポート

    10259/tcp

    kube スケジューラー

1.3. 関連情報

第2章 kubeconfig を使用したクラスターアクセス

MicroShift デプロイメントで kubeconfig ファイルがどのように使用されるかを説明します。CLI ツールは、kubeconfig ファイルを使用してクラスターの API サーバーと通信します。これらのファイルには、クラスターの詳細、IP アドレス、および認証に必要なその他の情報が含まれています。

2.1. クラスターアクセスを設定するための Kubeconfig ファイル

MicroShift で使用される kubeconfig ファイルの 2 つのカテゴリーは、ローカルアクセスとリモートアクセスです。MicroShift が起動するたびに、API サーバーへのローカルおよびリモートアクセスのための kubeconfig ファイルのセットが生成されます。これらのファイルは、既存の設定情報を使用して /var/lib/microshift/resources/kubeadmin/ ディレクトリーに生成されます。

各アクセスタイプには、異なる認証局 (CA) によって署名された異なる認証証明書が必要です。複数の kubeconfig ファイルを生成することで、このニーズに対応できます。

それぞれの場合に必要なアクセスタイプに適切な kubeconfig ファイルを使用して、認証の詳細を提供できます。MicroShift kubeconfig ファイルの内容は、デフォルトの組み込み値または config.yaml ファイルによって決まります。

注記

クラスターにアクセスするには、kubeconfig ファイルが存在する必要があります。値は、組み込みのデフォルト値、または config.yaml (作成されている場合) から適用されます。

kubeconfig ファイルの内容の例

/var/lib/microshift/resources/kubeadmin/
├── kubeconfig 1
├── alt-name-1 2
│   └── kubeconfig
├── 1.2.3.4 3
│   └── kubeconfig
└── microshift-rhel9 4
    └── kubeconfig

1
ローカルホスト名。ホストのメイン IP アドレスは常にデフォルトです。
2
API サーバー証明書のサブジェクト代替名 (SAN)。
3
DNS 名。
4
MicroShift のホスト名。

2.2. ローカルアクセスの kubeconfig ファイル

ローカルアクセスの kubeconfig ファイルは /var/lib/microshift/resources/kubeadmin/kubeconfig に書き込まれます。この kubeconfig ファイルは、localhost を使用した API サーバーへのアクセスを提供します。クラスターをローカルに接続する場合は、このファイルを選択します。

ローカルアクセス用の kubeconfig の内容例

clusters:
- cluster:
    certificate-authority-data: <base64 CA>
    server: https://localhost:6443

localhostkubeconfig ファイルは、同じホストから API サーバーに接続するクライアントからのみ使用できます。ファイル内の証明書はリモート接続では機能しません。

2.2.1. MicroShift クラスターへのローカルアクセス

以下の手順に従って、kubeconfig ファイルを使用して MicroShift クラスターをローカルでアクセスします。

前提条件

  • oc バイナリーがインストールされている。

手順

  1. オプション: Red Hat Enterprise Linux (RHEL) マシンに ~/.kube/ フォルダーがない場合は、次のコマンドを実行してフォルダーを作成します。

    $ mkdir -p ~/.kube/
  2. 次のコマンドを実行して、生成されたローカルアクセス kubeconfig ファイルを ~/.kube/ ディレクトリーにコピーします。

    $ sudo cat /var/lib/microshift/resources/kubeadmin/kubeconfig > ~/.kube/config
  3. 次のコマンドを実行して、~/.kube/config ファイルの権限を更新します。

    $ chmod go-r ~/.kube/config

検証

  • 次のコマンドを入力して、MicroShift が実行されていることを確認します。

    $ oc get all -A

2.3. リモートアクセスの kubeconfig ファイル

MicroShift クラスターが外部ソースから API サーバーに接続する場合は、SAN フィールド内のすべての代替名を持つ証明書が検証に使用されます。MicroShift は、hostname 値を使用して外部アクセス用のデフォルトの kubeconfig を生成します。デフォルトは、デフォルトの kubeconfig ファイルの <node.hostnameOverride><node.nodeIP>、および api.<dns.baseDomain> パラメーター値に設定されます。

/var/lib/microshift/resources/kubeadmin/<hostname>/kubeconfig ファイルは、マシンの hostname、またはオプションが設定されている場合は node.hostnameOverride を使用して、API サーバーにアクセスします。kubeconfig ファイルの CA は、外部からアクセスされたときに証明書を検証できます。

リモートアクセス用の kubeconfig デフォルトファイルの内容例

clusters:
- cluster:
    certificate-authority-data: <base64 CA>
    server: https://microshift-rhel9:6443

2.3.1. リモートアクセスのカスタマイズ

異なる IP アドレスまたはホスト名でクラスターにアクセスするために、複数のリモートアクセス kubeconfig ファイル値を生成できます。apiServer.subjectAltNames パラメーターのエントリーごとに追加の kubeconfig ファイルが生成されます。IP 接続中にホストからリモートアクセス kubeconfig ファイルをコピーし、それを使用して他のワークステーションから API サーバーにアクセスできます。

2.4. リモートアクセス用の追加の kubeconfig ファイルの生成

デフォルトのリモートアクセスファイルが提供するものより多くのホスト名または IP アドレスが必要な場合は、追加の kubeconfig ファイルを生成して使用できます。

重要

設定の変更を実装するには、MicroShift を再起動する必要があります。

前提条件

  • MicroShift の config.yaml が作成されている。

手順

  1. オプション: config.yaml の内容を表示できます。以下のコマンドを実行します。

    $ cat /etc/microshift/config.yaml
  2. オプション: リモートアクセス kubeconfig ファイルの内容を表示できます。以下のコマンドを実行します。

    $ cat /var/lib/microshift/resources/kubeadmin/<hostname>/kubeconfig
    重要

    追加のリモートアクセス kubeconfig ファイルには、Red Hat build of MicroShift config.yaml ファイルにリストされているサーバー名のいずれかを含める必要があります。追加の kubeconfig ファイルも検証に同じ CA を使用する必要があります。

  3. 追加の DNS 名、SAN、または外部 IP アドレス用に追加の kubeconfig ファイルを生成するには、必要なエントリーを apiServer.subjectAltNames フィールドに追加します。次の例では、使用される DNS 名は alt-name-1、IP アドレスは 1.2.3.4 です。

    追加の認証値を含む config.yaml の例

    dns:
      baseDomain: example.com
    node:
      hostnameOverride: "microshift-rhel9" 1
      nodeIP: 10.0.0.1
    apiServer:
      subjectAltNames:
      - alt-name-1 2
      - 1.2.3.4 3

    1
    ホスト名
    2
    DNS 名
    3
    IP アドレスまたは範囲
  4. MicroShift を再起動して設定の変更を適用し、次のコマンドを実行して必要な kubeconfig ファイルを自動生成します。

    $ sudo systemctl restart microshift
  5. 追加のリモートアクセス kubeconfig ファイルの内容を確認するには、config.yaml にリストされている名前または IP アドレスを cat コマンドに挿入します。たとえば、次のコマンド例では alt-name-1 が使用されています。

    $ cat /var/lib/microshift/resources/kubeadmin/alt-name-1/kubeconfig
  6. クラスターの接続に使用する SAN または IP アドレスを含む、使用する kubeconfig ファイルを選択します。この例では、cluster.server フィールドに `alt-name-1` を含む kubeconfig が正しいファイルです。

    追加の kubeconfig ファイルの内容の例

    clusters:
    - cluster:
        certificate-authority-data: <base64 CA>
        server: https://alt-name-1:6443 1

    1
    /var/lib/microshift/resources/kubeadmin/alt-name-1/kubeconfig ファイルの値は、apiServer.subjectAltNames 設定値からのものです。
注記

これらのパラメーターはすべて、API サーバーの外部提供証明書に共通名 (CN) およびサブジェクト代替名 (SAN) として含まれています。

2.4.1. MicroShift クラスターへのリモートアクセス用にファイアウォールを開く

リモートユーザーが MicroShift クラスターにアクセスできるように、次の手順を使用してファイアウォールを開きます。この手順は、ワークステーションユーザーがリモートでクラスターにアクセスする前に完了する必要があります。

この手順では、user@microshift は、MicroShift ホストマシン上のユーザーであり、別のワークステーション上のリモートユーザーがアクセスできるようにそのマシンをセットアップする責任があります。

前提条件

  • oc バイナリーがインストールされている。
  • クラスター管理者の権限がある。

手順

  • MicroShift ホストの user@microshift として、次のコマンドを実行して、Kubernetes API サーバー (6443/tcp) のファイアウォールポートを開きます。

    [user@microshift]$ sudo firewall-cmd --permanent --zone=public --add-port=6443/tcp && sudo firewall-cmd --reload

検証

  • user@microshift として次のコマンドを実行して、MicroShift が入力されていることを確認します。

    [user@microshift]$ oc get all -A

2.4.2. MicroShift クラスターへのリモートアクセス

以下の手順に従って、kubeconfig ファイルを使用してリモートロケーションから MicroShift クラスターにアクセスします。

user@workstation ログインは、ホストマシンにリモートからアクセスするのに使用されます。手順の <user> 値は、user@workstation が MicroShift ホストにログインするユーザーの名前になります。

前提条件

  • oc バイナリーがインストールされている。
  • user@microshift は、ローカルホストからファイアウォールを開いている。

手順

  1. user@workstation として、Red Hat Enterprise Linux (RHEL) マシンに ~/.kube/ フォルダーがない場合は、次のコマンドを実行してフォルダーを作成します。

    [user@workstation]$ mkdir -p ~/.kube/
  2. user@workstation として、次のコマンドを実行して、MicroShift ホストのホスト名の変数を設定します。

    [user@workstation]$ MICROSHIFT_MACHINE=<name or IP address of MicroShift machine>
  3. user@workstation として、次のコマンドを実行して、MicroShift を実行している RHEL マシンからローカルマシンに接続するホスト名または IP アドレスを含む生成された kubeconfig ファイルをコピーします。

    [user@workstation]$ ssh <user>@$MICROSHIFT_MACHINE "sudo cat /var/lib/microshift/resources/kubeadmin/$MICROSHIFT_MACHINE/kubeconfig" > ~/.kube/config
    注記

    この手順の kubeconfig ファイルを生成するには、リモートアクセス用の kubeconfig ファイルの追加生成 を参照してください。

  4. user@workstation として、次のコマンドを実行して ~/.kube/config ファイルのパーミッションを更新します。

    $ chmod go-r ~/.kube/config

検証

  • user@workstation として、次のコマンドを入力して、MicroShift が実行されていることを確認します。

    [user@workstation]$ oc get all -A

第3章 カスタム認証局の設定

MicroShift サービスでは、カスタム証明局 (CA) を使用して接続を暗号化できます。

3.1. MicroShift でのカスタム認証局の仕組み

デフォルトの API サーバー証明書は、内部の MicroShift クラスター認証局 (CA) によって発行されます。デフォルトでは、クラスター外部のクライアントは API サーバー証明書を検証できません。この証明書は、クライアントが信頼するカスタム CA によって外部的に発行されたカスタムサーバー証明書に置き換えることができます。次の手順は、MicroShift のワークフローを示しています。

  1. 証明書とキーをホストオペレーティングシステムの優先ディレクトリーにコピーします。ファイルに root のみがアクセスできることを確認してください。
  2. MicroShift /etc/microshift/config.yaml 設定ファイルで証明書名と新しい完全修飾ドメイン名 (FQDN) を指定して、各カスタム CA の MicroShift 設定を更新します。

    各証明書設定には、以下の値を含めることができます。

    • 証明書ファイルの場所は必須の値です。
    • API サーバーの DNS と IP アドレスまたは IP アドレス範囲を含む単一の共通名。

      ヒント

      ほとんどの場合、MicroShift は、指定した IP アドレスまたは範囲を含むカスタム CA の新しい kubeconfig を生成します。例外は、IP アドレスにワイルドカードが指定されている場合です。この場合、MicroShift はサーバーのパブリック IP アドレスを使用して kubeconfig を生成します。ワイルドカードを使用するには、特定の詳細で kubeconfig ファイルを更新する必要があります。

    • API サーバーの DNS と IP アドレス、またはワイルドカード証明書を含む複数のサブジェクト別名 (SAN)。
    • 各証明書に追加の DNS 名を指定できます。
  3. MicroShift サービスが再起動した後、生成された kubeconfig ファイルをクライアントにコピーする必要があります。
  4. クライアントシステムで追加の CA を設定します。たとえば、Red Hat Enterprise Linux (RHEL) トラストストア内の CA バンドルを更新できます。
  5. 証明書と鍵は、ホスト上の指定されたファイルの場所から読み取られます。設定のテストおよび検証はクライアントから行われます。
  6. 外部サーバー証明書は自動的に更新されません。外部証明書を手動でローテーションする必要があります。
注記

検証に失敗した場合、MicroShift サービスはカスタム設定をスキップし、デフォルトの証明書を使用して起動します。サービスを中断せずに継続することが最優先事項です。MicroShift は、サービスの開始時にエラーを記録します。一般的なエラーには、証明書の期限切れ、ファイルの欠落、IP アドレスの誤りなどがあります。

重要

カスタムサーバー証明書は、ホストオペレーティングシステムの信頼ルートに設定された CA データに対して検証する必要があります。詳細は、システム全体のトラストストア を参照してください。

3.2. カスタム認証局の設定

カスタム証明局 (CA) を使用して外部で生成された証明書とドメイン名を設定するには、それらを MicroShift の /etc/microshift/config.yaml 設定ファイルに追加します。ホストオペレーティングシステムの信頼ルートも設定する必要があります。

注記

外部で生成された kubeconfig ファイルは /var/lib/microshift/resources/kubeadmin/<hostname>/kubeconfig ディレクトリーに作成されます。外部で生成された設定に加えて localhost を使用する必要がある場合は、元の kubeconfig ファイルをデフォルトの場所に保持します。localhost kubeconfig ファイルは、自己署名認証局を使用します。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • クラスター管理者のロールを持つユーザーとしてクラスターにアクセスできる。
  • 認証局がカスタム証明書を発行している。
  • MicroShift の /etc/microshift/config.yaml 設定ファイルが存在する。

手順

  1. 追加するカスタム証明書を MicroShift ホストの信頼ルートにコピーします。証明書と秘密鍵に MicroShift のみがアクセス可能であることを確認します。
  2. 必要なカスタム CA ごとに、次の例を使用して、namedCertificates という apiServer セクションを /etc/microshift/config.yaml MicroShift 設定ファイルに追加します。

    apiServer:
      namedCertificates:
       - certPath: ~/certs/api_fqdn_1.crt 1
         keyPath:  ~/certs/api_fqdn_1.key 2
       - certPath: ~/certs/api_fqdn_2.crt
         keyPath:  ~/certs/api_fqdn_2.key
         names: 3
         - api_fqdn_1
         - *.apps.external.com
    1
    証明書の完全パスを追加します。
    2
    証明書キーへの完全パスを追加します。
    3
    オプション: 明示的な DNS 名のリストを追加します。ワイルドカードは、先頭に指定できます。名前が指定されていない場合は、暗黙名が証明書から抽出されます。
  3. 次のコマンドを実行して、MicroShift を再起動し、証明書を適用します。

    $ systemctl microshift restart
  4. システムが再起動してカスタムサーバーが適用されるまで数分間待ちます。新しい kubeconfig ファイルは /var/lib/microshift/resources/kubeadmin/ ディレクトリーに生成されます。
  5. kubeconfig ファイルをクライアントにコピーします。IP アドレスにワイルドカードを指定した場合は、kubeconfig を更新してサーバーのパブリック IP アドレスを削除し、その IP アドレスを使用する特定のワイルドカード範囲に置き換えます。
  6. クライアントからは、次の手順を実行します。

    1. 次のコマンドを実行して、使用する kubeconfig を指定します。

      $ export KUBECONFIG=~/custom-kubeconfigs/kubeconfig 1
      1
      コピーした kubeconfig ファイルの場所をパスとして使用します。
    2. 次のコマンドを使用して、証明書が適用されていることを確認します。

      $ oc --certificate-authority ~/certs/ca.ca get node

      出力例

      oc get node
      NAME                             STATUS   ROLES                         AGE   VERSION
      dhcp-1-235-195.arm.example.com   Ready    control-plane,master,worker   76m   v1.29.2

    3. 次のコマンドを実行して、新しい CA ファイルを $KUBECONFIG 環境変数に追加します。

      $ oc config set clusters.microshift.certificate-authority /tmp/certificate-authority-data-new.crt
    4. 次のコマンドを実行して、新しい kubeconfig ファイルに新しい CA が含まれていることを確認します。

      $ oc config view --flatten

      外部で生成された kubeconfig ファイルの例

      apiVersion: v1
      clusters:
      - cluster:
          certificate-authority: /tmp/certificate-authority-data-new.crt 1
          server: https://api.ci-ln-k0gim2b-76ef8.aws-2.ci.openshift.org:6443
        name: ci-ln-k0gim2b-76ef8
      contexts:
      - context:
          cluster: ci-ln-k0gim2b-76ef8
          user:
        name:
      current-context:
      kind: Config
      preferences: {}

      1
      外部で生成された kubeconfig ファイルには、certificate-authority-data セクションが存在しません。これは、以前使用した oc config set コマンドで追加されます。
    5. 次のコマンドを実行して、カスタマイズされた API サーバー認証局の subjectissuer を確認します。

      $ curl --cacert /tmp/caCert.pem https://${fqdn_name}:6443/healthz -v

      出力例

      Server certificate:
        subject: CN=kas-test-cert_server
        start date: Mar 12 11:39:46 2024 GMT
        expire date: Mar 12 11:39:46 2025 GMT
        subjectAltName: host "dhcp-1-235-3.arm.eng.rdu2.redhat.com" matched cert's "dhcp-1-235-3.arm.eng.rdu2.redhat.com"
        issuer: CN=kas-test-cert_ca
        SSL certificate verify ok.

      重要

      生成された kubeconfig ファイル内の certificate-authority-data を新しい rootCA に置き換えるか、certificate-authority-data をオペレーティングシステムの信頼ルートに追加します。両方の方法を使用しないでください。

    6. オペレーティングシステムの信頼ルートで追加の CA を設定します。たとえば、クライアントシステム上の RHEL クライアントトラストストア内などです。詳細は、システム全体のトラストストア を参照してください。

      • CA を含む設定で証明書バンドルを更新することを推奨します。
      • 証明書バンドルを設定しない場合は、代わりに oc login localhost:8443 --certificate-authority=/path/to/cert.crt コマンドを使用することもできますが、この方法は推奨されません。

3.3. カスタム証明書の予約名の値

次の証明書の問題により、MicroShift は証明書を動的に無視し、エラーをログに記録します。

  • 証明書ファイルがディスク上に存在しないか、読み取り可能ではありません。
  • 証明書は解析できません。
  • 証明書は、SubjectAlternativeNames (SAN) フィールド内の内部証明書の IPAddress/DNSNames を上書きします。SAN を設定するときは予約名を使用しないでください。
表3.1 予約名の値
住所コメント

localhost

DNS

 

127.0.0.1

IP Address

 

10.42.0.0

IP Address

クラスターネットワーク

10.43.0.0/16,10.44.0.0/16

IP Address

サービスネットワーク

169.254.169.2/29

IP Address

br-ex ネットワーク

kubernetes.default.svc

DNS

 

openshift.default.svc

DNS

 

svc.cluster.local

DNS

 

3.4. カスタム証明書のトラブルシューティング

カスタム証明書の実装のトラブルシューティングを行うには、次の手順を実行します。

手順

  1. MicroShift から、次のコマンドを実行して、証明書が kube-apiserver によって提供されていることを確認し、証明書パスが --tls-sni-cert-key フラグに追加されていることを確認します。

    $ journalctl -u microshift -b0 | grep tls-sni-cert-key

    出力例

    Jan 24 14:53:00 localhost.localdomain microshift[45313]: kube-apiserver I0124 14:53:00.649099   45313 flags.go:64] FLAG: --tls-sni-cert-key="[/home/eslutsky/dev/certs/server.crt,/home/eslutsky/dev/certs/server.key;/var/lib/microshift/certs/kube-apiserver-external-signer/kube-external-serving/server.crt,/var/lib/microshift/certs/kube-apiserver-external-signer/kube-external-serving/server.key;/var/lib/microshift/certs/kube-apiserver-localhost-signer/kube-apiserver-localhost-serving/server.crt,/var/lib/microshift/certs/kube-apiserver-localhost-signer/kube-apiserver-localhost-serving/server.key;/var/lib/microshift/certs/kube-apiserver-service-network-signer/kube-apiserver-service-network-serving/server.crt,/var/lib/microshift/certs/kube-apiserver-service-network-signer/kube-apiserver-service-network-serving/server.key

  2. クライアントから次のコマンドを実行して、kube-apiserver が正しい証明書を提供していることを確認します。

    $ openssl s_client -connect <SNI_ADDRESS>:6443 -showcerts | openssl x509 -text -noout -in - | grep -C 1 "Alternative\|CN"

3.5. カスタム証明書のクリーンアップおよび再作成

MicroShift サービスを停止するには、カスタム証明書をクリーンアップし、カスタム証明書を再作成するには、次の手順を使用します。

手順

  1. 次のコマンドを実行して、MicroShift サービスを停止し、カスタム証明書をクリーンアップします。

    $ sudo microshift-cleanup-data --cert

    出力例

    Stopping MicroShift services
    Removing MicroShift certificates
    MicroShift service was stopped
    Cleanup succeeded

  2. 次のコマンドを実行して、MicroShift サービスを再起動し、カスタム証明書を再作成します。

    $ sudo systemctl start microshift

3.6. 関連情報

第4章 greenboot スクリプトのステータスの確認

kustomize マニフェスト以外のツールを使用して MicroShift API を通じてアプリケーションをデプロイしたり、その他の変更を加えたりするには、greenboot ヘルスチェックが完了するまで待つ必要があります。これにより、greenboot が rpm-ostree システムを以前の状態にロールバックしても、変更が失われなくなります。

greenboot-healthcheck サービスは 1 回実行してから終了します。greenboot が終了し、システムが正常な状態になったら、設定の変更とデプロイメントを続行できます。

4.1. greenboot ヘルスチェックのステータスの確認

システムに変更を加える前、またはトラブルシューティング中に、greenboot ヘルスチェックのステータスを確認します。次のコマンドのいずれかを使用すると、greenboot スクリプトの実行が完了したことを確認できます。

手順

  • ヘルスチェックステータスのレポートを表示するには、次のコマンドを使用します。

    $ systemctl show --property=SubState --value greenboot-healthcheck.service
    • start が出力される場合、greenboot チェックがまだ実行中であることを意味します。
    • exited が出力される場合、チェックが合格し、greenboot が終了したことを意味します。Greenboot は、システムが正常な状態の場合、green.d ディレクトリー内のスクリプトを実行します。
    • failed の出力は、チェックが合格しなかったことを意味します。システムがこの状態にある場合、Greenboot は red.d ディレクトリー内のスクリプトを実行し、システムを再起動する可能性があります。
  • サービスの数値終了コードを示すレポートを表示するには、次のコマンドを使用します。0 は成功を、0 以外の値は失敗を意味します。

    $ systemctl show --property=ExecMainStatus --value greenboot-healthcheck.service
  • Boot Status is GREEN - Health Check SUCCESS など、ブートステータスに関するメッセージを表示するレポートを表示するには、次のコマンドを使用します。

    $ cat /run/motd.d/boot-status

第5章 監査ロギングポリシーの設定

設定値を使用して、MicroShift 監査ログファイルのローテーションと保持を制御できます。

5.1. 監査ログファイルの制限設定について

設定値を使用して MicroShift 監査ログファイルのローテーションと保持を制御すると、ファーエッジデバイスの限られたストレージ容量を超えないようにすることができます。このようなデバイスでは、ログデータの蓄積によってホストシステムまたはクラスターのワークロードが制限され、デバイスの動作が停止する可能性があります。監査ログポリシーを設定すると、重要な処理スペースを継続して利用できるようにします。

MicroShift 監査ログを制限するために設定した値を使用すると、監査ログバックアップのサイズ、数、保存期間の制限を適用できます。フィールド値は、優先順位を付けずに、互いに独立して処理されます。

フィールドを組み合わせて設定し、保持されるログの最大ストレージ制限を定義できます。以下に例を示します。

  • ログストレージの上限を作成するには、maxFileSizemaxFiles の両方を設定します。
  • maxFileAge 値を設定すると、maxFiles 値に関係なく、ファイル名のタイムスタンプより古いファイルが自動的に削除されます。

5.1.1. デフォルトの監査ログ値

MicroShift には、次のデフォルトの監査ログローテーション値が含まれています。

表5.1 MicroShift のデフォルトの監査ログ値
監査ログパラメーターデフォルト設定定義

maxFileAge:

0

ログファイルが自動的に削除されるまでの保持期間。デフォルト値は、経過時間をベースにしてログファイルが削除されないという意味です。この値は設定可能です。

maxFiles:

10

保持されるログファイルの合計数。デフォルトでは、MicroShift は 10 個のログファイルを保持します。余分なファイルが作成されると、最も古いものが削除されます。この値は設定可能です。

maxFileSize:

200

デフォルトでは、audit.log ファイルが maxFileSize の制限に達すると、audit.log ファイルがローテーションされ、MicroShift は新しい audit.log ファイルへの書き込みを開始します。この値はメガバイト単位で設定できます。

profile:

Default

Default プロファイル設定では、読み取りおよび書き込み要求のメタデータのみがログに記録されます。OAuth アクセストークン要求を除き、要求本文はログに記録されません。このフィールドを指定しない場合は、Default プロファイルが使用されます。

ファイルが 10 個以下の場合、監査ログの保持の最大デフォルトストレージ使用量は 2000 Mb です。

フィールドに値を指定しない場合は、デフォルト値が使用されます。以前に設定したフィールド値を削除すると、次回の MicroShift サービスの再起動後にデフォルト値が復元されます。

重要

アプリケーション Pod によって生成されるログは、Red Hat Enterprise Linux (RHEL) で監査ログの保持およびローテーションを設定する必要があります。これらのログはコンソールに出力され、保存されます。MicroShift クラスターの健全性を維持するために、RHEL /var/log/audit/audit.log ファイルにログ設定が設定されていることを確認してください。

5.2. 監査ログポリシープロファイルについて

監査ログプロファイルは、OpenShift API サーバーおよび Kubernetes API サーバーに送信されるリクエストをログに記録する方法を定義します。

MicroShift は、次の定義済み監査ポリシープロファイルをサポートしています。

Profile説明

Default

読み取りおよび書き込み要求のメタデータのみをログに記録します。OAuth アクセストークン要求を除く要求の本文はログに記録されません。これはデフォルトポリシーになります。

WriteRequestBodies

すべてのリクエストのメタデータのログに加えて、API サーバーへのすべての書き込みリクエスト (createupdatepatchdeletedeletecollection) のリクエスト本文をログに記録します。このプロファイルには、Default プロファイルよりも多くのリソースのオーバーヘッドがあります。[1]

AllRequestBodies

すべての要求のメタデータをロギングする以外にも、API サーバーへの読み取りおよび書き込み要求ごとに要求の本文をログに記録します (getlistcreateupdatepatch)。このプロファイルには最も多くのリソースのオーバーヘッドがあります。[1]

None

OAuth アクセストークン要求や OAuth 承認トークン要求などの要求はログに記録されません。

警告

問題のトラブルシューティング時に有用なデータが記録されないリスクを完全に理解していない限り、None プロファイルを使用して監査ロギングを無効にしないようにしてください。監査ロギングを無効にしてサポートが必要な状況が生じた場合は、適切にトラブルシューティングを行うために監査ロギングを有効にし、問題を再現することを推奨します。

  1. SecretRouteOAuthClient オブジェクトなどの機密リソースは、メタデータレベルでのみログ記録されます。

デフォルトでは、MicroShift は Default の監査ログプロファイルを使用します。リクエスト本文もログに記録する別の監査ポリシープロファイルを使用することもできますが、CPU、メモリー、I/O などのリソース使用量が増加することに注意してください。

5.3. 監査ログ値の設定

MicroShift サービス設定ファイルを使用して、監査ログ設定を指定できます。

手順

  1. 指定されている config.yaml.default ファイルのコピーを /etc/microshift/ ディレクトリーに作成し、名前を config.yaml に変更します。作成した新しい MicroShift config.yaml/etc/microshift/ ディレクトリーに保存します。MicroShift サービスが開始されるたびに、新しい config.yaml が読み取られます。これを作成すると、config.yaml ファイルは組み込み設定よりも優先されます。
  2. YAML の auditLog セクションのデフォルト値を必要な有効な値に置き換えてください。

    デフォルトの auditLog 設定の例

    apiServer:
    # ....
      auditLog:
        maxFileAge: 7 1
        maxFileSize: 200 2
        maxFiles: 1 3
        profile: Default 4
    # ....

    1
    ログファイルが保持される最大時間を日数で指定します。この制限よりも古いファイルは削除されます。この例では、ログファイルは 7 日以上経過すると削除されます。ライブログが maxFileSize フィールドで指定された最大ファイルサイズに達したかどうかに関係なく、ファイルは削除されます。ファイルの有効期限は、ローテーションされたログファイルの名前に書き込まれたタイムスタンプによって決定されます (例: audit-2024-05-16T17-03-59.994.log)。値が 0 の場合、制限は無効になります。
    2
    監査ログファイルの最大サイズ (メガバイト単位)。この例では、ライブログが 200 MB の制限に達するとすぐにファイルがローテーションされます。値を 0 に設定すると、制限は無効になります。
    3
    保持されるローテーションされた監査ログファイルの最大数。制限に達すると、ログファイルは古いものから順に削除されます。この例では、値 1 を指定すると、現在のアクティブログに加えて、maxFileSize サイズのファイル 1 つだけが保持されます。値を 0 に設定すると、制限は無効になります。
    4
    読み取りおよび書き込み要求のメタデータのみをログに記録します。OAuth アクセストークン要求を除く要求の本文はログに記録されません。このフィールドを指定しない場合は、Default プロファイルが使用されます。
  3. オプション: ログ用の新しいディレクトリーを指定するには、MicroShift を停止し、/var/log/kube-apiserver ディレクトリーを目的の場所に移動します。

    1. 次のコマンドを実行して MicroShift を停止します。

      $ sudo systemctl stop microshift
    2. 以下のコマンドを実行して、/var/log/kube-apiserver ディレクトリーを目的の場所に移動します。

      $ sudo mv /var/log/kube-apiserver <~/kube-apiserver> 1
      1
      <~/kube-apiserver> は、使用するディレクトリーへのパスに置き換えます。
    3. ログの新規ディレクトリーを指定した場合、次のコマンドを実行して、/var/log/kube-apiserver にカスタムディレクトリーへのシンボリックリンクを作成します。

      $ sudo ln -s <~/kube-apiserver> /var/log/kube-apiserver 1
      1
      <~/kube-apiserver> は、使用するディレクトリーへのパスに置き換えます。これにより、SOS レポートでのログの収集が可能になります。
  4. 実行中のインスタンスで監査ログポリシーを設定する場合は、次のコマンドを入力して MicroShift を再起動します。

    $ sudo systemctl restart microsohift

5.4. 監査ログ設定のトラブルシューティング

カスタム監査ログ設定とファイルの場所のトラブルシューティングを行うには、次の手順に従います。

手順

  • 次のコマンドを実行して、現在設定されている値を確認します。

    $ sudo microshift show-config --mode effective

    出力例

    auditLog:
        maxFileSize: 200
        maxFiles: 1
        maxFileAge: 7
        profile: AllRequestBodies

  • 次のコマンドを実行して、audit.log ファイルのパーミッションを確認します。

    $ sudo ls -ltrh /var/log/kube-apiserver/audit.log

    出力例

    -rw-------. 1 root root 46M Mar 12 09:52 /var/log/kube-apiserver/audit.log

  • 次のコマンドを実行して、現在のログディレクトリーの内容をリスト表示します。

    $ sudo ls -ltrh /var/log/kube-apiserver/

    出力例

    total 6.0M
    -rw-------. 1 root root 2.0M Mar 12 10:56 audit-2024-03-12T14-56-16.267.log
    -rw-------. 1 root root 2.0M Mar 12 10:56 audit-2024-03-12T14-56-49.444.log
    -rw-------. 1 root root 962K Mar 12 10:57 audit.log

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.