プレビュー
この機能はまだ開発中ですが、ぜひお試しください。
Kubernetesエージェント オペレーターは、 Kubernetesエージェント とともにAPMインストゥルメントを自動化することで、 Kubernetes環境のフルスタックの可用性を合理化します。 APM自動インストゥルメンテーションを有効にすると、開発者はAPMエージェントを手動で管理する必要がなくなります。 Kubernetesエージェント オペレーターは、 APMエージェントを自動的にインストール、アップグレード、削除します。
現在、Java、.NET、Node.jsをサポートしています。 Python、Ruby に加え、追加言語 (PHP および Go) も開発中です。
あなたが始める前に
オペレーターをインストールする前に、次の点を確認してください。
- Helm : チャートを使用するにはこれをインストールする必要があります。 開始する際にサポートが必要な場合は、 Helm のドキュメントを参照してください。
- Kubectl : クラスターと通信するように設定する必要があります。
- 証明書マネージャー: クラスターにインストールする必要があります。
cert-manager
の配電
証明書マネージャーの依存関係をインストールするには、次のコマンドを実行します。
$helm repo add jetstack https://charts.jetstack.io$ helm install cert-manager jetstack/cert-manager \> --namespace cert-manager \> --create-namespace \> --set crds.enabled=true
Kubernetesエージェントオペレーターのインストレーション
ニーズに応じて、エージェント オペレーターを単独でインストールするか、K8s インテグレーションと一緒にインストールするかを選択できます。 完全なスタック監視エクスペリエンスを活用するために、K8s インテグレーションと一緒にインストールすることを強くお勧めします。
フルスタックの監視可能性エクスペリエンス 全体を活用するために、Kubernetes インテグレーションと一緒にインストールすることを強くお勧めします。
Kubernetesインテグレーションに加えてインストレーションをバンドルする(推奨)
Kubernetesエージェント オペレーター チャートは、 完全な可用性を実現するために必要なすべてのコンポーネントのインストレーションを管理する nri-bundleKubernetes チャートの一部として統合されています。
k8s-agents-operator.enabled=true
引数を helm コマンドに追加するか、 values.yaml
ファイルに含めます。
Helm の使用に関する詳細については、 Kubernetesインテグレーションのインストール」ページを参照するか、 nri-bundleチャートを確認してください。
インスタンスを使用した Helm コマンドのサンプルを参照してください。
$helm repo add newrelic https://helm-charts.newrelic.com$
$ helm upgrade --install newrelic-bundle newrelic/nri-bundle \> --set global.licenseKey=<NEW RELIC INGEST LICENSE KEY> \> --set global.cluster=<CLUSTER_NAME> \> --namespace=newrelic \> --set newrelic-infrastructure.privileged=true \> --set global.lowDataMode=true \> --set kube-state-metrics.image.tag=${KSM_IMAGE_VERSION} \> --set kube-state-metrics.enabled=true \> --set kubeEvents.enabled=true \> --set k8s-agents-operator.enabled=true \> --create-namespace
スタンドアロン インストール
Kubernetesエージェント オペレーターをデフォルト設定でインストールするには、次のコマンドを実行します。
$helm repo add newrelic-k8s https://newrelic.github.io/k8s-agents-operator$ helm upgrade --install k8s-agents-operator newrelic-k8s/k8s-agents-operator \> --namespace newrelic \> --create-namespace \> --set licenseKey=<YOUR_NEW_RELIC_INGEST_LICENSE_KEY>
設定オプションの完全なリストについては、 READMEチャートを参照してください。
オペレータを有効にするネームスペースの設定
各ネームスペースでは、その内部でのアプリケーションデプロイの自動インストゥルメンテーションを有効にするために 2 段階のプロセスが必要です。
オペレーターに測定させるネームスペースごとに、有効なNew Relic取り込みライセンスを含むシークレットを作成します。
bash$kubectl create secret generic newrelic-key-secret \>--namespace <NAMESPACE_TO_MONITOR> \>--from-literal=new_relic_license_key=<YOUR_NEW_RELIC_INGEST_LICENSE_KEY><YOUR_NEW_RELIC_INGEST_LICENSE_KEY>
を有効なNew Relicライセンスキーに置き換えてください。自動計装するネームスペースごとに次の CRD を適用します。 次のコマンドを実行します:
bash$kubectl apply -f <YOUR_YAML_FILE> -n <NAMESPACE_TO_MONITOR>適用する YAML ファイル:
apiVersion: newrelic.com/v1alpha1kind: Instrumentationmetadata:labels:app.kubernetes.io/name: instrumentationapp.kubernetes.io/created-by: k8s-agents-operatorname: newrelic-instrumentationspec:java:image: newrelic/newrelic-java-init:latest# env:# Example New Relic agent supported environment variables# - name: NEW_RELIC_LABELS# value: "environment:auto-injection"# Example overriding the appName configuration# - name: NEW_RELIC_POD_NAME# valueFrom:# fieldRef:# fieldPath: metadata.name# - name: NEW_RELIC_APP_NAME# value: "$(NEW_RELIC_LABELS)-$(NEW_RELIC_POD_NAME)"nodejs:image: newrelic/newrelic-nodejs-init:latestpython:image: newrelic/newrelic-python-init:latestdotnet:image: newrelic/newrelic-dotnet-init:latestruby:image: newrelic/newrelic-ruby-init:latest
アプリケーションで自動APMインストゥルメンテーションを有効にする
Kubernetesエージェント オペレーターは、ポッドをスケジュールするときに言語固有のアノテーションを探して、どのアプリケーションを監視するかを判断します。
現在サポートされている注釈を参照してください:
$instrumentation.newrelic.com/inject-java: "true"$ instrumentation.newrelic.com/inject-nodejs: "true"$ instrumentation.newrelic.com/inject-python: "true"$ instrumentation.newrelic.com/inject-dotnet: "true"$ instrumentation.newrelic.com/inject-ruby: "true"
Javaエージェントを計装するためのアノテーション付きのエージェントの例を参照してください。
apiVersion: apps/v1 kind: Deployment metadata: name: spring-petclinic spec: selector: matchLabels: app: spring-petclinic replicas: 1 template: metadata: labels: app: spring-petclinic annotations: instrumentation.newrelic.com/inject-java: "true" spec: containers: - name: spring-petclinic image: ghcr.io/pavolloffay/spring-petclinic:latest ports: - containerPort: 8080 env: - name: NEW_RELIC_APP_NAME value: spring-petclinic-demo
アプリケーション内のAPMインストゥルメンテーションをアップグレードする
デフォルトでは、 Kubernetesエージェント オペレーターは、対応するAPMエージェントの利用可能な最新バージョンを自動的にインストールします。
アプリケーションがモニターされると、ユーザーがアップグレードを選択しない限り、新しいバージョンに自動的にアップグレードされることはありません。 ポッドを再デプロイするか、デプロイメントを再起動するだけで、アプリケーションを新しいバージョンにシームレスにアップグレードできます。
アプリケーション内のAPMインストゥルメンテーションを削除します
アプリケーション内のAPMインストゥルメンテーションを削除するには、 Kubernetesエージェント オペレーターによって使用されるアノテーションを削除する必要があります。 数秒後、 APMエージェントが自動的に削除されたことがわかります。
Kubernetes エージェント オペレーターの更新
バンドル インストレーション
次の構文を使用して、nri-bundle チャートのアップグレードを実行します。
$k8s-agents-operator.enabled=true
スタンドアロン インストール
helm upgrade
コマンドを実行して、Kubernetes エージェント オペレーターの新しいバージョンに更新します。
$helm upgrade k8s-agents-operator newrelic/k8s-agents-operator -n newrelic
Kubernetes エージェント オペレーターのアンインストール
バンドル インストレーション
nri-bundle チャートをアンインストールするか、オペレーターのみを削除する場合は、次の引数で helm upgrade を実行します。
$k8s-agents-operator.enabled=false
スタンドアロン インストール
Kubernetes エージェント オペレーターをアンインストールして削除するには、次のコマンドを実行します。
$helm uninstall k8s-agents-operator -n newrelic
データを見つけて使用する
- アプリケーションのサイトを取得し、 APMサマリーページを使用して問題を解決します。
- Kubernetes の概要ページを確認してください。 モニターアプリケーションのコンテキストでKubernetesインサイト を提供します。
よくあるご質問
トラブルシューティング
アプリケーションがインストゥルメントされていない場合は、次の点を確認してください。
オペレーターをインストールした後は、必ず再デプロイまたは新しいアプリケーションをデプロイしてください。 オペレータはクラスタ内で新規アプリケーションを自動導入するだけなので注意してください。
シークレットとインストゥルメンテーション CRD がアプリのネームスペースにインストールされていることを確認します。
bash$kubectl get secrets -n <NAMESPACE>$kubectl get instrumentation -n <NAMESPACE>ポッドに自動インストゥルメンテーションを有効にする注釈があることを確認します。
bash$kubectl get pod <POD> -n <NAMESPACE> -o jsonpath='{.metadata.annotations}'エージェント オペレーター ポッドからログを取得します。
bash$kubectl logs <AGENT_OPERATOR_POD> -n newrelicinit
コンテナがアプリケーションのポッド内に挿入され、正常に実行されたことを確認します。bash$kubectl describe pod <POD> -n <NAMESPACE>
サポート
Kubernetesエージェントオペレーターは現在、Java、.NET、Node.jsなどのAPMエージェントの最新バージョンをサポートしています。 Python と Ruby。
オペレーターが一般公開されると、各APMエージェントの最新の 3 つのバージョンがサポートされるようになります。
Kubernetes エージェント オペレーターの問題の場合:
- 同様の問題がないかGitHub の問題セクションを確認するか、新しい問題を開くことを検討してください。
- New Relic サポートチームに問い合わせてサポートを受けることができます。