Helm チャートを使用したクラスタエージェントのインストール

このページでは、クラスタエージェントの Helm チャートを使用してクラスタエージェントを展開する方法について説明します。

Helm は Kubernetes のパッケージマネージャです。Helm チャートは、一連の Kubernetes リソースについて説明するファイルのコレクションです。クラスタエージェントの Helm チャートは、Splunk AppDynamics オペレータとクラスタエージェントを展開するのに便利な方法です。クラスタエージェントの Helm チャートを使用して、1 つのクラスタに複数のクラスタエージェントを展開することもできます。これは、単一のクラスタエージェントのポッドモニタリング制限を超える大規模なクラスタで必要になることがあります。「クラスタエージェントの要件およびサポート対象環境」を参照してください。

要件

  • クラスタ エージェント バージョン 20.6 以降
  • コントローラバージョン 20.6 以降
  • クラスタエージェントの Helm チャートが Helm 3.0 と互換性を持っている
注:
  • バージョン v1.1.0 以降のクラスタエージェントの Helm チャートを使用することを推奨します。

  • Splunk AppDynamicsクラスタエージェント 23.2.0 以降および オペレータバージョン 23.2.0 以降をインストールするために、クラスタエージェントの Helm チャートバージョン v1.10.0 以降を使用します。

  • Splunk AppDynamicsクラスタエージェント 21.12.0 以降および オペレータバージョン 21.12.0 以降をインストールするために、クラスタエージェントの Helm チャートバージョン v1.1.0 以降を使用します。

  • Splunk AppDynamics古いメジャーバージョンのクラスタエージェントの Helm チャート(0.1.19 以前)を使用して、バージョン 21.10.0 以前のクラスタエージェントおよびバージョン 0.6.11 以前のオペレータをインストールできます。

クラスタへの単一のクラスタエージェントのインストール

  1. 次のコマンドを使用して、Splunk AppDynamics エージェントに関連する、以前にインストールされたすべての CustomResourceDefinition(CRD)を削除します。

    CODE
    $ kubectl get crds 
    $ kubectl delete crds <crd-names>
  2. チャートリポジトリを Helm に追加します。

    CODE
    helm repo add appdynamics-cloud-helmcharts https://appdynamics.jfrog.io/artifactory/appdynamics-cloud-helmcharts/
  3. クラスタで appdynamics の名前空間を作成します。

    CODE
    kubectl create namespace appdynamics
  4. values-ca1.yaml の例では、Helm 値ファイルを作成します。コントローラのログイン情報を使用して controllerInfo プロパティを更新します。clusterAgent プロパティを更新して、モニターする名前空間とポッドを設定します。使用可能なプロパティ nsToMonitorRegexnsToExcludeRegex、および podFilter の詳細については、「クラスターエージェントの設定」を参照してください。

    values-ca1.yaml

    CODE
    # To install Cluster Agent 
    installClusterAgent: true
    
    
    # controller info
    controllerInfo:
      url: https://<controller-url>:443
      account: <appdynamics-controller-account>                   
      username: <appdynamics-controller-username>                          
      password: <appdynamics-controller-password>                                 
      accessKey: <appdynamics-controller-access-key>  
    
    # Cluster agent config
    clusterAgent:
      nsToMonitorRegex: dev-.*
    注: クラスタエージェント 24.9 以降では、ポッドの削除時に関連ノードを履歴としてマークするためのサーバーモニタリングユーザーのログイン情報または API ユーザーログイン情報は必要なくなりました。ポッドが削除されると、コントローラの関連ノードは自動的に履歴としてマークされます。
    使用可能なオプションの詳細については、「values.yaml の設定オプション」を参照してください。また、次のコマンドを使用して、Helm チャートリポジトリから values.yaml のコピーをダウンロードできます。
    CODE
    helm show values appdynamics-cloud-helmcharts/cluster-agent
  5. (オプション)複数のクラスターエージェントで単一のクラスターをモニターする必要がある場合は、ターゲットアロケータを設定します。オペレータがクラスターエージェントのレプリカを作成できるようにするには、values-ca1.yaml ファイルで、クラスタエージェントのレプリカの数を使用してターゲットアロケータを有効にします。
    values-ca1.yaml
    JSON
    ...  
    
    # Cluster agent config
    clusterAgent:
      nsToMonitorRegex: dev-.*
    
    #Instrumentation config
    instrumentationConfig:
      enabled: false
    
    # Target allocator Config
    targetAllocator:
      enabled: true
      clusterAgentReplicas: 3
      autoScaling
        enabled: false #false by default
        replicaProfile: Default 
        maxClusterAgentReplicas: 12
        scaleDown:
          stabilizationWindowSeconds: 86400 #In Seconds
    
    # Target Allocator pod specific properties
    targetAllocatorPod:
      imagePullPolicy: ""
      imagePullSecret: ""
      priorityClassName: ""
      nodeSelector: {}
      tolerations: []
      resources:
        limits:
          cpu: "500m"
          memory: "500Mi"
        requests:
          cpu: "200m"
          memory: "200Mi"
      labels: {}
      securityContext: {}
    ターゲットアロケータの詳細については、「ターゲットアロケータ」を参照してください。
  6. (オプション)コントローラアクセスキーに基づいてシークレットを作成します。create-secret-accesskey
    CODE
    kubectl -n appdynamics create secret generic cluster-agent-secret --from-literal=controller-key='<access-key>' --from-literal=api-user='<username@account:password>'
  7. クラスタ(通常は kube-system 名前空間に配置)に Kubernetes metrics-server をインストールしていない場合は、値ファイルで install.metrics-servertrue に設定し、サブチャートを呼び出してインストールします。

    CODE
    install:
      metrics-server: true
    注: install.metrics-server を設定すると、--namespace フラグが付いた名前空間に metrics-server がインストールされます。この名前空間は、クラスタエージェントと同じです。
  8. クラスタエージェントを appdynamics 名前空間に展開します。

    CODE
    helm install -f ./values-ca1.yaml "<my-cluster-agent-helm-release>" appdynamics-cloud-helmcharts/cluster-agent --namespace=appdynamics

