このページでは、クラスタエージェントのコンテナイメージを作成する方法、または事前作成されたイメージを内部レジストリに送信する方法について説明します。

この手順は、次の場合に必須です。

  • 内部イメージポリシーを満たすために独自のイメージを構築する必要がある。あるいは、
  • Docker Hub で事前に作成されたクラスタエージェントのイメージ、または Red Hat コンテナレジストリを内部コンテナレジストリに保存する必要がある。
    クラスタエージェントのインストール」を参照してください。

それ以外の場合は、cluster-agent.yaml または values.yaml  Helm ファイルで Docker Hub および Red Hat コンテナレジストリの事前に作成されたクラスタエージェントのイメージを参照できます。この例では、Docker Hub にパブリッシュされた事前作成済みのクラスタ エージェント イメージ 21.5.0 を使用します。

apiVersion: appdynamics.com/v1alpha1
kind: Clusteragent
metadata:
 name: k8s-cluster-agent
 namespace: appdynamics
spec:
 controllerUrl: "http://<account>.saas.appdynamics.com"
 account: "<account-name>"
 appName: "Cluster1"
 image: docker.io/appdynamics/cluster-agent:21.5.0
YML

カスタム クラスタ エージェント イメージの作成

AppDynamics ダウンロードポータルのダウンロードパッケージには、クラスタエージェントのコンテナイメージを作成および展開する必要があるファイルが含まれています。 

クラスタエージェントのイメージを作成するために使用されるベースイメージに応じて、ポータルで使用できるパッケージには次の 2 つのタイプがあります。

  • Alpine Linux ベースのベースイメージ
  • Rhel Linux 7 ベースのベースイメージ

Alpine および Rhel Linux のダウンロードパッケージのディレクトリ構造は次のとおりです。

cluster-agent 
├── cluster-agent-operator.yaml 
├── cluster-agent-operator-1.15-or-less.yaml
├── cluster-agent-operator-openshift-1.15-or-less.yaml
├── cluster-agent-operator-openshift.yaml 
├── cluster-agent.yaml 
├── infraviz.yaml
├── infraviz-pod-security-policy.yaml
├── infraviz-security-context-constraint-openshift.yaml
├── README-alpine.md 
└── docker 
	├── cluster-agent.zip 
	├── Dockerfile
	├── LICENSE 
	└── start-appdynamics
└── helm-charts
	├── Chart.yaml
    ├── README.md
    ├── crds
    ├── templates
    └── values.yaml
TEXT
cluster-agent 
├── cluster-agent-operator.yaml 
├── cluster-agent-operator-1.15-or-less.yaml
├── cluster-agent-operator-openshift-1.15-or-less.yaml
├── cluster-agent-operator-openshift.yaml 
├── cluster-agent.yaml 
├── infraviz.yaml
├── infraviz-pod-security-policy.yaml
├── infraviz-security-context-constraint-openshift.yaml
├── README-rhel.md 
└── docker 
	├── cluster-agent.zip 
	├── Dockerfile-rhel 
	├── LICENSE 
	└── start-appdynamics
└── helm-charts
	├── Chart.yaml
    ├── README.md
    ├── crds
    ├── templates
    └── values.yaml
TEXT

カスタム クラスタ エージェント イメージの作成

