O que é escopo?
Skepeo é uma ferramenta de gerenciamento de imagens de contêiner de código aberto, relativamente geral e suportada por vários armazéns de imagens.
instalar o skopeo
Consulte o guia de instalação oficial .
A exportação que espelha a configuração atual do leme depende de
$ helm template -n monitoring -f kube-prometheus-stack.yaml ./kube-prometheus-stack | grep "image:" | awk -F 'image:' '{print $2}' | awk '{$1=$1;print}' | sed -e 's/^"//' -e 's/"$//' > images.txt
$ cat images.txt
quay.io/prometheus/node-exporter:v1.3.1
quay.io/kiwigrid/k8s-sidecar:1.19.2
quay.io/kiwigrid/k8s-sidecar:1.19.2
grafana/grafana:9.0.2
registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.5.0
quay.io/prometheus-operator/prometheus-operator:v0.57.0
quay.io/prometheus/alertmanager:v0.24.0
quay.io/prometheus/prometheus:v2.36.1
bats/bats:v1.4.1
k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1
k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1
- Use o modelo helm para renderizar o yaml, use o script para exportar todas as imagens de contêiner dependentes e registrá-las
images.txt
. - Você pode verificar
images.txt
quais não precisam ser sincronizados e excluí-los.
Preparar script de sincronização
Prepare o script de sincronização ( sync.sh
):
#! /bin/bash
DST_IMAGE_REPO="registry.imroc.cc/prometheus"
cat images.txt | while read line
do
while :
do
skopeo sync --src=docker --dest=docker $line $DST_IMAGE_REPO
if [ "$?" == "0" ]; then
break
fi
done
done
- Modifique-o
DST_IMAGE_REPO
para o endereço e caminho do warehouse de destino que você deseja sincronizarimages.txt
e as imagens espelhadas nele serão sincronizadas com esse caminho do warehouse.
Dê permissão de execução ao script:
chmod +x sync.sh
Faça login no armazém
Ao sincronizar o espelhamento, independentemente da origem e do destino, se envolver espelhamento privado, você precisa primeiro fazer login, caso contrário a sincronização reportará um erro.
O método de login é muito simples, pois da docker login
mesma forma, especifique o endereço do armazém espelho para efetuar login:
skopeo login registry.imroc.cc
Em seguida, digite o nome de usuário e a senha.
realizar sincronização
No final da execução ./sync.sh
, todas as imagens podem ser sincronizadas com o warehouse de destino com um clique. Se falhar, continuará tentando até obter sucesso.
Perguntas frequentes
Por que não sincronizar em lote com os arquivos de configuração do skopeo?
Como a configuração é relativamente complicada e complicada, é melhor usar um texto de lista diretamente, cada linha representa um espelho, e ler cada linha por meio de um script para sincronizar separadamente, o que é mais simples.