This page describes how to build a custom AppDynamics Operator container image or use the pre-built images and store it in an internal registry.

This procedure is necessary when you:

  • Require building custom AppDynamics Operator container image
  • Require using the pre-built AppDynamics Operator Image on DockerHub or RedHat Registry, and store it in the internal registry.

Otherwise, by default Appdynamics Operator pod can directly pull and use the latest pre-built AppDynamics Operator Container Images on the AppDynamics DockerHub repository or AppDynamics RedHat registry.

Build the Custom AppDynamics Operator Image

The download packages from the AppDynamics Download Portal include files you need to build and deploy the AppDynamics Operator container image. 

Depending on the base Image that was used to build the AppDynamics Operator image, there are two package types available on the portal:

  • Alpine Linux-based 
  • Rhel Linux-based (recommended for Openshift cluster only)

The directory structure of the download packages for the Alpine and Rhel Linux are:

cluster-agent 
├── cluster-agent-operator.yaml 
├── appdynamics-operator-alpine-linux-amd64-21.12.0-88
	├── bin 
		├── appdynamics-operator
	├── Dockerfile
	├── LICENSE 
	└── scripts
		├── ensure-user.sh
		├── start-operator.sh
├── 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
└── helm-charts
	├── Chart.yaml
    ├── README.md
    ├── crds
    ├── templates
    └── values.yaml
TEXT
cluster-agent 
├── cluster-agent-operator.yaml 
├── appdynamics-operator-rhel-linux-amd64-21.12.0-88
	├── bin 
		├── appdynamics-operator
	├── Dockerfile-rhel
	├── LICENSE 
	└── scripts
		├── ensure-user.sh
		├── start-operator.sh
├── 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 
└── helm-charts
	├── Chart.yaml
    ├── README.md
    ├── crds
    ├── templates
    └── values.yaml
TEXT

Build the Custom AppDynamics Operator Image

  1. Change the directory to the Operator directory:

    $ cd appdynamics-operator-alpine-linux-amd64-21.12.0-88/
    CODE
  2. Build and tag a docker image using this syntax:

    $ docker build -t <registryname>/<accountname>/cluster-agent-operator:<Operator_Version> .
    CODE
    $ docker build -t <registryname>/<accountname>/cluster-agent-operator:<Operator_Version> -f Dockerfile-rhel .
    CODE

    For example, to build and tag the image version 21.12.0 using the latest alpine version on Docker Hub registry for the account name johndoe:

    $ docker build -t docker.io/johndoe/cluster-agent-operator:21.12.0 .
    CODE
    $ docker build -t docker.io/johndoe/cluster-agent-operator:21.12.0 -f Dockerfile-rhel .
    CODE
  3.  Push the image:

    $ docker push <registryname>/<accountname>/cluster-agent-operator:<Operator_Version>
    BASH

    For example, pushing the image version 21.12.0 to Docker Hub registry for the account name Johndoe:

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

Use Pre-Built AppDynamics Operator Image

You can also use pre-built Alpine-based or Rhel-based AppDynamics Operator images to an internal registry.

Alpine AppDynamics Operator Image

You can use the pre-built Alpine-based AppDynamics Operator image from the AppDynamics DockerHub account.

  1. Log in to your Docker Hub account:

    $ docker login docker.io -u <your-username> -p <your-password>
    CODE
  2. Pull the image:

    $ docker pull docker.io/appdynamics/cluster-agent-operator:<Operator_Version>
    CODE

    For example, to pull the Alpine-based AppDynamics Operator image version 21.12.0:

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

To push this image to the internal registry or accounts:

  1. Rename the image:

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

    For example:

    $ docker tag docker.io/appdynamics/cluster-agent-operator:21.12.0 docker.io/johndoe/cluster-agent-operator:21.12.0
    CODE
  2. Push the image: 

    $ docker push <registryname>/<accountname>/cluster-agent-operator:<Operator_Version>
    CODE

    For example, to push the image version 21.12.0 to the Docker Hub registry for the account name Johndoe:

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

Rhel AppDynamics Operator Image

Alternatively, you can use the pre-built Rhel-based AppDynamics Operator Image from the Appdynamics Redhat Container Registry account.

  1. Log in to Red Hat Registry using your Customer Portal credentials:

    $ docker login registry.connect.redhat.com -u <your-username> -p <your-password>
    CODE
  2. Pull the image:

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

    For example, to pull the Rhel-based AppDynamics Operator version 21.12.0:

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

You can now use the AppDynamics Operator image.

To push this image to the internal registry, or to other accounts:

  1. Rename the image:

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

    For example:

    $ docker tag registry.connect.redhat.com/appdynamics/cluster-agent-operator:21.12.0 scan.connect.redhat.com/johndoe/cluster-agent-operator:21.12.0
    CODE
  2. Push the image: 

    $ docker push <registryname>/<accountname>/cluster-agent-operator:<Operator_Version>
    CODE

    For example, to push the image version 21.12.0 to Redhat Registry for account name johndoe:

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

Configure the Image in AppDynamics Operator YAML Specification

Make sure to reference the image in the cluster-agent-operator.yaml or cluster-agent-operator-openshift.yaml spec:

apiVersion: cluster.appdynamics.com/v1alpha1
apiversion: apps/v1
kind: Deployment
metadata:
	name: appdynamics-operator
	namespace: appdynamics
spec:
	replicas: 1
	selector
		matchLabels:
			name: appdynamics-operator
	template:
		metadata:
			labels:
				name: appdynamics-operator
	spec:
		serviceAccountName: appdynamics-operator
		containers:
			- name: appdynamics-operator
			  image: <registryname>/<username>/cluster-agent-operator:<Operator_Version>
			  ports:
				-containerPort: 60000
				 name: metrics
				command:
					-appdynamics-operator
				imagePullPolicy: Always
				resources:
					limits:
						cpu: 200m
						memory: 128N1
					requests:
						cpu: 100m
						memory: 64M1
				env:
					-name: WATCH NAMESPACE
					 valueFrom:
						fieldRef:
							fieldPath: metadata, namespace
					-name: POD_NAME
					 valueFrom:
						fieldRef:
							fieldPath:-metadata.name
					-name: OPERATOR_NAME
					 value: appoynamics-operator
CODE

For assistance, contact AppDynamics Support.