#!/bin/bash # 为 k3s 配置国内镜像加速,并预导入 pause / argocd 相关镜像 set -euo pipefail export KUBECONFIG=/etc/rancher/k3s/k3s.yaml mkdir -p /etc/rancher/k3s cat >/etc/rancher/k3s/registries.yaml <<'EOF' mirrors: docker.io: endpoint: - "https://docker.m.daocloud.io" quay.io: endpoint: - "https://quay.m.daocloud.io" ghcr.io: endpoint: - "https://ghcr.m.daocloud.io" registry.k8s.io: endpoint: - "https://k8s.m.daocloud.io" EOF systemctl restart k3s sleep 8 k3s kubectl get nodes # 用 docker 经 daocloud 拉 pause,再导入 containerd(双保险) docker pull docker.m.daocloud.io/rancher/mirrored-pause:3.10.2 || true docker tag docker.m.daocloud.io/rancher/mirrored-pause:3.10.2 rancher/mirrored-pause:3.10.2 || true docker save rancher/mirrored-pause:3.10.2 | k3s ctr images import - || true # Argo CD 主镜像(v2.12.3) for img in \ quay.io/argoproj/argocd:v2.12.3 \ ghcr.io/dexidp/dex:v2.38.0 \ public.ecr.aws/docker/library/redis:7.0.15-alpine do echo "try pull $img" done # 从 daocloud 拉 argocd docker pull docker.m.daocloud.io/argoproj/argocd:v2.12.3 2>/dev/null \ || docker pull quay.m.daocloud.io/argoproj/argocd:v2.12.3 2>/dev/null \ || true if docker image inspect quay.m.daocloud.io/argoproj/argocd:v2.12.3 >/dev/null 2>&1; then docker tag quay.m.daocloud.io/argoproj/argocd:v2.12.3 quay.io/argoproj/argocd:v2.12.3 elif docker image inspect docker.m.daocloud.io/argoproj/argocd:v2.12.3 >/dev/null 2>&1; then docker tag docker.m.daocloud.io/argoproj/argocd:v2.12.3 quay.io/argoproj/argocd:v2.12.3 fi docker save quay.io/argoproj/argocd:v2.12.3 2>/dev/null | k3s ctr images import - || true # redis / dex docker pull docker.m.daocloud.io/library/redis:7.0.15-alpine || true docker tag docker.m.daocloud.io/library/redis:7.0.15-alpine public.ecr.aws/docker/library/redis:7.0.15-alpine 2>/dev/null || \ docker tag docker.m.daocloud.io/library/redis:7.0.15-alpine redis:7.0.15-alpine || true docker save public.ecr.aws/docker/library/redis:7.0.15-alpine 2>/dev/null | k3s ctr images import - || \ docker save redis:7.0.15-alpine 2>/dev/null | k3s ctr images import - || true docker pull docker.m.daocloud.io/dexidp/dex:v2.38.0 || docker pull ghcr.m.daocloud.io/dexidp/dex:v2.38.0 || true docker tag docker.m.daocloud.io/dexidp/dex:v2.38.0 ghcr.io/dexidp/dex:v2.38.0 2>/dev/null || \ docker tag ghcr.m.daocloud.io/dexidp/dex:v2.38.0 ghcr.io/dexidp/dex:v2.38.0 2>/dev/null || true docker save ghcr.io/dexidp/dex:v2.38.0 2>/dev/null | k3s ctr images import - || true # 触发重建 k3s kubectl -n argocd delete pods --all --force --grace-period=0 2>/dev/null || true sleep 5 k3s kubectl -n argocd get pods echo DONE_MIRROR