自動インストルメンテーションの有効化

クラスタエージェントが正常にインストールされたことを確認したら、値 YAML ファイルの instrumentationConfig セクションに設定を追加して、自動インストルメンテーションを有効にできます。この例では、instrumentationConfig.enabledtrue に設定され、複数の instrumentationRules が定義されています。「クラスタエージェントを使用したアプリケーションの自動インストルメンテーション」を参照してください。

自動インストルメンテーションが有効になっている values-ca1.yaml
CODE
# To install Cluster Agent 
installClusterAgent: true


# AppDynamics controller info
controllerInfo:
  url: https://<controller-url>:443
  account: <appdynamics-controller-account>                   
  username: <appdynamics-controller-username>                          
  password: <appdynamics-controller-password>                                 
  accessKey: <appdynamics-controller-access-key>  

# Cluster agent config
clusterAgent:
  nsToMonitorRegex: ecom|books|groceries

instrumentationConfig:
  enabled: true
  instrumentationMethod: Env
  nsToInstrumentRegex: ecom|books|groceries
  defaultAppName: Ecommerce
  tierNameStrategy: manual
  enableInstallationReport: false
  imageInfo:
    java:
      image: "docker.io/appdynamics/java-agent:latest"
      agentMountPath: /opt/appdynamics
      imagePullPolicy: Always
  instrumentationRules:
    - namespaceRegex: groceries
      language: dotnetcore
	  tierName: tier
      imageInfo:
        image: "docker.io/appdynamics/dotnet-core-agent:latest"
        agentMountPath: /opt/appdynamics
        imagePullPolicy: Always
    - namespaceRegex: books
      matchString: openmct
      language: nodejs
      imageInfo:
        image: "docker.io/appdynamics/nodejs-agent:20.5.0-alpinev10"
        agentMountPath: /opt/appdynamics
        imagePullPolicy: Always
      analyticsHost: <hostname of the Analytics Agent>
      analyticsPort: 443
      analyticsSslEnabled: true
自動インストルメンテーションの設定が追加された values-ca1.yaml ファイルを保存したら、Helm チャートをアップグレードする必要があります。
CODE
helm upgrade -f ./ca1-values.yaml "<my-cluster-agent-helm-release>" appdynamics-cloud-helmcharts/cluster-agent --namespace appdynamics

