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 チャート値ファイルの設定 ロギング・エージェント
以下のステップを実行します。
-
以下の内容で、
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 -
yamlファイルのフィールドを、お客様の環境に固有の値に更新します。
Helm 必要なパラメータをチャートに記入する フィールド名 説明 image.version展開するエージェントのバージョン については、ステップ1を参照してください clusterNameクラスタの名前 - これにより、すべてのログ行に kubernetes.cluster_nameというタグが挿入されますenv.ingestionHostIBM Cloud Logs インスタンスがログを受信するためのパブリックまたはプライベートな入力エンドポイント env.ingestionPortインバウンドエンドポイントポート
パブリックインバウンドエンドポイント =443
プライベートインバウンドエンドポイント(VPE) =443
プライベートインバウンドエンドポイント(CSE) =3443env.iamModeTrustedProfileまたは、 ステップ1 で選択した認証方法に基づいて、IAMAPIKeyenv.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)を入力してください。そうでない場合は、入力する必要はありません。scc.createtrueを指定して、Openshift にセキュリティ制約を作成します
ステップ 3. Helm チャートを取り付ける
iamMode を IAMAPIKey として使用する場合は、 Kubernetes のシークレットに logs-agent というキー名で IAM_API_KEY というアピキーが必要です。 シークレットは、helmのインストール時に --set secret.iamAPIKey=<your iamAPIKey> オプションを指定することで、
Helm チャートを使って作成することができます。 秘密鍵を手動で作成した場合、または iamMode=TrustedProfile を使用している場合は、このオプションを含めないでください。
以下のステップを実行します。
-
クラスターにログインします。
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を使用してクラスタにログインする 」の手順に従ってクラスタにログインします。
-
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>ステップ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 -
作成するリソースが確認できたら、
--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-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>ステップ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 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です。 クラスタ内の各ノードでエージェントポッドが準備できていることを確認します。クラスタで利用可能な作業者の人数を確認するには、次のコマンドを実行します
oc 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列の値を比較することができます。ポッドのログを見るには、以下を実行する。
oc logs <POD_NAME>> -n ibm-observe
ステップ 5. ログが目的の宛先に配信されていることを確認する
以下のステップを実行します。
-
エージェントが正しく設定されると、デフォルトのダッシュボードビューでログを確認できます。 ロギング・エージェント タグは、クラスタ名を含むkubernetesオブジェクトでレコードを記録します。
kubernetes.cluster_name:<CLUSTER_NAME>IBM Cloud Logs インスタンスで
kubernetes.cluster_name:<YOUR_CLUSTER_NAME>クエリを実行すると、クラスタで生成されたログを検索できます。