OpenShift クラスタ用 ロギング・エージェント v1.6.x の展開

ロギング・エージェント v1.6.x をデプロイし、 OpenShift クラスタから IBM Cloud Logs インスタンスにインフラストラクチャとアプリケーションのログを収集およびルーティングするために Helm チャートを使用できます。

の Terraform IBM モジュール (TIM) を使用することもできます。 ロギング・エージェント を使用して、サポートされている OpenShift クラスタにログエージェントをデプロイして設定することもできます。 このモジュールは、Infrastructure as Code ( IaC ) 自動化を使用して、 Helm ベースのデプロイと主要な構成設定を自動化します。

OpenShift クラスターにエージェントを展開するには、以下の手順に従います

開始前に

  • Red Hat OpenShift on IBM Cloud ( OpenShift )クラスタにアクセスでき、ネームスペースを作成してエージェントを展開する権限があることを確認してください。

  • 以下の CLI をインストールします。

    • IBM Cloud CLI を使用して IBM Cloud にログインし、 IBM Cloud サービスを管理します。API キーの作成など。

    • コマンドラインからクラスタを管理するためのOpenShift CLI。 詳細はこちらをご覧ください

    • Helm CLI バージョン3の最新リリース

  • ロギング・エージェント についてお読みください。

  • 利用可能なエージェントのバージョンを確認してください。 詳細は 、「利用可能なエージェントのバージョンの確認 」を参照してください。 Helm チャートのバージョンはエージェントのバージョンと一致します。例えば、エージェントのバージョンが 1.3.0 の場合、そのバージョンにはバージョン 1.3.0 の Helm チャートが付属しています。

ステップ 1. エージェントの認証方法を定義する

エージェントのIDの種類と認証方法を選択します。 次に、信頼されたプロファイルまたはAPIキーを作成します。 IBM Cloud Logs にログを送信するために必要な役割は Sender です。

エージェントが IBM® Cloud Logs サービスで認証を行う際に使用するIDとして、サービスIDまたは信頼済みプロファイルを使用できます。 詳細については 、「取り込みのためのIAM権限の付与 」を参照してください。

次のオプションのいずれかを選択してください。

オプション1:信頼されたプロファイルを使用した認証

トラステッド・プロファイルを作成します。 詳細については 、「取り込み用信頼済みプロファイルの生成 」を参照してください。

オプション2:サービスID APIキーを使用した認証

サービスID認証用のAPIキーを生成する。 詳細については 、「取り込み用APIキーの生成 」を参照してください。

ステップ 2. Helm チャート値ファイルの設定 ロギング・エージェント

以下のステップを実行します。

  1. 以下の内容で、 logs-values.yaml という名前のファイルを作成する:

    このファイルには、配置に固有の設定が含まれています。

    metadata:
      name: "logs-agent"
    image:
      version: "1.6.1"  # required
    
    clusterName: "ENTER_CLUSTER_NAME"     # Enter the name of your cluster. This information is used to improve the metadata and help with your filtering.
    
    env:
      # ingestionHost is a required field. For example:
      # ingestionHost: "<logs instance>.ingress.us-east.logs.cloud.ibm.com"
      ingestionHost: "" # required
    
      # If you are using private CSE proxy, then use port number "3443"
      # If you are using private VPE Gateway, then use port number "443"
      # If you are using the public endpoint, then use port number "443"
      ingestionPort: "" # required
    
      iamMode: "TrustedProfile"
      # trustedProfileID - trusted profile id - required for iam trusted profile mode
      trustedProfileID: "Profile-yyyyyyyy-xxxx-xxxx-yyyy-zzzzzzzzzzzz" # required if iamMode is set to TrustedProfile
    
    scc:
      # true here enables creation of Security Context Constraints in Openshift
      create: true
    
  2. yamlファイルのフィールドを、お客様の環境に固有の値に更新します。

    Helm 必要なパラメータをチャートに記入する
    フィールド名 説明
    image.version 展開するエージェントのバージョン については、ステップ1を参照してください
    clusterName クラスタの名前 - これにより、すべてのログ行に kubernetes.cluster_name というタグが挿入されます
    env.ingestionHost IBM Cloud Logs インスタンスがログを受信するためのパブリックまたはプライベートな入力エンドポイント
    env.ingestionPort インバウンドエンドポイントポート
    パブリックインバウンドエンドポイント = 443
    プライベートインバウンドエンドポイント(VPE) = 443
    プライベートインバウンドエンドポイント(CSE) = 3443
    env.iamMode TrustedProfile または、 ステップ1 で選択した認証方法に基づいて、 IAMAPIKey
    env.trustedProfileID iamModeTrustedProfile の場合は、信頼済みプロファイルIDをご提供ください。それ以外の場合、これは必要ありません(例: Profile-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx )。
    env.iamEnvironment 正しい IAM 認証エンドポイントを指定します。 有効な値は、 ProductionPrivateProduction、または Custom です。 省略した場合のデフォルト値は Production
    env.iamHost iamEnvironmentCustom である場合は、IAMホスト(例: private.eu-de.iam.cloud.ibm.com )を入力してください。そうでない場合は、入力する必要はありません。
    scc.create true を指定して、Openshift にセキュリティ制約を作成します

