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:
30
sync-to-internal-registry.jsonnet
Normal file
30
sync-to-internal-registry.jsonnet
Normal file
@@ -0,0 +1,30 @@
|
||||
local kp = import 'kube-prometheus/kube-prometheus.libsonnet';
|
||||
local l = import 'kube-prometheus/lib/lib.libsonnet';
|
||||
local config = kp._config;
|
||||
|
||||
local makeImages(config) = [
|
||||
{
|
||||
name: config.imageRepos[image],
|
||||
tag: config.versions[image],
|
||||
}
|
||||
for image in std.objectFields(config.imageRepos)
|
||||
];
|
||||
|
||||
local upstreamImage(image) = '%s:%s' % [image.name, image.tag];
|
||||
local downstreamImage(registry, image) = '%s/%s:%s' % [registry, l.imageName(image.name), image.tag];
|
||||
|
||||
local pullPush(image, newRegistry) = [
|
||||
'docker pull %s' % upstreamImage(image),
|
||||
'docker tag %s %s' % [upstreamImage(image), downstreamImage(newRegistry, image)],
|
||||
'docker push %s' % downstreamImage(newRegistry, image),
|
||||
];
|
||||
|
||||
local images = makeImages(config);
|
||||
|
||||
local output(repository) = std.flattenArrays([
|
||||
pullPush(image, repository)
|
||||
for image in images
|
||||
]);
|
||||
|
||||
function(repository="my-registry.com/repository")
|
||||
std.join('\n', output(repository))
|
Reference in New Issue
Block a user