feat(kong): add Kong API gateway initialization script
Configures routes for all microservices: - user-service: /api/v1/users, /api/v1/auth - payment-service: /api/v1/payments, /api/v1/subscriptions - knowledge-service: /api/v1/knowledge - conversation-service: /api/v1/conversations, /api/v1/messages - evolution-service: /api/v1/evolution Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
ec66d58e61
commit
572796f753
|
|
@ -0,0 +1,113 @@
|
|||
#!/bin/bash
|
||||
#===============================================================================
|
||||
# Kong API Gateway 初始化脚本
|
||||
# 配置所有微服务的路由
|
||||
#===============================================================================
|
||||
|
||||
KONG_ADMIN_URL="${KONG_ADMIN_URL:-http://localhost:8001}"
|
||||
|
||||
echo "Waiting for Kong to be ready..."
|
||||
until curl -s "$KONG_ADMIN_URL/status" > /dev/null 2>&1; do
|
||||
echo "Kong is not ready yet, waiting..."
|
||||
sleep 2
|
||||
done
|
||||
echo "Kong is ready!"
|
||||
|
||||
# 函数: 创建服务和路由
|
||||
create_service_and_route() {
|
||||
local service_name=$1
|
||||
local service_url=$2
|
||||
local route_name=$3
|
||||
shift 3
|
||||
local paths=("$@")
|
||||
|
||||
echo "Creating service: $service_name -> $service_url"
|
||||
|
||||
# 检查服务是否已存在
|
||||
if curl -s "$KONG_ADMIN_URL/services/$service_name" | grep -q '"id"'; then
|
||||
echo " Service $service_name already exists, updating..."
|
||||
curl -s -X PATCH "$KONG_ADMIN_URL/services/$service_name" \
|
||||
-d "url=$service_url" > /dev/null
|
||||
else
|
||||
curl -s -X POST "$KONG_ADMIN_URL/services" \
|
||||
-d "name=$service_name" \
|
||||
-d "url=$service_url" > /dev/null
|
||||
fi
|
||||
|
||||
echo "Creating route: $route_name"
|
||||
|
||||
# 构建路径参数
|
||||
local path_args=""
|
||||
for path in "${paths[@]}"; do
|
||||
path_args="$path_args -d paths[]=$path"
|
||||
done
|
||||
|
||||
# 检查路由是否已存在
|
||||
if curl -s "$KONG_ADMIN_URL/routes/$route_name" | grep -q '"id"'; then
|
||||
echo " Route $route_name already exists, updating..."
|
||||
curl -s -X PATCH "$KONG_ADMIN_URL/routes/$route_name" \
|
||||
$path_args \
|
||||
-d "strip_path=false" > /dev/null
|
||||
else
|
||||
curl -s -X POST "$KONG_ADMIN_URL/services/$service_name/routes" \
|
||||
-d "name=$route_name" \
|
||||
$path_args \
|
||||
-d "strip_path=false" > /dev/null
|
||||
fi
|
||||
|
||||
echo " Done!"
|
||||
}
|
||||
|
||||
#===============================================================================
|
||||
# 配置各服务路由
|
||||
#===============================================================================
|
||||
|
||||
# User Service - 用户认证和管理
|
||||
create_service_and_route \
|
||||
"user-service" \
|
||||
"http://user-service:3001" \
|
||||
"user-routes" \
|
||||
"/api/v1/users" "/api/v1/auth"
|
||||
|
||||
# Payment Service - 支付处理
|
||||
create_service_and_route \
|
||||
"payment-service" \
|
||||
"http://payment-service:3002" \
|
||||
"payment-routes" \
|
||||
"/api/v1/payments" "/api/v1/subscriptions"
|
||||
|
||||
# Knowledge Service - 知识库
|
||||
create_service_and_route \
|
||||
"knowledge-service" \
|
||||
"http://knowledge-service:3003" \
|
||||
"knowledge-routes" \
|
||||
"/api/v1/knowledge"
|
||||
|
||||
# Conversation Service - 对话服务
|
||||
create_service_and_route \
|
||||
"conversation-service" \
|
||||
"http://conversation-service:3004" \
|
||||
"conversation-routes" \
|
||||
"/api/v1/conversations" "/api/v1/messages"
|
||||
|
||||
# Evolution Service - 进化服务
|
||||
create_service_and_route \
|
||||
"evolution-service" \
|
||||
"http://evolution-service:3005" \
|
||||
"evolution-routes" \
|
||||
"/api/v1/evolution"
|
||||
|
||||
#===============================================================================
|
||||
# 显示配置结果
|
||||
#===============================================================================
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "Kong configuration completed!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "Services:"
|
||||
curl -s "$KONG_ADMIN_URL/services" | jq -r '.data[] | " - \(.name): \(.host):\(.port)"'
|
||||
echo ""
|
||||
echo "Routes:"
|
||||
curl -s "$KONG_ADMIN_URL/routes" | jq -r '.data[] | " - \(.name): \(.paths | join(", "))"'
|
||||
Loading…
Reference in New Issue