ステップ 3. Helm チャートを取り付ける

iamModeIAMAPIKey として使用する場合は、 Kubernetes のシークレットに logs-agent というキー名で IAM_API_KEY というアピキーが必要です。 シークレットは、helmのインストール時に --set secret.iamAPIKey=<your iamAPIKey> オプションを指定することで、 Helm チャートを使って作成することができます。 秘密鍵を手動で作成した場合、または iamMode=TrustedProfile を使用している場合は、このオプションを含めないでください。

以下のステップを実行します。

  1. クラスターにログインします。

    Red Hat OpenShift on IBM Cloud IBM Cloud Identity and Access Management (IAM)と統合されています。 IAM があれば、IAM ID を使用してユーザーおよびサービスを認証し、アクセス役割およびポリシーを使用してアクションを許可することができます。 Red Hat OpenShift コンソールからユーザーとして認証すると、IAM アイデンティティが使用されて Red Hat OpenShift ログイントークンが生成され、それを使ってコマンドラインにログインすることができます。 oc login コマンドに使用するための IAM の API キーまたはサービス ID を作成することで、クラスターへのログインを自動化できます。 詳細については 、「 Red Hat OpenShift クラスターへのアクセス 」を参照してください。

    例えば 、「サービスIDを使用してクラスタにログインする 」の手順に従ってクラスタにログインします。

  2. Helm のテストを行い、 Helm チャートによって作成されるリソースを確認します。

    iamMode= TrustedProfile を使用している場合は、完全なコマンドは次のようになります

    helm install <install-name> --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace
    

    iamMode= IAMAPIKey を使用している場合は、完全なコマンドは次のようになります

    helm install <install-name> --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<APIKey-value> --hide-secret
    

    ここで、

    • <install-name> Helm のインストール( )の名前です。logs-agent
    • <chart-version> はヘルムチャートのバージョンです。 Helm チャートのバージョンはエージェントイメージのバージョンと一致している必要があります。 詳細については 、 Helm のチャートバージョン をご覧ください。
    • <PATH> logs-values.yaml ファイルが置かれているディレクトリパスです。
    • <APIKey-value>ステップ1 でServiceID 設定に関連付けられたIAM APIキーです
    • --hide-secret を追加すると、コマンド実行後の出力データにAPIキーが表示されなくなります。

    ヘルムチャートのコンテンツをローカルで確認したい場合は、次のコマンドを使用して、ヘルムチャートをコンピュータにダウンロードすることができます。 helm pull oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version>。 ダウンロードしたtgzファイルにはチャートの内容が含まれています。

    例えば、 logs-values.yaml ファイルが利用可能なディレクトリから、以下のコマンドを実行することができます

    helm install logs-agent --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version 1.6.0 --values ./logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<secret> --hide-secret
    
  3. 作成するリソースが確認できたら、 --dry-run オプションを指定せずに Helm をインストールします

    iamMode= TrustedProfile を使用している場合は、完全なコマンドは次のようになります

    helm install <install-name>  oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace
    

    iamMode= IAMAPIKey を使用している場合は、完全なコマンドは次のようになります

    helm install <install-name> oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<APIKey-value>
    

    ここで、

    • <install-name> Helm のインストール( )の名前です。logs-agent
    • <chart-version> はヘルムチャートのバージョンです。 Helm チャートのバージョンはエージェントイメージのバージョンと一致している必要があります。 詳細については 、 Helm のチャートバージョン をご覧ください。
    • <PATH> logs-values.yaml ファイルが置かれているディレクトリパスです。
    • <APIKey-value>ステップ1 でServiceID 設定に関連付けられたIAM APIキーです