設定オプション

設定オプション 説明 必須
installClusterAgent クラスタエージェントのインストールに使用されます。これは true に設定する必要があります。 オプション(デフォルトは true)
イメージ設定オプション(values.yaml 内の imageInfo キーの下にある設定オプション)
imageInfo.agentImage クラスタエージェントのイメージアドレス(<registryUrl>/<registryAccount>/<project> 形式) オプション(デフォルトは Docker ハブイメージ)
imageInfo.agentTag クラスタエージェントのイメージタグ/バージョン オプション(デフォルトは最新)
imageInfo.operatorImage オペレータのイメージアドレス(<registryUrl>/<registryAccount>/<project> 形式) オプション(デフォルトは Docker ハブイメージ)
imageInfo.operatorTag オペレータのイメージタグ/バージョン オプション(デフォルトは最新)
imageInfo.imagePullPolicy オペレータポッドのイメージプルポリシー オプション
カスタム Kubernetes API サーバー設定オプション(values.yaml の customKubeconfig キーの下にある設定オプション)
イネーブル化 customKubeconfig パラメータを有効にします。デフォルトでは、値は false に設定されています。Kubernetes API サーバーを使用するには、このパラメータを true に設定します。 オプション
サーバ クラスタの Kubernetes API サーバーの URL。 customKubeconfig が有効になっている場合は必須です。
cluster クラスタの名前。 customKubeconfig が有効になっている場合は必須です。
user Kubernetes サーバー API にアクセスするためのユーザー名。 customKubeconfig が有効になっている場合は必須です。
コントローラ設定オプション(values.yamlcontrollerInfo キーの下にある設定オプション)
controllerInfo.accessKey

コントローラのアクセスキー

必須

注: アクセスキーに基づいてアクセスキーシークレットを作成した場合、これは必要ありません。「シークレットの作成」を参照してください。
controllerInfo.account コントローラアカウント 必須
controllerInfo.authenticateProxy プロキシが認証を必要とする場合は true または false オプション
controllerInfo.customSSLCert PEM 形式の SSL 証明書の Base64 エンコーディング オプション
controllerInfo.password コントローラのパスワード

コントローラからのローカルユーザーのパスワード。

自動インストルメンテーションが有効になっている場合にのみ必須です。

注: アクセスキーに基づいてアクセスキーシークレットを作成した場合、これは必要ありません。「シークレットの作成」を参照してください。
controllerInfo.proxyPassword プロキシ認証のパスワード オプション
controllerInfo.proxyUrl コントローラが一部のプロキシの背後にある場合のプロキシ URL オプション
controllerInfo.proxyUser プロキシ認証のユーザ名 オプション
controllerInfo.url コントローラ URL 必須
controllerInfo.username コントローラのユーザー名

コントローラからのローカルユーザーのユーザー名。

自動インストルメンテーションが有効になっている場合にのみ必須です。

クラスターエージェント設定(values.yamlclusterAgent キーの下にある設定オプション)
注: OpenShift バージョンが 4.14 より新しい場合は、securityContext 内のすべての子パラメータが、セキュリティコンテキスト制約(SCC)で概説されている許容値に基づいて指定されていることを確認します。Red Hat OpenShift ドキュメントの「セキュリティコンテキスト上の制約」を参照してください。

たとえば、RunAsUser プロパティを使用する場合、ユーザー ID(UID)は許容範囲である必要があります。UID の SCC の許容範囲は 1000 ~ 9001 です。したがって、RunAsUser 値はこの範囲内でのみ追加できます。他のセキュリティ コンテキスト パラメータについても同様です。

clusterAgent.appName クラスタの名前。クラスタ名としてコントローラ UI に表示されます。 必須
clusterAgent.eventUploadInterval

Kubernetes の警告および状態変更イベントがコントローラにアップロードされる頻度(秒単位)。「Kubernetes イベントのモニター」を参照してください。

オプション
clusterAgent.httpClientTimeout

コントローラから応答を受信しなかった場合にサーバコールが終了するまでの秒数。

オプション
clusterAgent.imagePullSecret

