contrib/kube-prometheus: Add a script to sync images to an internal registry

Crazy at it sounds, some Kubernetes installations don't have access to Internet
and source all their images from an internal registry.

sync-to-internal-registry.jsonnet is a jsonnet snippet that helps with the task
of pushing upstream images used by the prometheus operator to an internal
registry by printing the right docker pull/tag/push commands.

$ jsonnet -J vendor -S --tla-str repository=internal-registry.com/organization sync-to-internal-registry.jsonnet
docker pull quay.io/coreos/addon-resizer:1.0
docker tag quay.io/coreos/addon-resizer:1.0 internal-registry.com/organization/addon-resizer:1.0
docker push internal-registry.com/organization/addon-resizer:1.0
docker pull quay.io/prometheus/alertmanager:v0.15.2
docker tag quay.io/prometheus/alertmanager:v0.15.2 internal-registry.com/organization/alertmanager:v0.15.2
docker push internal-registry.com/organization/alertmanager:v0.15.2
...
This commit is contained in:
Damien Lespiau
2018-10-01 17:06:16 +01:00
parent 8a4b01427f
commit 466cbe50b0
3 changed files with 52 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
// imageName extracts the image name from a fully qualified image string. eg.
// quay.io/coreos/addon-resizer -> addon-resizer
// grafana/grafana -> grafana
local imageName(image) =
local parts = std.split(image, '/');
local len = std.length(parts);
if len == 3 then
# registry.com/org/image
parts[2]
else if len == 2 then
# org/image
parts[1]
else if len == 1 then
# image, ie. busybox
parts[0]
else
error 'unknown image format: ' + image;
{
imageName:: imageName,
}

View File

@@ -0,0 +1 @@
(import 'image.libsonnet')