Kubernetes CLI を使用したクラスタエージェントのインストール

このページでは、 OpenShift OperatorHub バンドルを使用してクラスタエージェントをインストールする方法について説明します。これは、「Kubernetes CLI を使用したクラスタエージェントのインストール」の代替手段です。

要件

開始する前に、次のことを確認します。

設置手順

  1. 最新のインストール手順については、https://github.com/kubernetes-sigs/metrics-server を参照してください。
    kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
  2. ダウンロードポータルから Kubernetes または OpenShift クラスタ エージェント バンドルをダウンロードし、バンドルの内容を現在のディレクトリに解凍します。
    unzip appdynamics-cluster-agent-alpine-linux-<version>.zip
  3. クラスタで名前空間 appdynamics を作成します。カスタム名前空間を使用する必要がある場合は、この手順を無視して、インストール中に同じ名前空間を使用するようにできます。ここでは、名前空間を appdynamics として使用しています。
    kubectl create namespace appdynamics
  4. (オプション)Kubernetes API サーバーを使用する必要がある場合は、USE_CUSTOM_KUBECONFIG 環境変数を true に設定し、cluster-agent-operator.yaml ファイルでサーバー API の詳細を指定してください。詳細については、「Kubernetes API サーバーを使用するようにイメージを設定する」を参照してください。
  5. 適切な Kubernetes および OpenShift バージョンを使用してクラスタ エージェント オペレータをインストールします(該当する場合)。
    Kubernetes 1.16 以上
    kubectl create -f cluster-agent-operator.yaml
    OpenShift と Kubernetes 1.16 以上
    kubectl create -f cluster-agent-operator-openshift.yaml
    OpenShift と Kubernetes 1.15 以下
    kubectl create -f cluster-agent-operator-openshift-1.15-or-less.yaml
    注: OpenShift クラスタの OpenShift OperatorHub からクラスタ エージェント オペレータをインストールすることもできます。
  6. コントローラのアカウントアクセスキーに基づいて、クラスタエージェントがレポートするコントローラアクセスキーのシークレットを作成します。
    kubectl -n appdynamics create secret generic cluster-agent-secret --from-literal=controller-key=<access-key>
  7. この例では、RedHat Registry で事前作成済みのクラスタ エージェント イメージを使用することを前提としています。クラスタ エージェント コンテナ イメージ クラスタエージェントの設定 クラスタ エージェント コンテナ イメージの作成
    apiVersion: cluster.appdynamics.com/v1alpha1
    kind: Clusteragent
    metadata:
      name: k8s-cluster-agent
      namespace: appdynamics
    spec:
      appName: "dev-cluster"
      controllerUrl: "http://mycontroller.com:8080"
      account: "my-account"
      # docker image info where, <version> is the image tag version that you are installing
      image: "docker.io/appdynamics/cluster-agent:<version>"
      serviceAccountName: appdynamics-cluster-agent
      nsToMonitorRegex: namespace1|namespace2
      stdoutLogging: "true"
  8. (オプション)複数のクラスタエージェントで単一のクラスタをモニターする必要がある場合は、ターゲットアロケータを設定します。cluster-agent.yaml ファイルで、クラスタエージェントのレプリカの数を使用してターゲットアロケータを有効にし、オペレータがクラスタエージェントのレプリカを作成できるようにします。「ターゲットアロケータ」を参照してください。
    注: ターゲットアロケータが有効になっている場合、自動インストルメンテーションと containerAppCorrelationMethod(Kubernetes 1.25 以降)はサポートされません。spec.instrumentationMethod を「」または「None」に、spec.containerAppCorrelationMethod を「」または「none」に設定します。

    cluster-agent.yaml

    …
    spec:
      …
    appName: "my-cluster"
    nsToMonitorRegex: ".*"
    instrumentationMethod: "None"
    containerAppCorrelationMethod: "none" 
    targetAllocator:
        enabled: true         # false if autoScaling is enabled
        clusterAgentReplicas: 3
        autoScaling:
          enabled: false #false by default
          replicaProfile: Default 
          maxClusterAgentReplicas: 12
          scaleDown:
            stabilizationWindowSeconds: 86400 #In Seconds
        podConfig:
          imagePullPolicy: Always
          imagePullSecret: ecr-secret
          priorityClassName: high-priority
          serviceAccountName: appdynamics-target-allocator
          nodeSelector:{}
          tolerations:[]
          resources:
            limits:
              cpu: 500m
              memory: 500Mi
            requests:
              cpu: 200m
              memory: 200Mi
          labels:{}
          securityContext:{}
  9. クラスタエージェントをインストールします。
    kubectl create -f cluster-agent.yaml
自動インストルメンテーションの検証とトラブルシューティングについては、「」を参照してください。 クラスタエージェントのインストールの検証インストールが検証されたら、クラスタ内のアプリケーションにアプリケーション サーバー エージェントをインストールするためのオプションについて「コンテナのインストールオプション」を参照してください。

カスタム Kubernetes API サーバーを使用するための設定

Kubernetes API サーバーを使用するには、cluster-agent-operator.yaml(Kubernetes 1.16 以降の場合)または cluster-agent-operator-openshift.yaml(OpenShift with Kubernetes 1.16 以降の場合)の spec に以下を追加する必要があります。

  1. cluster-agent-operator.yaml ファイル内の configMap を Kubernetes API サーバーの詳細で更新します。これらの詳細情報は必須です。
    • server:Kubernetes API サーバーの URL を指定します。
    • clusters.name:クラスタの名前。
    • users.name:Kubernetes API サーバーにアクセスできるユーザーの名前。
    • contexts.context:クラスタ名とユーザー名を更新して、ユーザーの詳細を特定のクラスタにマッピングします。次のサンプルの yaml ファイルには、必要なパラメータが含まれています。
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: custom-kubeconfig
        namespace: appdynamics
      data:
        kubeconfig: |
          apiVersion: v1
          clusters:
          - cluster:
              server: "https://kubernetes.default.svc"
              certificate-authority: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
            name: psr-cluster
          contexts:
          - context:
              cluster: psr-cluster
              user: psr-user
            name: psr-context
          current-context: psr-context
          kind: Config
          preferences: {}
          users:
          - name: psr-user
            user:
              tokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
      ここで、https://kubernetes.default.svc は API サーバーの URL です。[clusters] では、psr-cluster はクラスタの名前です。users では、psr-user は Kubernetes API サーバーを使用できるユーザーです。
  2. cluster-agent-operator.yaml ファイル(Kubernetes 1.16 以降の場合)または cluster-agent-operator-openshift.yaml ファイル(OpenShift with Kubernetes 1.16 以降の場合)で USE_CUSTOM_KUBECONFIG 環境変数を true に設定します。
    
    - name: USE_CUSTOM_KUBECONFIG
      value: "true