プライベート Docker レジストリまたはリポジトリからイメージをプルする場合の認証に使用されるクレデンシャルファイル。Docker レジストリ構成に基づいて、クラスタエージェントのイメージをプルする場合に Splunk AppDynamics オペレータが使用するシークレットファイルの作成が必要になる場合があります。「コマンドラインでログイン情報を入力してシークレットを作成する」を参照してください。

オプション
clusterAgent.instrumentationMaxPollingAttempts

クラスタエージェントがインストルメンテーションのロールアウトが成功したかどうかをチェックしてから失敗とマークするまでの最大回数。

オプション
clusterAgent.logProperties.logFileSizeMb

ログの最大ファイルサイズ(MB 単位)。

オプション
clusterAgent.logProperties.logFileBackups

ログに保存するバックアップの最大数。最大バックアップ数に達すると、最初のログファイルの次に最も古いログファイルが削除されます。

オプション
clusterAgent.logProperties.logLevel

ログの詳細の数。INFOWARNINGDEBUG、または TRACE

オプション
clusterAgent.logProperties.maxPodLogsTailLinesCount

ログの収集中に tail される行数。

このパラメータを使用するには、ログキャプチャ機能を有効にします。「失敗したポッドのログ収集の有効化」を参照してください。

オプション
clusterAgent.logProperties.stdoutLogging

デフォルトでは、クラスタエージェントは logs ディレクトリ内のログファイルに書き込みます。さらに、コンテナ stdout にログを送信するため、stdoutLogging パラメータが用意されています。

オプション
clusterAgent.nsToMonitorRegex

クラスタでモニタする必要のある名前空間を選択するための正規表現。

複数の名前空間をモニターする必要がある場合は、スペースを使用せずに | を使用して名前空間を区切ります。

ターゲットアロケータを使用する場合は、モニタする必要があるすべての名前空間を指定する必要があります。ターゲットアロケータは、これらの名前空間を個々のクラスタエージェントのレプリカに自動的に割り当てます。

名前空間の編集」を参照してください。

注: UI での名前空間の変更は、YAML 設定よりも優先されます。
オプション
clusterAgent.nsToExcludeRegex

nsToMonitorRegex に指定された正規表現に一致する、選択した名前空間から除外する必要がある名前空間の正規表現。

注:
  • このパラメータは、20.9 以上のクラスタエージェント、および 20.10 以上のコントローラでサポートされます。
  • UI での名前空間の変更は、YAML 設定よりも優先されます。

このパラメータは、nsToMonitorRegex パラメータの値を指定した場合にのみ使用できます。

オプション
clusterAgent.priorityClassName

ポッドの仕様で優先順位を設定するために使用される、ポッド優先順位クラスの名前。

オプション

clusterAgent.securityContext.runAsGroup

アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するグループの groupId(GID)を指定します。

これにより、エージェント アーティファクトに適切なファイル権限が設定されます。

この値は、インストゥルメント化されたすべてのリソースに適用されます。

デフォルトのインストゥルメンテーション用に設定されている runAsGroup のデフォルト値を上書きする必要がある場合、またはこのルールを満たすリソースに特定の値が必要な場合は、このパラメータを追加します。

クラスタ エージェント イメージには、GID 9001 のグループが含まれています。

オプション

clusterAgent.securityContext.runAsUser

アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するユーザーの userId(UID)を指定します。

これにより、エージェント アーティファクトに適切なファイル権限が設定されます。

この値は、インストゥルメント化されたすべてのリソースに適用されます。

デフォルトのインストゥルメンテーション用に設定されている runAsUser のデフォルト値を上書きする必要がある場合、またはこのルールを満たすリソースに特定の値が必要な場合は、このパラメータを追加します。

クラスタ エージェント イメージに、UID 9001 のユーザーが含まれています。

オプション

clusterAgent.securityContext.allowPrivilegeEscalation

プロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します。次のコンテナとして実行されている場合、この値は true です。

  • 特権コンテナ
  • CAP_SYS_ADMIN
注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション
clusterAgent.securityContext.capabilities

実行中のコンテナの POSIX 機能を追加または削除します。これは、コンテナランタイムにデフォルトの機能セットを使用します。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション
clusterAgent.securityContext.privileged

