ロギング・エージェントをKubernetesクラスタ用にHelmチャートを使ってデプロイする

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

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

Kubernetesクラスタにエージェントをデプロイするには、以下の手順を実行する:

開始前に

  • Kubernetes クラスタにアクセスし、ネームスペースの作成とエージェントのデプロイを行う権限があることを確認してください。

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

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

    • Kubernetes CLI。kubectl コマンドを使用してクラスターを管理します。 詳細はこちら

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

  • 利用可能なエージェントのバージョンを確認する。 詳細については、利用可能なエージェントのバージョンを確認する を参照してください。 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
    
  2. yamlファイルのフィールドを、あなたの環境に固有の値で更新する。

    Helmに必要なパラメーター
    フィールド名 説明
    image.version 展開するエージェントのバージョン については、ステップ1を参照してください
    clusterName クラスタの名前 - これにより、すべてのログ行に kubernetes.cluster_name というタグが挿入されます
    env.ingestionHost IBM Cloud Logs インスタンスがログを受信するためのパブリックまたはプライベートなイングレスエンドポイント
    env.ingestionPort インバウンドエンドポイントポート
    パブリックインバウンドエンドポイント = 443
    プライベートインバウンドエンドポイント(VPE) = 443
    プライベートインバウンドエンドポイント(CSE) = 3443
    env.iamMode ステップ1 で選択した認証方法に基づいて、TrustedProfile または 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 )を入力してください。そうでない場合は、入力する必要はありません。

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

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

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

  1. クラスターにログインします。 詳細については 、「クラスタへのアクセス」 を参照してください。

  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> は、ServiceID ステップ1で設定した に関連するIAMアピキーです
    • --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. 作成するリソースを確認したら、Helm のインストールを --dry-run オプションなしで実行します

    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> は、ServiceID ステップ1で設定した に関連するIAMアピキーです

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

エージェントがデプロイされると、以下のリソースが作成されることを確認してください:

  • ibm-observe 名前空間。

    以下のコマンドを実行してクラスタ内のネームスペースを一覧表示し、logger-agent にステータスがアクティブであることを確認します。

    kubectl get namespace
    
  • 名前空間 ibm-observe のコンフィグマップ logs-agent

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

    kubectl get configmap logs-agent -n ibm-observe
    

    使うこともできる:

    kubectl describe configmaps logs-agent -n ibm-observe
    
  • 名前空間 ibm-observe のデーモンセット logs-agent

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

    kubectl get ds -n ibm-observe
    
  • エージェントが起動していることを確認する:

    kubectl -n ibm-observe get ds logs-agent
    
  • 以下のコマンドを使用して、エージェント・ポッドのリストを取得する:

    kubectl 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 である。 クラスタ内の各ノードにエージェント・ポッドが用意されていることを確認します。

    クラスタで利用可能なワーカーの数を確認するには、以下のコマンドを実行します:

    kubectl 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 カラムの値を比較することができます。

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

    配置されたヘルムチャートを確認するには、以下を実行する。 helm list -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> を実行すると、クラスタで生成されたログを検索できます。