Rhel Linux 7 ベースのクラスタ エージェント イメージは、Red Hat Linux でのみ作成できます。Red Hat Linux はサブスクリプションベースのシステムです。Dockerfile-rhel で使用される microdnf などのパッケージマネージャを使用するには、Red Hat Linux システムに登録する必要があります。Rhel の docker build コマンドを実行する前に、次のタスクを実行します。

  1. Red Hat Linux 7 を使用します(Rhel VM Box、Rhel EC2 インスタンスなど)

  2. Red Hat Linux システムに登録するには、コマンドプロンプトから次のように入力します。

    $ subscription-manager register --username=<your-username> --password=<your-password>
    CODE
  3. プール ID を取得するには、次のように入力します。

    $ subscription-manager list --available
    CODE
  4. ステップ 3 でプール ID を追加するには、次のように入力します。

    $ subscription-manager attach --pool=<pool-id>
    CODE
  5. リポジトリを有効にするには、次のように入力します。

    $ subscription-manager repos --enable=rhel-7-server-rpms
    $ subscription-manager repos --enable=rhel-7-server-extras-rpms
    $ subscription-manager repos --enable=rhel-7-server-optional-rpms
    CODE
  6. Rhel マシンに Docker をインストールするには、次のように入力します。

    $ yum install docker device-mapper-libs device-mapper-event-lib
    CODE
  7. Docker サービスを開始するには、次のように入力します。

    $ systemctl start docker.service
    $ systemctl enable docker.service
    CODE
  8. Docker を使用して Rhel ベースのクラスタ エージェント イメージを作成するには、次のように入力します。

    $ docker build -t docker.io/<organization>/cluster-agent:<Agent-Version> -f Dockerfile-rhel
    CODE

    詳細については、Red Hat の Web サイトの「Using the docker command and service」を参照してください。


また、これらの手順は、Red Hat 公式 Web サイトの「Using the docker command and service」にもあります。