ホストでのルートに相当する特権モードでコンテナを実行します。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション
clusterAgent.securityContext.procMount

コンテナに使用する proc マウントのタイプ。

注: このパラメータは、現在、展開および展開構成モードで使用できます。
オプション
clusterAgent.securityContext.readOnlyRootFilesystem

このコンテナに読み取り専用のルートファイルシステムがあるかどうかを指定します。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、展開および展開構成モードで使用できます。
オプション
clusterAgent.securityContext.runAsNonRoot

コンテナを非ルートユーザーとして実行する必要があるかどうかを指定します。

この値が true の場合、Kubelet は実行時にイメージを検証して、ルートとして実行したときにコンテナの開始が失敗することを確認します。このパラメータが指定されていない場合、または値が false の場合、検証は行われません。

注: このパラメータは、現在、展開および展開構成モードで使用できます。
オプション
clusterAgent.securityContext.seLinuxOptions

SELinux コンテキストをコンテナに適用します。このパラメータが指定されていない場合、コンテナランタイムは各コンテナにランダムな SELinux コンテキストを割り当てます。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
オプション
clusterAgent.securityContext.seccompProfile

コンテナで使用される seccomp オプションを指定します。ポッドレベルとコンテナレベルの両方で seccomp オプションが指定されている場合、コンテナオプションはポッドオプションをオーバーライドします。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、展開および展開構成モードで使用できます。
オプション
clusterAgent.securityContext.windowsOptions

すべてのコンテナに Windows 固有のオプションを指定します。

注:
  • このパラメータは、spec.os.name が Windows の場合は使用できません。
  • このパラメータは、現在、展開および展開構成モードで使用できます。
オプション
クラスタエージェントのポッド構成
agentPod.labels

必要なポッドラベルをクラスタエージェントポッドに追加します。これらのラベルは、クラスタエージェントの展開にも追加されます。

オプション
agentPod.nodeSelector

エージェントポッドは、その labels プロパティ内に指定された key-value ペアを含むノードで実行されます。「nodeSelector」を参照してください。

オプション
agentPod.resources

クラスタエージェントに対する CPU リソースとメモリリソースの要求と制限。

オプション
agentPod.tolerations

ポッドに必要な許容値の配列。「Taint and Tolerations」を参照してください。

オプション
ポッドフィルタの設定
podFilter 次に基づいたブロックリストまたは許可リストポッド:
  • ポッド名の正規表現
  • ポッドラベル

名前によるブロックリストまたは許可リストの登録は、ラベルによるブロックリストまたは許可リストの登録よりも優先されます。たとえば、podFilter が次の場合:

podFilter:
blocklistedLabels: - release: v1
allowlistedNames: - ^podname

これにより、名前が「podname」で始まるものを除いて、ラベル「release=v1」を持つすべてのポッドがブロックされます。

  • ポッドが名前別に許可リストおよびブロックリストに登録されている場合は、許可リストに登録されます。
  • ポッドがラベル別に許可リストおよびブロックリストに登録されている場合は、許可リストに登録されます。
オプション
ターゲットアロケータ設定
targetAllocator.enabled

使用可能なクラスタエージェントのレプリカに対する名前空間の自動割り当ての使用を有効化します。デフォルトでは、無効になっています。このプロパティを有効にするには、 enabledtrueに設定します。

ターゲットアロケータの詳細については、 「ターゲットアロケータ」を参照してください。

オプション
targetAllocator.clusterAgentReplicas

クラスタエージェントのレプリカの数。ターゲットアロケータが有効になっている場合、デフォルト値は 3 です。要件に基づいてレプリカ数を設定します。必要なレプリカ数を判断するには、「クラスタエージェントの要件およびサポート対象環境」を参照してください。

オプション

これは、[targetAllocator.enabled] が true に設定されている場合に必要です。

targetAllocator.autoScaling.enabled デフォルト値は false です。レプリカを作成するための自動スケーリングを有効にするには、 true を指定します。 オプション
targetAllocator.autoScaling.replicaProfile

使用されるプロファイル。現在、Default プロファイルのみ使用可能です。Default プロファイルは 1550mi メモリと 3750m CPU を使用して、 2500 ポッドをモニターします。

オプション。

自動スケーリングが有効になっている場合は必須です。

