Files
macos-tools/harbor/scripts/setup-proxy-cache.sh
gaoandClaude 8f47f4e9ea feat: 完善 DevOps 工具链配置和优化 Harbor 服务
- 更新 Gitea runner 配置,支持优化的 CI/CD 环境
- 完善 Harbor HTTPS 配置和远程访问支持
- 优化 Harbor 日志配置,改用 json-file 驱动
- 添加 Docker 构建加速和代理缓存脚本
- 新增完整的文档和使用指南
- 添加 AI 开发工具集成配置

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
2025-11-03 06:39:53 +08:00

102 lines
3.4 KiB
Bash
Executable File

#!/bin/bash
# Harbor 代理缓存项目设置脚本
# 自动创建常用的代理缓存项目
set -e
HARBOR_REGISTRY="192.168.1.83:8443"
HARBOR_USER="admin"
HARBOR_PASS="admin123"
echo "🚀 开始配置 Harbor 代理缓存项目..."
# 获取访问令牌
echo "🔐 获取访问令牌..."
AUTH_TOKEN=$(echo -n "${HARBOR_USER}:${HARBOR_PASS}" | base64)
# 定义代理项目配置(使用简单数组格式)
proxy_projects=(
"dockerhub-proxy|https://registry-1.docker.io|Docker Hub 镜像缓存"
"ghcr-proxy|https://ghcr.io|GitHub Container Registry"
"quay-proxy|https://quay.io|Quay.io 镜像缓存"
"k8s-proxy|https://registry.k8s.io|Kubernetes 官方镜像"
"gcr-proxy|https://gcr.io|Google Container Registry"
"k8s-gcr-proxy|https://k8s.gcr.io|Kubernetes Google 镜像"
)
# 创建项目函数
create_project() {
local project_name="$1"
local description="$2"
echo "📁 创建项目: $project_name"
# 检查项目是否已存在
http_status=$(curl -s -o /dev/null -w "%{http_code}" -k \
"https://${HARBOR_REGISTRY}/api/v2.0/projects/${project_name}" \
-H "Authorization: Basic ${AUTH_TOKEN}")
if [ "$http_status" = "200" ]; then
echo " ✅ 项目已存在,跳过创建"
return 0
fi
# 创建项目
response=$(curl -s -k -X POST \
"https://${HARBOR_REGISTRY}/api/v2.0/projects" \
-H "Authorization: Basic ${AUTH_TOKEN}" \
-H "Content-Type: application/json" \
-d "{
\"project_name\": \"${project_name}\",
\"metadata\": {
\"public\": \"true\",
\"enable_content_trust\": \"false\",
\"prevent_vul\": \"false\",
\"severity\": \"medium\",
\"auto_scan\": \"false\",
\"reuse_sys_cve_allowlist\": \"true\"
},
\"storage_quota\": -1,
\"crawl_enable\": false
}")
if echo "$response" | grep -q "project_name"; then
echo " ✅ 项目创建成功"
elif echo "$response" | grep -q "already exists"; then
echo " ✅ 项目已存在"
else
echo " ❌ 项目创建失败: $response"
return 1
fi
}
# 创建所有代理项目
for project_config in "${proxy_projects[@]}"; do
project_name=$(echo "$project_config" | cut -d'|' -f1)
upstream=$(echo "$project_config" | cut -d'|' -f2)
description=$(echo "$project_config" | cut -d'|' -f3)
create_project "$project_name" "$description"
done
echo -e "\n🎉 代理缓存项目配置完成!"
echo -e "\n📋 已创建的项目:"
for project_config in "${proxy_projects[@]}"; do
project_name=$(echo "$project_config" | cut -d'|' -f1)
upstream=$(echo "$project_config" | cut -d'|' -f2)
description=$(echo "$project_config" | cut -d'|' -f3)
echo " 📁 $project_name"
echo " 上游: $upstream"
echo " 说明: $description"
echo
done
echo "💡 使用示例:"
echo " Docker Hub 镜像: docker pull ${HARBOR_REGISTRY}/dockerhub-proxy/library/nginx:latest"
echo " GitHub 镜像: docker pull ${HARBOR_REGISTRY}/ghcr-proxy/owner/repo:tag"
echo " K8s 镜像: docker pull ${HARBOR_REGISTRY}/k8s-proxy/kube-apiserver:v1.28.0"
echo -e "\n⚠️ 下一步:"
echo " 1. 在 Harbor UI 中配置代理缓存的上游认证信息(避免限流)"
echo " 2. 设置镜像保留策略和垃圾回收计划"
echo " 3. 配置客户端使用代理缓存"