上記の手順を実行できない場合は、「事前構築済みのクラスタ エージェント イメージの使用」で述べた事前構築済みの Rhel ベースのクラスタ エージェント イメージを使用できます。この事前構築オプションでは、インストール済みの Docker と Red Hat ログイン情報が必要です。事前構築済みのイメージは、任意のオペレーティングシステムで実行できます。Red Hat ログイン情報を取得するには、Red Hat ポータルでアカウントを作成します

  1. ディレクトリを docker に変更します。

    $ cd docker
    CODE
  2. 次の構文を使用して docker イメージを構築し、タグを付けます。

    $ docker build -t <registryname>/<accountname>/cluster-agent:<Agent-version> --build-arg version=<alpine-version> .
    CODE
    $ docker build -t <registryname>/<accountname>/cluster-agent:<Agent-version> -f Dockerfile-rhel .
    CODE

    特定の Alpine イメージバージョンを使用する場合は、--build-arg version=<alpine-version> を使用してバージョンを設定できます。

    イメージバージョンを指定しない場合、build コマンドは最新の Alpine イメージバージョンを自動的に取得します。


    たとえば、アカウント名 johndoe: の Docker Hub レジストリで、Alpine バージョン 3.14.0 を使用してイメージバージョン 21.5.0 をビルドし、タグ付けするには、次のようにします

    $ docker build -t docker.io/johndoe/cluster-agent:21.5.0 --build-arg version=3.14.0 .
    CODE
    $ docker build -t docker.io/johndoe/cluster-agent:21.5.0 -f Dockerfile-rhel .
    CODE
  3. ビルドが成功したら、このイメージがローカル Docker リポジトリに表示されていることを確認します。
    出力例:

    Sending build context to Docker daemon 16.43 MB
    Step 1/11 : FROM alpine:3.14.0
     --> f70734b6a266
    Step 2/11 : RUN apk --update add --no-cache unzip ca-certificates && update-ca-certificates
     --> Running in 8934bf7ceff4
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.14/main/x86_64/APKINDEX.tar.gz
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.14/community/x86_64/APKINDEX.tar.gz
    (1/2) Installing ca-certificates (20191127-r2)
    (2/2) Installing unzip (6.0-r6)
    Executing busybox-1.31.1-r9.trigger
    Executing ca-certificates-20191127-r2.trigger
    OK: 7 MiB in 16 packages
    WARNING: ca-certificates.crt does not contain exactly one certificate or CRL: skipping
     --> c4f323715731
    Removing intermediate container 8934bf7ceff4
    Step 3/11 : ENV CLUSTER_AGENT_HOME /opt/appdynamics/cluster-agent/
     --> Running in 6a969744fb9b
     --> b0391f9c5f8d
    Removing intermediate container 6a969744fb9b
    Step 4/11 : ADD cluster-agent.zip /tmp/cluster-agent.zip
     --> f79263dfb9e5
    Removing intermediate container 6e12402d1ab4
    Step 5/11 : RUN addgroup -S -g 1001 appdynamics &&     adduser -S -s /bin/sh -G appdynamics -u 1001 appdynamics &&     mkdir -p ${CLUSTER_AGENT_HOME} &&     unzip -oq /tmp/cluster-agent.zip -d ${CLUSTER_AGENT_HOME} &&     rm /tmp/cluster-agent.zip &&     rm -rf /opt/appdynamics/cluster-agent/config/agent-monitoring.yml &&     rm -rf /opt/appdynamics/cluster-agent/config/instrumentation.yml &&     mkdir /opt/appdynamics/cluster-agent/config/agent-monitoring &&     touch /opt/appdynamics/cluster-agent/config/agent-monitoring/agent-monitoring.yml &&     ln -s /opt/appdynamics/cluster-agent/config/agent-monitoring/agent-monitoring.yml /opt/appdynamics/cluster-agent/config/agent-monitoring.yml &&     mkdir /opt/appdynamics/cluster-agent/config/instrumentation &&     touch /opt/appdynamics/cluster-agent/config/instrumentation/instrumentation.yml &&     ln -s /opt/appdynamics/cluster-agent/config/instrumentation/instrumentation.yml /opt/appdynamics/cluster-agent/config/instrumentation.yml
     --> Running in 00eb188bb320
     --> 10fad1e38294
    Removing intermediate container 00eb188bb320
    Step 6/11 : ADD start-appdynamics ${CLUSTER_AGENT_HOME}
     --> 07abbd20ea79
    Removing intermediate container 668a1f36a8ae
    Step 7/11 : RUN mkdir -p ${CLUSTER_AGENT_HOME}/logs && chmod 774 ${CLUSTER_AGENT_HOME}/logs &&     chmod 744 ${CLUSTER_AGENT_HOME}/start-appdynamics &&     chown -R appdynamics:appdynamics /opt/appdynamics
     --> Running in d6c1327eb50c
     --> 8ff4b999365e
    Removing intermediate container d6c1327eb50c
    Step 8/11 : USER 1001
     --> Running in a6f7a43b3f2e
     --> 33eef78218d9
    Removing intermediate container a6f7a43b3f2e
    Step 9/11 : WORKDIR ${CLUSTER_AGENT_HOME}
     --> dae7480d00e2
    Removing intermediate container bb102f148e76
    Step 10/11 : ENTRYPOINT /bin/sh
     --> Running in 3b2cc9d45abe
     --> 46e4d0f089dd
    Removing intermediate container 3b2cc9d45abe
    Step 11/11 : CMD -c ./start-appdynamics
     --> Running in 101fa3df7c13
     --> bb507184ef54
    Removing intermediate container 101fa3df7c13
    Successfully built bb507184ef54
    TEXT
    Sending build context to Docker daemon 17.77 MB
    Step 1/15 : FROM registry.access.redhat.com/rhel7-minimal
     --> 5391d6975c2a
    Step 2/15 : MAINTAINER AppDynamics
     --> Running in 612100a3778f
     --> 8b285fe8d611
    Removing intermediate container 612100a3778f
    Step 3/15 : LABEL name "AppDynamics ClusterAgent" vendor "AppDynamics" version "20.5.0" release "1" url "https://www.appdynamics.com" summary "AppDynamics monitoring solution for applications deployed to Kubernetes clusters" description "The ClusterAgent monitors state of Kubernetes resources and derives metrics to provide visibility into common application impacting issues."
     --> Running in d66fd4a94dd5
     --> 4b4d098ebe61
    Removing intermediate container d66fd4a94dd5
    Step 4/15 : RUN microdnf --enablerepo=rhel-7-server-rpms install unzip shadow-utils  --nodocs &&  microdnf clean all
     --> Running in 329e88ed3384
    Downloading metadata...
    Transaction: 4 packages
    ustr-1.0.4-16.el7.x86_64 (rhel-7-server-rpms)
    libsemanage-2.5-14.el7.x86_64 (rhel-7-server-rpms)
    shadow-utils-2:4.6-5.el7.x86_64 (rhel-7-server-rpms)
    unzip-6.0-21.el7.x86_64 (rhel-7-server-rpms)
    Downloading packages...
    Running transaction test...
    Installing: ustr;1.0.4-16.el7;x86_64;rhel-7-server-rpms
    Installing: libsemanage;2.5-14.el7;x86_64;rhel-7-server-rpms
    Installing: shadow-utils;2:4.6-5.el7;x86_64;rhel-7-server-rpms
    Installing: unzip;6.0-21.el7;x86_64;rhel-7-server-rpms
    Complete.
    Complete.
     --> dede0f99b5d6
    Removing intermediate container 329e88ed3384
    Step 5/15 : ENV CLUSTER_AGENT_HOME /opt/appdynamics/cluster-agent/
     --> Running in 063fabf2f4d5
     --> b95300fdcc91
    Removing intermediate container 063fabf2f4d5
    Step 6/15 : ADD cluster-agent.zip /tmp/cluster-agent.zip
     --> f06e49e5bb58
    Removing intermediate container 91bb6dff87c3
    Step 7/15 : ADD LICENSE /licenses/
     --> f80b38db44e5
    Removing intermediate container 3846a38f6304
    Step 8/15 : RUN groupadd appdynamics &&     useradd appdynamics -g appdynamics &&     mkdir -p ${CLUSTER_AGENT_HOME} &&     unzip -oq /tmp/cluster-agent.zip -d ${CLUSTER_AGENT_HOME} &&     rm /tmp/cluster-agent.zip &&     rm -rf /opt/appdynamics/cluster-agent/config/agent-monitoring.yml &&     rm -rf /opt/appdynamics/cluster-agent/config/instrumentation.yml &&     mkdir /opt/appdynamics/cluster-agent/config/agent-monitoring &&     touch /opt/appdynamics/cluster-agent/config/agent-monitoring/agent-monitoring.yml &&     ln -s /opt/appdynamics/cluster-agent/config/agent-monitoring/agent-monitoring.yml /opt/appdynamics/cluster-agent/config/agent-monitoring.yml &&     mkdir /opt/appdynamics/cluster-agent/config/instrumentation &&     touch /opt/appdynamics/cluster-agent/config/instrumentation/instrumentation.yml &&     ln -s /opt/appdynamics/cluster-agent/config/instrumentation/instrumentation.yml /opt/appdynamics/cluster-agent/config/instrumentation.yml
     --> Running in d472fb9368a5
     --> 1e4176c3212a
    Removing intermediate container d472fb9368a5
    Step 9/15 : ADD start-appdynamics ${CLUSTER_AGENT_HOME}
     --> f0e50dc75e0b
    Removing intermediate container 7ac6a2711b39
    Step 10/15 : RUN mkdir -p ${CLUSTER_AGENT_HOME}/logs && chmod 774 ${CLUSTER_AGENT_HOME}/logs &&     chmod 744 ${CLUSTER_AGENT_HOME}/start-appdynamics &&     chown -R appdynamics:appdynamics /opt/appdynamics
     --> Running in 3c253fd191e4
     --> 04c464867ebb
    Removing intermediate container 3c253fd191e4
    Step 11/15 : RUN chgrp -R 0 /opt/appdynamics && chmod -R g+w /opt/appdynamics
     --> Running in ca275e7e8bbc
     --> aa548b36d11d
    Removing intermediate container ca275e7e8bbc
    Step 12/15 : USER appdynamics
     --> Running in 46c3b4cd2e0f
     --> 204de163b46d
    Removing intermediate container 46c3b4cd2e0f
    Step 13/15 : WORKDIR ${CLUSTER_AGENT_HOME}
     --> 0245415003ff
    Removing intermediate container 2924e7ea1503
    Step 14/15 : ENTRYPOINT /bin/sh
     --> Running in a72f909f7abd
     --> 94653675d06b
    Removing intermediate container a72f909f7abd
    Step 15/15 : CMD -c ./start-appdynamics
     --> Running in 33daebaa48cb
     --> 819441b5a912
    Removing intermediate container 33daebaa48cb
    Successfully built 819441b5a912
    TEXT
  4. 次のようにしてイメージをプッシュします。

    $ docker push <registryname>/<accountname>/cluster-agent:<Agent-version>
    BASH

    たとえば、アカウント名 Johndoe の Docker Hub レジストリにイメージバージョン 21.5.0 をプッシュします:

    $ docker push docker.io/johndoe/cluster-agent:21.5.0
    BASH