ステップ 4. エージェントが正常に展開されたことを確認する

エージェントが展開されたら、次のリソースが作成されていることを確認します

  • ibm-observe 名前空間。

    クラスタ内の名前空間をリストアップするには、次のコマンドを実行します

    oc get namespace
    

    また、 ibm-observe 名前空間を検索するには、次のコマンドを実行することもできます

    oc get namespace | grep ibm-observe
    
  • コンフィグマップ logs-agent を名前空間 ibm-observe に作成します。

    エージェント構成の詳細を表示するには、以下のコマンドを実行します。

    oc get configmap logs-agent -n ibm-observe
    

    次のコマンドも使える:

    oc describe configmaps logs-agent -n ibm-observe
    
  • daemonset logs-agent を名前空間 ibm-observe に作成します。

    以下のコマンドを実行してデーモンセットを表示する:

    oc get ds -n ibm-observe
    
  • 次のコマンドを使用して、エージェントポッドのリストを取得します

    oc get pods -n ibm-observe -o wide
    
    NAME                  READY   STATUS    RESTARTS   AGE    IP              NODE           NOMINATED NODE   READINESS GATES
    logs-agent-4lwvt      1/1     Running   0          2d5h   172.17.61.181   192.168.16.4   <none>           <none>
    logs-agent-g7z87      1/1     Running   0          2d5h   172.17.0.48     192.168.32.4   <none>           <none>
    logs-agent-nw56s      1/1     Running   0          2d5h   172.17.32.232   192.168.0.10   <none>           <none>
    

    READY の列には、すべてのポッドに対して 1/1 と表示され、 STATUSRunning です。 クラスタ内の各ノードでエージェントポッドが準備できていることを確認します。

    クラスタで利用可能な作業者の人数を確認するには、次のコマンドを実行します

    oc get nodes
    
    NAME           STATUS   ROLES           AGE   VERSION
    192.168.0.10   Ready    master,worker   8d    v1.20.0+558d959
    192.168.32.4   Ready    master,worker   8d    v1.20.0+558d959
    192.168.16.4   Ready    master,worker   8d    v1.20.0+558d959
    

    これら2つのリストの項目数は同じである必要があります。ノード名内のIPアドレスを、ポッドリストの NODE 列内の値と一致させることができます。

    ノードがIPアドレスで名前付けされていない場合は、 -o wide オプションを追加し、代わりに INTERNAL-IP 列の値を比較することができます。

    ポッドのログを見るには、以下を実行する。 oc logs <POD_NAME>> -n ibm-observe

ステップ 5. ログが目的の宛先に配信されていることを確認する

以下のステップを実行します。

  1. IBM Cloud Logs インスタンスのウェブUIにアクセスします。

  2. エージェントが正しく設定されると、デフォルトのダッシュボードビューでログを確認できます。 ロギング・エージェント タグは、クラスタ名を含むkubernetesオブジェクトでレコードを記録します。

    kubernetes.cluster_name:<CLUSTER_NAME>
    

    IBM Cloud Logs インスタンスで kubernetes.cluster_name:<YOUR_CLUSTER_NAME> クエリを実行すると、クラスタで生成されたログを検索できます。