Aller au contenu

Recompile Prometheus-operator#

Note

This procedure was successfully used on 24/06/2020

Compilation#

Compile with the help of a golang docker container

First, you need some script in order to compile prometheus-operator inside a docker container (and don't install golang in a specific version on your laptop) :

cat > compile_prometheus-operator.sh
#! /bin/bash

UID_GID=$(stat -c "%u:%g" /data/prometheus-operator)
PATCHID=$1
[ -z "${PATCHID}" ] && exit 1

# Copy git repo in golang file hierarchy
mkdir -p /go/src/github.com/coreos/prometheus-operator
cd /data && cp -r prometheus-operator /go/src/github.com/coreos

VERSION=$(cat /go/src/github.com/coreos/prometheus-operator/VERSION | tr -d " \t\n\r")-"${PATCHID}"
cd /go/src/github.com/coreos/prometheus-operator \
    && make operator VERSION="${VERSION}" \
    && make prometheus-config-reloader VERSION="${VERSION}"

cp /go/src/github.com/coreos/prometheus-operator/operator /data/operator
cp /go/src/github.com/coreos/prometheus-operator/prometheus-config-reloader /data/prometheus-config-reloader
chown ${UID_GID} operator 
chown ${UID_GID} prometheus-config-reloader
git clone https://github.com/coreos/prometheus-operator.git
sed -i -e '/^.PHONY: operator/d' prometheus-operator/Makefile
sed -i -e '/^.PHONY: prometheus-config-reloader/d' prometheus-operator/Makefile

Edit or patch the code inside prometheus-operator directory.

Remember some PATCHID for below (example : git commitID of the patch).

Make new binaries

PATCHID=<some patch ID, for example : 20200624 or some commit ID of the patch>
docker run --rm -it -v $(pwd):/data golang:1.14 bash /data/compile_prometheus-operator.sh ${PATCHID}

Generate docker images#

REPOBASE=<example : docker-registry.infra-stg.caascad.com/monitoring>
PATCHID=<patch id, for example git commitID of the patch>
TAG=$(cd prometheus-operator && git rev-parse --short HEAD)-"${PATCHID}"

mv operator prometheus-operator
mv prometheus-config-reloader prometheus-operator

(cd prometheus-operator && make image REPO="${REPOBASE}/prometheus-operator" REPO_PROMETHEUS_CONFIG_RELOADER="${REPOBASE}/prometheus-config-reloader" TAG="${TAG}")

Push the image to the repository#

Push docker images to docker hub or any registry.

Note

This procedure needs that you own an account on hub.docker.com.

docker login
docker push "${REPOBASE}/prometheus-operator":"${TAG}"
docker push "${REPOBASE}/prometheus-config-reloader":"${TAG}"