Use o skopeo para sincronizar espelhos de dependência do gráfico do Helm em lotes

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 sincronizar images.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.

Acho que você gosta

Origin blog.csdn.net/m0_37723088/article/details/132595188
Recomendado
Clasificación