ロギング・エージェントを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 チャート値ファイルをロギング・エージェントに設定する
以下のステップを実行します。
-
以下の内容で、
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 -
yamlファイルのフィールドを、あなたの環境に固有の値で更新する。
Helmに必要なパラメーター フィールド名 説明 image.version展開するエージェントのバージョン については、ステップ1を参照してください clusterNameクラスタの名前 - これにより、すべてのログ行に kubernetes.cluster_nameというタグが挿入されますenv.ingestionHostIBM Cloud Logs インスタンスがログを受信するためのパブリックまたはプライベートなイングレスエンドポイント env.ingestionPortインバウンドエンドポイントポート
パブリックインバウンドエンドポイント =443
プライベートインバウンドエンドポイント(VPE) =443
プライベートインバウンドエンドポイント(CSE) =3443env.iamModeステップ1 で選択した認証方法に基づいて、 TrustedProfileまたはIAMAPIKeyを選択するenv.trustedProfileIDiamModeがTrustedProfileである場合は、信頼済みプロファイルIDをご提供ください。それ以外の場合、これは必要ありません(例:Profile-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。env.iamEnvironment正しい IAM 認証エンドポイントを指定します。 有効な値は、 Production、PrivateProduction、またはCustomです。 省略した場合のデフォルト値はProduction。env.iamHostiamEnvironmentがCustomの場合は、IAMホスト(例:private.eu-de.iam.cloud.ibm.com)を入力してください。そうでない場合は、入力する必要はありません。
ステップ 3. Helm チャートを取り付ける
iamMode を IAMAPIKey として使用する場合は、 Kubernetes のシークレットに logs-agent というキー名で IAM_API_KEY というアピキーが必要です。 シークレットは、helmのインストール時に --set secret.iamAPIKey=<your iamAPIKey> オプションを指定することで、
Helm チャートを使って作成することができます。 もしシークレットが手動で作成されている場合や、iamMode=TrustedProfile を使用している場合は、このオプションを含めないでください。
以下のステップを実行します。
-
クラスターにログインします。 詳細については 、「クラスタへのアクセス」 を参照してください。
-
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-namespaceiamMode=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 -
作成するリソースを確認したら、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-namespaceiamMode=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 wideNAME 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を示し、STATUSはRunningである。 クラスタ内の各ノードにエージェント・ポッドが用意されていることを確認します。クラスタで利用可能なワーカーの数を確認するには、以下のコマンドを実行します:
kubectl get nodesNAME 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. ログが目的の宛先に配信されていることを確認する
以下のステップを実行します。
-
エージェントが正しく設定されている場合、デフォルトのダッシュボードビューでログを見ることができます。 ロギング・エージェントは、クラスタ名を含むkubernetesオブジェクトでログレコードをタグ付けします。
kubernetes.cluster_name:<CLUSTER_NAME>IBM Cloud Logsインスタンスでクエリ
kubernetes.cluster_name:<YOUR_CLUSTER_NAME>を実行すると、クラスタで生成されたログを検索できます。