事前構築済みのクラスタ エージェント イメージの使用

また、事前構築済みの Alpine ベースのクラスタエージェントまたは Rhel ベースのクラスタエージェントを内部レジストリに使用することもできます。

Alpine クラスタ エージェント イメージ

AppDynamics Docker Hub アカウントから事前構築された Alpine ベースのクラスタ エージェント イメージを使用できます。

  1. Docker Hub アカウントにログインします。

    $ docker login docker.io -u <your-username> -p <your-password>
    CODE
  2. 次のようにして、イメージをプルします。

    $ docker pull docker.io/appdynamics/cluster-agent:<Agent-version>
    CODE

    たとえば、Alpine ベースのクラスタ エージェント イメージ バージョン 21.5.0 をプルするには、次の手順を実行します。

    $ docker pull docker.io/appdynamics/cluster-agent:21.5.0
    CODE

このイメージを別のレジストリまたはアカウントにプッシュするには、次の手順を実行します。

  1. イメージの名前を変更します。

    $ docker tag docker.io/appdynamics/cluster-agent:<Agent-version> <registryname>/<accountname>/cluster-agent:<Agent-version>
    CODE

    次に例を示します。

    $ docker tag docker.io/appdynamics/cluster-agent:21.5.0 docker.io/johndoe/cluster-agent:21.5.0
    CODE
  2. 次のようにしてイメージをプッシュします。

    $ docker push <registryname>/<accountname>/cluster-agent:<Agent-version>
    CODE

    たとえば、アカウント名 Johndoe の Docker Hub レジストリにイメージバージョン 21.5.0 をプッシュするには、次のようにします。

    $ docker push docker.io/johndoe/cluster-agent:21.5.0
    CODE

