• EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.

問題を作成する

APMをインストルメント化したアプリケーションをKubernetesにリンクする

Kubernetesメタデータを表示し、 分散トレースとしてAPMエージェントにリンクして、パフォーマンスの問題を調査し、トランザクションエラーのトラブルシューティングを行うことができます。詳細については、 Kubernetesを介したアプリのパフォーマンスのモニタリングに関するこのブログ投稿を参照してください。

メタデータインジェクション製品は、 MutatingAdmissionWebhookを使用して次の環境変数をポッドに追加します。

NEW_RELIC_METADATA_KUBERNETES_CLUSTER_NAME
NEW_RELIC_METADATA_KUBERNETES_NODE_NAME
NEW_RELIC_METADATA_KUBERNETES_NAMESPACE_NAME
NEW_RELIC_METADATA_KUBERNETES_DEPLOYMENT_NAME
NEW_RELIC_METADATA_KUBERNETES_POD_NAME
NEW_RELIC_METADATA_KUBERNETES_CONTAINER_NAME
NEW_RELIC_METADATA_KUBERNETES_CONTAINER_IMAGE_NAME

ヒント

私たちの Kubernetes メタデータ インジェクション プロジェクトはオープン ソースです。 APM とインフラストラクチャ データをリンクするコードは次のとおりです。

互換性と要件

アプリケーションとKubernetesをリンクするには、 MutatingWebhookConfigurationをKubernetesクラスターにデプロイできる必要があります。

必要な権限があることを確認するには、次のコマンドを実行できます。

bash
$
kubectl auth can-i create mutatingwebhookconfigurations.admissionregistration.k8s.io -A

上記のコマンドの出力は、次のようになります。

yes

別の結果が表示される場合は、Kubernetesのドキュメントに従って、 クラスタでアドミッションコントロールを有効にしてください

ネットワーク要件

KubernetesがMutatingAdmissionWebhookと通信するには、マスターノード(またはクラスターの設定方法によってはAPIサーバーコンテナー)に、ポート443のHTTPSトラフィックの出力をクラスター内の他のすべてのノードのポッドに許可する必要があります。 。

これには、インフラストラクチャの設定方法(オンプレミス、AWS、Google Cloudなど)に応じて特定の構成が必要になる場合があります。

APMエージェントの互換性

次のNewRelicエージェントは、Kubernetesメタデータを収集します。

メタデータの注入を設定する

Helm を使用して統合をインストールすると、メタデータの挿入が含まれます。 nri-bundleグラフを構成するときは、メタデータを挿入する Webhook が有効になっていることを確認してください。

nri-metadata-injection:
enabled: true

Webhook がデプロイされた後、アプリケーション ポッドを再起動して、必要な環境変数を取得できるようにする必要があります。

デフォルトでは、APMエージェントを含む作成するすべてのポッドに正しい環境変数が設定されており、メタデータインジェクションはクラスター全体に適用されます。環境変数が設定されていることを確認するには、実行中のすべてのコンテナーを停止し、新しいインスタンスを開始する必要があります( メタデータの挿入の検証を参照)。

このデフォルト設定では、 Kubernetes証明書APIを使用して、インジェクションに必要な証明書を自動的に管理します。必要に応じて、メタデータの挿入をクラスター内の特定の名前空間に制限したり、証明書を自己管理したりできます。

カスタム構成

インジェクションの対象となる名前空間を制限する

ラベルを使用して、メタデータの挿入を特定の名前空間にのみ制限できます。

この機能を有効にするには、 values-newrelic.yamlファイルに以下を追加します。

nri-metadata-injection:
injectOnlyLabeledNamespaces: true

このオプションを使用すると、インジェクションはnewrelic-metadata-injectionラベルがenabledに設定されている名前空間にのみ適用されます。

bash
$
kubectl label namespace YOUR_NAMESPACE newrelic-metadata-injection=enabled

cert-managerを使用して証明書を生成します

