Skip to main content

Prometheus with Ambassador in AKS

This page shows how to create a Prometheus monitoring environment as part of an Azure Kubernetes Service (AKS) cluster.

For prerequisites, see the main guide.

Java SDK

AzureKubernetesService.builder()
.withId("aks-1")
.withDescription("Test AKS cluster")
.withRegion(EUROPE_WEST)
.withNodePool(AzureNodePool.builder()
.withName("linuxdynamic")
.withMachineType(STANDARD_B2S)
.build())
.withAPIGateway(CaaSAmbassador.builder()
.withId("ambassador")
.withHost("api.yourdomain.com")
.withHostOwnerEmail("email@yourdomain.com")
.withAcmeProviderAuthority("https://acme-v02.api.letsencrypt.org/directory")
.withTlsSecretName("env-tls-cert")
.build())
.withMonitoring(CaaSPrometheus.builder()
.withId("prometheus")
.withNamespace("monitoring")
.withApiGatewayUrl("api.yourdomain.com")
.build())
.build();

For more details, see the Prometheus with Ambassador in AKS sample on GitHub.

Pushing prerequisite images to Azure Container Registry

az login
resourceGroupId="<your resource group id>"
subscription="<your subscription id>"
az acr login --name ${resourceGroupId}acr

docker pull "quay.io/prometheus-operator/prometheus-operator:v0.53.1"
docker tag "quay.io/prometheus-operator/prometheus-operator:v0.53.1" "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/prometheus-operator:v0.53.1"
docker push "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/prometheus-operator:v0.53.1"

docker pull "quay.io/brancz/kube-rbac-proxy:v0.11.0"
docker tag "quay.io/brancz/kube-rbac-proxy:v0.11.0" "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/kube-rbac-proxy:v0.11.0"
docker push "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/kube-rbac-proxy:v0.11.0"

docker pull "quay.io/prometheus/blackbox-exporter:v0.19.0"
docker tag "quay.io/prometheus/blackbox-exporter:v0.19.0" "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/blackbox-exporter:v0.19.0"
docker push "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/blackbox-exporter:v0.19.0"

docker pull "jimmidyson/configmap-reload:v0.5.0"
docker tag "jimmidyson/configmap-reload:v0.5.0" "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/configmap-reload:v0.5.0"
docker push "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/configmap-reload:v0.5.0"

docker pull "grafana/grafana:8.5.0"
docker tag "grafana/grafana:8.5.0" "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/grafana:8.5.0"
docker push "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/grafana:8.5.0"

docker pull "k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.3.0"
docker tag "k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.3.0" "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/kube-state-metrics:v2.3.0"
docker push "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/kube-state-metrics:v2.3.0"

docker pull "willdockerhub/prometheus-adapter:v0.9.1"
docker tag "willdockerhub/prometheus-adapter:v0.9.1" "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/prometheus-adapter:v0.9.1"
docker push "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/prometheus-adapter:v0.9.1"

docker pull "quay.io/prometheus/prometheus:v2.35.0"
docker tag "quay.io/prometheus/prometheus:v2.35.0" "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/prometheus:v2.35.0"
docker push "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/prometheus:v2.35.0"

docker pull "quay.io/prometheus-operator/prometheus-config-reloader:v0.53.1"
docker tag "quay.io/prometheus-operator/prometheus-config-reloader:v0.53.1" "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/prometheus-config-reloader:v0.53.1"
docker push "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/prometheus-config-reloader:v0.53.1"

docker pull "prom/node-exporter:v1.3.1"
docker tag "prom/node-exporter:v1.3.1" "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/node-exporter:v1.3.1"
docker push "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/node-exporter:v1.3.1"

docker pull "prom/alertmanager:v0.24.0"
docker tag "prom/alertmanager:v0.24.0" "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/alertmanager:v0.24.0"
docker push "${resourceGroupId}acr.azurecr.io/${subscription}/monitoring/alertmanager:v0.24.0"