targetAllocator.autoScaling.maxClusterAgentReplicas 自動スケールに必要なレプリカの最大数を指定します。 オプション
targetAllocator.autoScaling.scaleDown.stableizationWindowSeconds

ターゲットアロケータがレプリカをスケールダウンできるまでの時間を秒単位で指定します。

スケールダウンするとメトリックがドロップすることがあります。デフォルトでは、このパラメータは無効になっています。

オプション
ターゲットアロケータのポッド構成
targetAllocatorPod.agentPod.labels

必要なポッドラベルをポッドに追加します。これらのラベルは、ターゲットアロケータの展開にも追加されます。

オプション
targetAllocatorPod.nodeSelector

ターゲットアロケータポッドは、その labels プロパティ内に指定されたキーと値のペアを含むノードで実行されます。「nodeSelector」を参照してください。

オプション
targetAllocatorPod.agentPod.resources

ターゲット アロケータに対する CPU リソースとメモリリソースの要求と制限。

オプション
targetAllocatorPod.agentPod.tolerations

ポッドに必要な許容値の配列。「Taint and Tolerations」を参照してください。

オプション
targetAllocatorPod.imagePullPolicy

ターゲットアロケータのイメージプルポリシー。

オプション
targetAllocatorPod.imagePullSecret

プライベート Docker レジストリまたはリポジトリからイメージをプルする場合の認証に使用されるクレデンシャルファイル。Docker レジストリ構成に基づいて、クラスタエージェントのイメージ(クラスタ エージェント イメージ同じ)をプルする場合に Splunk AppDynamics オペレータが使用するシークレットファイルの作成が必要になる場合があります。「コマンドラインでログイン情報を入力してシークレットを作成する」を参照してください。

オプション
targetAllocatorPod.priorityClassName

ポッドの仕様で優先順位を設定するために使用される、ポッド優先順位クラスの名前。

オプション
targetAllocatorPod.nodeSelector

ターゲットアロケータポッドは、その labels プロパティ内に指定された key-value 値のペアを含むノードで実行されます。「nodeSelector」を参照してください。

オプション
targetAllocatorPod.tolerations

ポッドに必要な許容値の配列。「Taint and Tolerations」を参照してください。

オプション
targetAllocatorPod.resources

クラスタエージェントに対する CPU リソースとメモリリソースの要求と制限。

オプション

targetAllocatorPod.securityContext

注:

OpenShift バージョンが 4.14 より新しい場合は、securityContext 内のすべての子パラメータが、セキュリティコンテキスト制約(SCC)で概説されている許容値に基づいて指定されていることを確認します。Red Hat OpenShift ドキュメントの「セキュリティコンテキスト上の制約」を参照してください。

たとえば、 RunAsUser プロパティを使用する場合、ユーザー ID(UID)は許容範囲の値である必要があります。UID の SCC の許容範囲は 1000 ~ 9001 です。したがって、RunAsUser 値はこの範囲内でのみ追加できます。他のセキュリティ コンテキスト パラメータについても同様です。

securityContext の下に次のパラメータを含めることができます。

runAsGroup:アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するグループの groupId を提供します。

これにより、エージェント アーティファクトに適切なファイル権限が設定されます。

この値は、インストゥルメント化されたすべてのリソースに適用されます。

デフォルトのインストゥルメンテーション用に設定されている runAsGroup のデフォルト値を上書きする必要がある場合、またはこのルールを満たすリソースに特定の値が必要な場合は、このパラメータを追加します。

オプション

runAsUser:アプリケーションコンテナを非ルートユーザーとして構成した場合は、対応するユーザーの userId を提供します。

これにより、エージェント アーティファクトに適切なファイル権限が設定されます。

この値は、インストゥルメント化されたすべてのリソースに適用されます。

デフォルトのインストゥルメンテーション用に設定されている runAsUser のデフォルト値を上書きする必要がある場合、またはこのルールを満たすリソースに特定の値が必要な場合は、このパラメータを追加します。

allowPrivilegeEscalation:プロセスが親プロセスよりも多くの権限を取得できるかどうかを制御します。次のコンテナとして実行されている場合、この値は true です。

  • 特権コンテナ
  • CAP_SYS_ADMIN