デフォルトでは、チャートはkube-webhook-certgenを使用して、Webhookを実行するために必要な証明書を自動的に生成します。

ただし、 cert-managerがインストールされている場合は、代わりにcert-managerを使用するようにチャートを構成できます。これにより、展開プロセスが大幅に簡素化されます。

nri-metadata-injection:
certManager:
enabled: true

カスタム証明書を管理する

ヒント

Webhook証明書を手動で管理することは、上級ユーザーにのみお勧めします。New Relicサポートチームは、この構成のトラブルシューティングを支援できない場合があります。

カスタム証明書を使用するには、Helmを使用してインストールするときに証明書の自動インストールを無効にする必要があります。

証明書のインストールを無効にするには、次のようにnri-bundleHelm values.yamlを変更します。

nri-metadata-injection:
customTLSCertificate: true

これで、カスタム証明書管理オプションを続行できます。

PEM形式でエンコードされた証明書、サーバーキー、および認証局(CA)バンドルが必要です。

  • それらが標準の証明書形式(X.509)である場合は、 opensslをインストールし、以下を実行します。
bash
$
openssl x509 -in YOUR_CERTIFICATE_FILENAME -outform PEM -out YOUR_CERTIFICATE_FILENAME.pem
$
openssl x509 -in YOUR_SERVER_KEY_FILENAME -outform PEM -out YOUR_SERVER_KEY_FILENAME.pem
$
openssl x509 -in YOUR_CA_BUNDLE_FILENAME -outform PEM -out YOUR_BUNDLE_FILENAME.pem

署名された証明書とキーのペアを使用してTLSシークレットを作成し、次のコマンドを使用して、変更するWebhook構成にCAでパッチを適用します。

bash
$
kubectl create secret tls YOUR_NEWRELIC_METADATA_INJECTION_ADMISSION \
>
--key=YOUR_PEM_ENCODED_SERVER_KEY \
>
--cert=YOUR_PEM_ENCODED_CERTIFICATE \
>
--dry-run -o yaml |
$
kubectl -n newrelic apply -f -
$
$
caBundle=$(cat YOUR_PEM_ENCODED_CA_BUNDLE | base64 | td -d $'\n')
$
kubectl patch mutatingwebhookconfiguration newrelic-metadata-injection-cfg --type='json' -p "[{'op': 'replace', 'path': '/webhooks/0/clientConfig/caBundle', 'value':'${caBundle}'}]"

重要

Kubernetesによって署名された証明書の有効期限は1年です。詳細については、GitHubのKubernetesソースコードを参照してください。

メタデータの挿入を検証します

Webhook(メタデータの挿入を担当)が正しくインストールされたことを検証するには、新しいポッドをデプロイし、NewRelic環境変数を確認します。

  1. 次のコマンドを実行して、ダミーのnginxポッドを作成します。

    bash
    $
    kubectl run test-nginx --image nginx -n newrelic
  2. NewRelic環境変数が挿入されたかどうかを確認します。

    bash
    $
    kubectl exec -n newrelic test-nginx -- env | grep NEW_RELIC_METADATA_KUBERNETES

期待される出力は次のようになります。

NEW_RELIC_METADATA_KUBERNETES_CLUSTER_NAME=THE_CLUSTER_NAME
NEW_RELIC_METADATA_KUBERNETES_NODE_NAME=nodea
NEW_RELIC_METADATA_KUBERNETES_NAMESPACE_NAME=newrelic
NEW_RELIC_METADATA_KUBERNETES_POD_NAME=test-nginx
NEW_RELIC_METADATA_KUBERNETES_CONTAINER_NAME=nginx

メタデータの挿入を無効にする

メタデータの挿入を無効化/アンインストールするには、 values-newrelic.yamlファイルを次のように変更します。

webhook:
enabled: false

そして、 インストールコマンドを再実行します。

トラブルシューティング

必要に応じて、これらのトラブルシューティングのヒントに従ってください。

Copyright © 2024 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.