Init コンテナを使用する
Kubernetes の init コンテナを使用して、.NET エージェントをインストゥルメントできます。この方法では、実行時に init コンテナがエージェントバイナリをアプリケーションコンテナにコピーします。アプリケーションで使用される導入仕様では、次の 2 つのコンテナを参照します。
- .NET エージェントバイナリを含まないイメージに基づくアプリケーションコンテナ
- .NET エージェントバイナリのみを含むイメージに基づく 2 番目の init コンテナ
導入仕様は、これらの 2 つのコンテナを参照し、展開時に init コンテナからアプリケーションコンテナにエージェントバイナリをコピーするように更新されます。コピーが実行されると、init コンテナは終了します。
init コンテナを使用して .NET Agent for Linux バイナリをコピーするには、次の手順を実行します。
.NET Core アプリケーションイメージの構築
.NET Core アプリケーションイメージを構築します。.NET Agent for Linux のバイナリは含めないでください。
.NET Agent for Linux の Init コンテナイメージの構築
.NET Agent for Linux イメージをアプリケーションイメージとは別に構築します。このイメージは、複数の .NET Core アプリケーション展開環境で再利用できます。
または、init コンテナで Docker Hub の Splunk AppDynamics から事前に作成されたイメージを参照できます。
導入仕様への Init コンテナの追加
導入仕様を編集して必要なセクションを追加すると、エージェントバイナリを init コンテナからアプリケーションイメージにコピーできます。
導入仕様の次のスニペットは、必須の volumes、volumeMounts、および initContainer の定義を示しています。このコード例では、.NET Core アプリケーションイメージが dotnet-samples:aspnetapp に公開され、init コンテナイメージが事前に作成された docker.io/appdynamics/dotnet-core-agent:<version> のイメージを使用することを前提としています。ここで、<version> は .NET エージェントのバージョンです(例:21.5.0)。
kind: Deployment
spec:
containers:
- name: dotnet-app
image: microsoft/dotnet-samples:aspnetapp
volumeMounts:
- mountPath: /opt/appdynamics
name: appd-agent-repo
initContainers:
- name: appd-agent
image: docker.io/appdynamics/dotnet-core-agent:<version>
volumeMounts:
- mountPath: /appdynamics
name: appd-agent-repo
volumes:
- name: appd-agent-repo
emptyDir: {}
.NET Agent for Linux の環境変数の設定
必要な .NET エージェント環境変数をすべて設定するには、「Kubernetes でエージェントを設定するためのベストプラクティス」に示す次の手順を実行する必要があります。
ConfigMap を使用したアプリケーション サーバ エージェントの設定
コントローラのアクセスキーへの秘密の使用
導入仕様でのアプリケーション固有の設定
APPDYNAMICS_AGENT_TIER_NAME を設定します。
spec:
containers:
- name: dotnet-app
env:
- name: APPDYNAMICS_AGENT_TIER_NAME
value: dotnet-service
APPDYNAMICS_AGENT_UNIQUE_HOST_ID 環境変数の設定
APPDYNAMICS_AGENT_UNIQUE_HOST_ID 環境変数は、Linux 用 .NET Agent のバージョン 20.7.0 以降でサポートされています。以前のバージョンでは、ランタイム値に基づいて AppDynamicsConfig.json でプロパティを設定する必要があります。この導入仕様の例を参照してください。
APPDYNAMICS_AGENT_UNIQUE_HOST_ID 環境変数を設定して、クラスタエージェントとの APM 相関を有効にします。この値はランタイム値に依存するため、「クラスタエージェントと関連付けるアプリケーション エージェントの設定」に記載されている値を使用して、コンテナの起動コマンドでこの環境変数を設定します。たとえば、Docker ランタイムを使用する Kubernetes 環境では、次のように環境変数を設定します(export は必須です)。
kind: Deployment
spec:
containers:
image: microsoft/dotnet-samples:aspnetapp
command: ["/bin/sh"]
args: ["-c", "export APPDYNAMICS_AGENT_UNIQUE_HOST_ID=$(sed -rn '1s#.*/##; 1s/(.{12}).*/\\1/p' /proc/self/cgroup) && dotnet aspnetapp.dll"]
...
コンテナへの AppDynamicsConfig.json ファイルのコピー
一部の .NET Agent for Linux オプションは、AppDynamicsConfig.json ファイルで設定する必要があります。これには、outputtype を console に設定することが含まれます。これにより、エージェントログをログ集計ツールに送信しやすくなり、kubectl logs を使用してログを表示しやすくなります。
(オンプレミスコントローラのみ)コンテナへのコントローラ証明書のコピー
.NET Agent for Linux がオンプレミスコントローラと通信する場合は、コントローラ証明書をコンテナにコピーする必要があります。.NETエージェント用SSLの有効化 .NETエージェント用SSLの有効化
Init コンテナを使用するための設定例
この Dockerfile は、マルチステージビルドを使用して .NET Agent for Linux の init コンテナイメージを作成している例です。init コンテナを使用してエージェントバイナリをコピーする導入仕様の完全な例は、Github(dotnet-app.yaml)にあります。