このパラメータを設定しない場合、Helm はデフォルト値 true を使用します。

注: このパラメータは、現在、展開および展開構成モードで使用できます。
capabilities:実行中のコンテナの POSIX 機能を追加または削除します。これは、コンテナランタイムにデフォルトの機能セットを使用します。
注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。

privileged:ホストでのルートに相当する特権モードでコンテナを実行します。

このパラメータを設定しない場合、Helm はデフォルト値 true を使用します。

注: このパラメータは、現在、Deployment および DeploymentConfig モードで使用できます。
procMount:コンテナに使用する proc マウントのタイプ。
注: このパラメータは、現在、展開および展開構成モードで使用できます。
readOnlyRootFilesystem:このコンテナに読み取り専用のルートファイルシステムがあるかどうかを指定します。
注: このパラメータは、現在、展開および展開構成モードで使用できます。
runAsNonRoot:コンテナを非ルートユーザーとして実行する必要があるかどうかを指定します。

この値が true の場合、Kubelet は実行時にイメージを検証して、ルートとして実行したときにコンテナの開始が失敗することを確認します。このパラメータが指定されていない場合、または値が false の場合、検証は行われません。

注: このパラメータは、現在、展開および展開構成モードで使用できます。
seLinuxOptions:SELinux コンテキストをコンテナに適用します。このパラメータが指定されていない場合、コンテナランタイムは各コンテナにランダムな SELinux コンテキストを割り当てます。
注: このパラメータは、現在、展開および展開構成モードで使用できます。
seccompProfile:コンテナで使用される seccomp オプションを指定します。ポッドレベルとコンテナレベルの両方で seccomp オプションが指定されている場合、コンテナオプションはポッドオプションをオーバーライドします。
注: このパラメータは、現在、展開および展開構成モードで使用できます。
windowsOptions:すべてのコンテナに Windows 固有のオプションを指定します。
注: このパラメータは、現在、展開および展開構成モードで使用できます。

クラスタへの複数のクラスタエージェントのインストール

クラスタエージェントの Helm チャートでは、クラスタ内の複数のクラスタエージェントのインストールをサポートしています。これは、単一のクラスタエージェントのポッドモニタリング制限を超える大規模なクラスタで必要になることがあります。「クラスタエージェントの要件およびサポート対象環境」を参照してください。

注:

自動インストルメンテーションと手動の相関関係(Kubernetes 1.25 以降)を使用する必要がない場合は、ターゲットアロケータを使用してクラスタエージェントをインストールできます。

ターゲットアロケータ:

  • 指定された数のクラスタエージェントのレプリカを作成することにより、大規模クラスタのモニタリングを簡素化します。
  • 使用可能なクラスタエージェントのレプリカに名前空間を自動的に割り当てます。
  • コントローラに送信するクラスターデータを集約します。

展開される各クラスタエージェントは、異なる設定にする必要があります。これは、nsToMonitornsToMonitorRegex, nsToMonitorExcludeRegex、および podFilter プロパティを使用して、モニタリングを名前空間とポッドの異なるセットに制限することで実現されます。「クラスタエージェントの設定」を参照してください。

クラスタエージェントをインストールするには、次の手順を実行します。

  1. 最初のクラスタエージェントと同じ controllerInfo プロパティを使用する、values-ca2.yaml と呼ばれる新しい値ファイルを例として作成します。このクラスタエージェントのモニタリング範囲を設定するには、nsToMonitorRegexpodFilter などのプロパティを追加します。
    values-ca2.yaml
    CODE
    # To install Cluster Agent
    installClusterAgent: true
    # AppDynamics controller info
    controllerInfo:
    url: https://<controller-url>:443
    account: <appdynamics-controller-account>
    accessKey: <appdynamics-controller-access-key>
    # Cluster agent config
    clusterAgent:
    nsToMonitorRegex: stage.*
    podFilter:
    allowlistedLabels:
    - label1: value1
    - label2: value2
    blocklistedLabels: []
    allowlistedNames: []
    blocklistedNames: []
  2. 最初のインストールで使用した以前の名前空間とは異なる名前空間を作成します。
    CODE
    kubectl create ns appdynamics-ca2
  3. 追加のクラスタエージェントをインストールします。
    CODE
    helm install -f ./values-ca2.yaml "<my-2nd-cluster-agent-helm-release>" appdynamics-cloud-helmcharts/cluster-agent --namespace=appdynamics-ca2

