Download PDF
Download page クラスタ エージェント コンテナ イメージの作成.
クラスタ エージェント コンテナ イメージの作成
このページでは、クラスタエージェントのコンテナイメージを作成する方法、または事前作成されたイメージを内部レジストリに送信する方法について説明します。
この手順は、次の場合に必須です。
- 内部イメージポリシーを満たすために独自のイメージを構築する必要がある。あるいは、
- Docker Hub で事前に作成されたクラスタエージェントのイメージ、または Red Hat コンテナレジストリを内部コンテナレジストリに保存する必要がある。
「クラスタエージェントのインストール」を参照してください。
それ以外の場合は、cluster-agent.yaml
または values.yaml
Helm ファイルで Docker Hub および Red Hat コンテナレジストリの事前に作成されたクラスタエージェントのイメージを参照できます。この例では、Docker Hub にパブリッシュされた事前作成済みのクラスタ エージェント イメージ 20.12.1 を使用します。
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:20.12.1
カスタム クラスタ エージェント イメージの作成
AppDynamics ダウンロードポータルのダウンロードパッケージには、クラスタエージェントのコンテナイメージを作成および展開する必要があるファイルが含まれています。
クラスタエージェントのイメージを作成するために使用されるベースイメージに応じて、ポータルで使用できるパッケージには次の 2 つのタイプがあります。
- Alpine Linux ベースのベースイメージ
- Rhel Linux 7 ベースのベースイメージ
Alpine および Rhel Linux のダウンロードパッケージのディレクトリ構造は次のとおりです。
cluster-agent
├── cluster-agent-operator.yaml
├── cluster-agent-operator-1.14-or-less.yaml
├── cluster-agent-operator-openshift-1.14-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
cluster-agent
├── cluster-agent-operator.yaml
├── cluster-agent-operator-1.14-or-less.yaml
├── cluster-agent-operator-openshift-1.14-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
カスタム クラスタ エージェント イメージの作成
Rhel Linux 7 ベースのクラスタ エージェント イメージは、Red Hat Linux でのみ作成できます。Red Hat Linux はサブスクリプションベースのシステムです。Dockerfile-rhel
で使用される microdnf
などのパッケージマネージャを使用するには、Red Hat Linux システムに登録する必要があります。Rhel の docker build コマンドを実行する前に、次のタスクを実行します。
Red Hat Linux 7 を使用します(Rhel VM Box、Rhel EC2 インスタンスなど)
Red Hat Linux システムに登録するには、コマンドプロンプトから次のように入力します。
$ subscription-manager register --username=<your-username> --password=<your-password>
CODEプール ID を取得するには、次のように入力します。
$ subscription-manager list --available
CODEステップ 3 でプール ID を追加するには、次のように入力します。
$ subscription-manager attach --pool=<pool-id>
CODEリポジトリを有効にするには、次のように入力します。
$ 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
CODERhel マシンに Docker をインストールするには、次のように入力します。
$ yum install docker device-mapper-libs device-mapper-event-lib
CODEDocker サービスを開始するには、次のように入力します。
$ systemctl start docker.service $ systemctl enable docker.service
CODEDocker を使用して Rhel ベースのクラスタ エージェント イメージを作成するには、次のように入力します。
$ docker build -t docker.io/<organization>/cluster-agent:<Agent-Version> -f Dockerfile-rhel
CODE詳細については、Red Hat の Web サイトの「Using the docker command and service」を参照してください。
上記の手順を実行できない場合は、「事前構築済みのクラスタ エージェント イメージの使用」で述べた事前構築済みの Rhel ベースのクラスタ エージェント イメージを使用できます。この事前構築オプションでは、インストール済みの Docker と Red Hat ログイン情報が必要です。事前構築済みのイメージは、任意のオペレーティングシステムで実行できます。Red Hat ログイン情報を取得するには、Red Hat ポータルでアカウントを作成します。
ディレクトリを
docker
に変更します。$ cd docker
CODE次の構文を使用して
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.11.6 を使用してイメージバージョン 20.8.0 を構築し、タグ付けするには、次のようにします$ docker build -t docker.io/johndoe/cluster-agent:20.8.0 --build-arg version=3.11.6 .
CODE$ docker build -t docker.io/johndoe/cluster-agent:20.8.0 -f Dockerfile-rhel .
CODEビルドが成功したら、このイメージがローカル Docker リポジトリに表示されていることを確認します。
出力例:Sending build context to Docker daemon 16.43 MB Step 1/11 : FROM alpine:3.11.6 --> 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.11/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.11/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
TEXTSending 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次のようにしてイメージをプッシュします。
$ docker push <registryname>/<accountname>/cluster-agent:<Agent-version>
BASHたとえば、アカウント名 Johndoe の Docker Hub レジストリにイメージバージョン 20.8.0 をプッシュします
:
$ docker push docker.io/johndoe/cluster-agent:20.8.0
BASH
事前構築済みのクラスタ エージェント イメージの使用
また、事前構築済みの Alpine ベースのクラスタエージェントまたは Rhel ベースのクラスタエージェントを内部レジストリに使用することもできます。
Alpine クラスタ エージェント イメージ
AppDynamics Docker Hub アカウントから事前構築された Alpine ベースのクラスタ エージェント イメージを使用できます。
Docker Hub アカウントにログインします。
$ docker login docker.io -u <your-username> -p <your-password>
CODE次のようにして、イメージをプルします。
$ docker pull docker.io/appdynamics/cluster-agent:<Agent-version>
CODEたとえば、Alpine ベースのクラスタ エージェント イメージ バージョン 20.8.0 をプルするには、次の手順を実行します。
$ docker pull docker.io/appdynamics/cluster-agent:20.8.0
CODE
このイメージを別のレジストリまたはアカウントにプッシュするには、次の手順を実行します。
イメージの名前を変更します。
$ docker tag docker.io/appdynamics/cluster-agent:<Agent-version> <registryname>/<accountname>/cluster-agent:<Agent-version>
CODE次に例を示します。
$ docker tag docker.io/appdynamics/cluster-agent:20.8.0 docker.io/johndoe/cluster-agent:20.8.0
CODE次のようにしてイメージをプッシュします。
$ docker push <registryname>/<accountname>/cluster-agent:<Agent-version>
CODEたとえば、アカウント名 Johndoe の Docker Hub レジストリにイメージバージョン 20.8.0 をプッシュするには、次のようにします。
$ docker push docker.io/johndoe/cluster-agent:20.8.0
CODE
Rhel クラスタ エージェント イメージ
または、AppDynamics Redhat Container Registry アカウントから事前構築された Rhel ベースのクラスタ エージェント イメージを使用することもできます。
カスタマーポータルのログイン情報を使用して Red Hat Registry にログインします。
$ docker login registry.connect.redhat.com -u <your-username> -p <your-password>
CODE次のようにして、イメージをプルします。
$ docker pull registry.connect.redhat.com/appdynamics/cluster-agent:<Agent-version>
CODEたとえば、Rhel ベースのクラスタ エージェント バージョン 20.8.0 をプルするには、次の手順を実行します。
$ docker pull registry.connect.redhat.com/appdynamics/cluster-agent:20.8.0
CODE
これでクラスタ エージェント イメージを使用できます。
このイメージを別のレジストリまたはアカウントにプッシュするには、次の手順を実行します。
イメージの名前を変更します。
$ 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:20.8.0 scan.connect.redhat.com/johndoe/cluster-agent:20.8.0
CODE次のようにしてイメージをプッシュします。
$ docker push <registryname>/<accountname>/cluster-agent:<Agent-version>
CODEたとえば、アカウント名
johndoe
の Redhat Registry にイメージバージョン 20.8.0 をプッシュするには、次の手順を実行します。$ docker push scan.connect.redhat.com/johndoe/cluster-agent:20.8.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>
詳細については、AppDynamics サポートにお問い合わせください。