# Prometheus Operator for ARM platform The Prometheus Operator for Kubernetes provides easy monitoring definitions for Kubernetes services and deployment and management of Prometheus instances. This project aims on porting the [official manifests](https://github.com/coreos/prometheus-operator/tree/master/contrib/kube-prometheus) and images to the ARM platform. This have been tested on a ARM64 Kubernetes cluster deployed as [this article](medium.com/@carlosedp/building-an-arm-kubernetes-cluster-ef31032636f9). ## Changes to Kubeadm for Prometheus Operator According to the official deployment documentation [here](https://github.com/coreos/prometheus-operator/blob/master/contrib/kube-prometheus/docs/kube-prometheus-on-kubeadm.md), a couple of changes on the cluster are required: We need to expose the cadvisor that is installed and managed by the kubelet daemon and allow webhook token authentication. To do so, we do the following on **all the masters and nodes**: ```bash # Enable cadvisor port sudo sed -e "/cadvisor-port=0/d" -i /etc/systemd/system/kubelet.service.d/10-kubeadm.conf # Enable Webhook authorization sudo perl -pi -e "s/(?:--authentication-token-webhook=true )*--authorization-mode=Webhook/--authentication-token-webhook=true --authorization-mode=Webhook/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf sudo systemctl daemon-reload sudo systemctl restart kubelet ``` In case you already have a Kubernetes deployed with kubeadm, change the address kube-controller-manager and kube-scheduler listens **on master node** in addition to previous kubelet change: ```bash # Make kube-controller ad kube-scheduler listen on all addresses sudo sed -e "s/- --address=127.0.0.1/- --address=0.0.0.0/" -i /etc/kubernetes/manifests/kube-controller-manager.yaml sudo sed -e "s/- --address=127.0.0.1/- --address=0.0.0.0/" -i /etc/kubernetes/manifests/kube-scheduler.yaml ``` ## Images This project depends on the following images: **Alertmanager** **Blackbox_exporter** **Node_exporter** **Snmp_exporter** **Prometheus** * Source: https://github.com/carlosedp/prometheus-ARM * Autobuild: https://travis-ci.org/carlosedp/prometheus-ARM * Images: * https://hub.docker.com/r/carlosedp/prometheus/ * https://hub.docker.com/r/carlosedp/alertmanager/ * https://hub.docker.com/r/carlosedp/blackbox_exporter/ * https://hub.docker.com/r/carlosedp/node_exporter/ * https://hub.docker.com/r/carlosedp/snmp_exporter/ **ARM_exporter** * Source: https://github.com/carlosedp/docker-arm_exporter * Autobuild: https://travis-ci.org/carlosedp/docker-arm_exporter * Images: https://hub.docker.com/r/carlosedp/arm_exporter/ **Prometheus-operator** * Source: https://github.com/carlosedp/prometheus-operator * Autobuild: * Images: https://hub.docker.com/r/carlosedp/prometheus-operator **Grafana** * Source: https://github.com/carlosedp/grafana-ARM * Autobuild: https://travis-ci.org/carlosedp/grafana-ARM * Images: https://hub.docker.com/r/carlosedp/monitoring-grafana/ **Kube-state-metrics** * Source: https://github.com/kubernetes/kube-state-metrics * Autobuild: * Images: https://hub.docker.com/r/carlosedp/kube-state-metrics **Addon-resizer** * Source: * Autobuild: * Images: https://hub.docker.com/r/carlosedp/addon-resizer *Obs.* This image is a clone of [ARM64](https://console.cloud.google.com/gcr/images/google-containers/GLOBAL/addon-resizer-arm64) and [ARM](https://console.cloud.google.com/gcr/images/google-containers/GLOBAL/addon-resizer-arm64) with a manifest. It's cloned and generated by the `build_images.sh` script **configmap_reload** * Source: https://github.com/carlosedp/configmap-reload * Autobuild: https://travis-ci.org/carlosedp/configmap-reload * Images: https://hub.docker.com/r/carlosedp/configmap-reload **SMTP-server** Source: https://github.com/carlosedp/docker-smtp Autobuild: https://travis-ci.org/carlosedp/docker-smtp Images: https://hub.docker.com/r/carlosedp/docker-smtp