クラスタエージェントの Helm チャートの設定例

次の例は、クラスタエージェントの Helm チャートのさまざまな設定を示しています。

クラスタエージェントの Helm チャートを使用したカスタム SSL の有効化

user-values.yaml

CODE
controllerInfo:
url: https://<controller-url>:443
account: <appdynamics-controller-account>
accessKey: <appdynamics-controller-access-key>
#=====
customSSLCert: "<base64 of PEM formatted cert>"
#=====
agentServiceAccount: appdynamics-cluster-agent-ssl     # Can be any valid name
operatorServiceAccount: appdynamics-operator-ssl       # Can be any valid name

クラスタエージェントの Helm チャートを使用したプロキシコントローラの有効化

認証なしの場合:

user-values.yaml

CODE
# To install Cluster Agent
installClusterAgent: true
controllerInfo:
url: https://<controller-url>:443
account: <appdynamics-controller-account>
accessKey: <appdynamics-controller-access-key>
#=====
proxyUrl: http://proxy-url.appd-controller.com
#=====
agentServiceAccount: appdynamics-cluster-agent-ssl     # Can be any valid name
operatorServiceAccount: appdynamics-operator-ssl       # Can be any valid name

認証ありの場合:

user-values.yaml

CODE
# To install Cluster Agent
installClusterAgent: true
controllerInfo:
url: https://<controller-url>:443
account: <appdynamics-controller-account>
accessKey: <appdynamics-controller-access-key>
#=====
authenticateProxy: true
proxyUrl: http://proxy-url.appd-controller.com
proxyUser: hello
proxyPassword: world
#=====
agentServiceAccount: appdynamics-cluster-agent-ssl     # Can be any valid name
operatorServiceAccount: appdynamics-operator-ssl       # Can be any valid name

クラスタエージェントの Helm チャートを使用した nodeSelector と許容値の追加

user-values.yaml

CODE
agentPod:
nodeSelector:
nodeLabelKey: nodeLabelValue
tolerations:
- effect: NoExecute
operator: Equal
key: key1
value: val1
tolerationSeconds: 11
operatorPod:
nodeSelector:
nodeLabelKey: nodeLabelValue
anotherNodeLabel: anotherNodeLabel
tolerations:
- operator: Exists
key: key1

機密データのベストプラクティス

複数の values.yaml ファイルを使用して、機密データを個別の values.yaml ファイルに分けることを推奨します。これらの値の例を次に示します。

  • controllerInfo.password
  • controllerInfo.accessKey
  • controllerInfo.customSSLCert
  • controllerInfo.proxyPassword

values のファイルはデフォルトの構造(values.yaml)に従い、機密性の低い設定プロパティのファイルを簡単に共有し、機密性の高い値を安全に保ちます。

以下にデフォルトの user-values.yaml ファイルの例を示します。

CODE
# To install Cluster Agent 
installClusterAgent: true
 
imageInfo:
  agentImage: dtr.corp.appdynamics.com/sim/cluster-agent
  agentTag: latest
  operatorImage: docker.io/appdynamics/cluster-agent-operator
  operatorTag: latest
  imagePullPolicy: Always                            
 
controllerInfo:
  url: https://<controller-url>:443
  account: <appdynamics-controller-account>                   
  username: <appdynamics-controller-username>                          
  password: <appdynamics-controller-password>                                 
  accessKey: <appdynamics-controller-access-key>
 
agentServiceAccount: appdynamics-cluster-agent-ssl     # Can be any valid name
operatorServiceAccount: appdynamics-operator-ssl       # Can be any valid name

user-values-sensitive.yaml

CODE
controllerInfo:
  password: welcome
  accessKey: abc-def-ghi-1516

Helm チャートをインストールする場合は、複数の -f を使用します

CODE
helm install -f ./user-values.yaml -f ./user-values-sensitive.yaml "<my-cluster-agent-helm-release>" appdynamics-cloud-helmcharts/cluster-agent --namespace ca-appdynamics