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}"