Rhel クラスタ エージェント イメージ

または、AppDynamics Redhat Container Registry アカウントから事前構築された Rhel ベースのクラスタ エージェント イメージを使用することもできます。

  1. カスタマーポータルのログイン情報を使用して Red Hat Registry にログインします。

    $ docker login registry.connect.redhat.com -u <your-username> -p <your-password>
    CODE
  2. 次のようにして、イメージをプルします。

    $ docker pull registry.connect.redhat.com/appdynamics/cluster-agent:<Agent-version>
    CODE

    たとえば、Rhel ベースのクラスタ エージェント バージョン 21.5.0 をプルするには、次の手順を実行します。

    $ docker pull registry.connect.redhat.com/appdynamics/cluster-agent:21.5.0
    CODE

これでクラスタ エージェント イメージを使用できます。

このイメージを別のレジストリまたはアカウントにプッシュするには、次の手順を実行します。

  1. イメージの名前を変更します。

    $ docker tag registry.connect.redhat.com/appdynamics/cluster-agent:<Agent-version> <registryname>/<accountname>/cluster-agent:<Agent-version>
    CODE

    次に例を示します。

    $ docker tag registry.connect.redhat.com/appdynamics/cluster-agent:21.5.0 scan.connect.redhat.com/johndoe/cluster-agent:21.5.0
    CODE
  2. 次のようにしてイメージをプッシュします。

    $ docker push <registryname>/<accountname>/cluster-agent:<Agent-version>
    CODE

    たとえば、アカウント名 johndoe の Redhat Registry にイメージバージョン 21.5.0 をプッシュするには、次の手順を実行します。

    $ docker push scan.connect.redhat.com/johndoe/cluster-agent:21.5.0
    CODE

クラスタエージェントの YAML 仕様でのイメージの設定

cluster-agent.yaml でイメージを参照してください。spec:

apiVersion: appdynamics.com/v1alpha1
kind: Clusteragent
metadata:
  name: k8s-cluster-agent
  namespace: appdynamics
spec:
  controllerUrl: "http://<account>.saas.appdynamics.com"
  account: "<account-name>"
  appName: "Cluster1"
  image: <registryname>/<username>/cluster-agent:<Agent-version>
CODE

詳細については、AppDynamics サポートにお問い合わせください。