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

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

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

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に接続するには、 Kubernetesクラスタに `MutatingWebhookConfiguration' をデプロイできる必要があります。

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

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

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

bash
$
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 がインストールされている場合は、代わりにそれを使用するようにチャートを設定することができ、これによりデプロイがはるかに簡単になります。

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
  • 証明書とキー ペアが別の形式である場合は、 Digicert ナレッジベースで詳細なヘルプを参照してください。

署名された証明書とキーのペアを使用して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ソースコードを参照してください。

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

新しいポッドをデプロイし、 New Relic環境変数をチェックして、メタデータの挿入を担当する Webhook の正しい配置を確認します。

  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.